Skip to main content

Crate coven_storage

Crate coven_storage 

Source
Expand description

The cloud home and what Coven keeps in it.

A CloudHome is raw bytes in and out of one provider — S3 and its compatibles, CloudKit, and the OAuth providers (Google Drive, Dropbox, OneDrive). Above it, CloudSyncConnection applies the key layout and the at-rest protection, and exposes the exact-slot protocol-object and blob operations replication runs against. Beside them sit the join and restore codes that carry a home’s coordinates between devices, and the OAuth authorization flow that obtains a provider session in the first place.

Re-exports§

pub use cloud::cloudkit::CloudKitAcceptedShareRecord;
pub use cloud::cloudkit::CloudKitAtomicCreateBatch;
pub use cloud::cloudkit::CloudKitOps;
pub use cloud::cloudkit::CloudKitProviderIdentity;
pub use cloud::cloudkit::CloudKitRecordCreate;
pub use cloud::cloudkit::CloudKitRecordVersion;
pub use cloud::cloudkit::CloudKitScope;
pub use cloud::cloudkit::CloudKitShare;
pub use cloud::cloudkit::CloudKitShareAcceptance;
pub use cloud::cloudkit::CloudKitSharePermission;
pub use cloud::s3::S3CloudHome;
pub use cloud::test_utils::InMemoryCloudHome;
pub use cloud::no_progress;
pub use cloud::write_cloud_object_stream;
pub use cloud::BlobBody;
pub use cloud::BoxPartSink;
pub use cloud::CloudAccessOutcome;
pub use cloud::CloudAccessState;
pub use cloud::CloudFileReadError;
pub use cloud::CloudHome;
pub use cloud::CloudHomeError;
pub use cloud::CloudHomeJoinInfo;
pub use cloud::CloudObjectStream;
pub use cloud::CloudVersionedObject;
pub use cloud::ConditionalWriteOutcome;
pub use cloud::DownloadProgress;
pub use cloud::ExactCloudHome;
pub use cloud::ExactCreateOutcome;
pub use cloud::ExactSlotStorage;
pub use cloud::ExactUpload;
pub use cloud::ExactUploadSource;
pub use cloud::PartSink;
pub use cloud::UploadControl;
pub use cloud::UploadProgress;

Modules§

cloud
CloudHome: low-level cloud storage abstraction.
oauth
OAuth 2.0 helper for consumer cloud provider authentication.
provider_probe
Cross-principal provider probe execution: reserving, creating, and settling exact probe slots on the primary and peer provider storage, over the probe transcript model in coven_protocol::provider.

Structs§

AdoptedCloudKeyRotation
BlobChunking
The two numbers that decide what a blob transfer costs. They are independent on purpose: the chunk is fixed when a blob is sealed and bounds how little a read can fetch, so it sets how long a seek waits for its first byte; the window is a live reader-side choice about how much one request carries, so it sets how many round-trips a long read costs. Neither can be derived from the other, and changing the window never touches a stored blob.
BlobRangeReader
Serves plaintext ranges of one stored blob by fetching only the sealed chunks that cover them. A read costs the chunks it touches and nothing else — never the whole object, however many ranges the stream asks for.
CloudKeyringFacts
CloudKeyringMerge
CloudObjectVersion
Opaque provider revision for an exact mutable object.
CloudSyncConnection
CloudSyncObjectStorage that delegates raw I/O to a CloudHome and handles the path layout and the at-rest protection (its CloudCipher).
PendingRotation

Enums§

BlobPathScheme
How a cloud home names its blob objects. Paired with the at-rest CloudCipher by the home’s HomeStorage: an opaque home is Hashed + encrypted, a browsable home is Plain + plaintext.
CloudCipher
How a cloud home protects its objects at rest. An Encrypted home seals every object under the store key (the default); a Plaintext home stores objects in the clear so the bucket is browsable, and drops the .enc suffix.
ListedBlobTombstone
RotationStateError

Constants§

BLOB_TOMBSTONE_PREFIX

Traits§

CloudSyncCipherStateAccess
Closed access to one session’s live at-rest keyring. Callers can use the cipher but cannot take the retained key service out of its owner.
CloudSyncObjectStorage
CloudSyncRotationStateAccess

Functions§

blob_tombstone_key
blob_tombstone_object_id
cloud_aad_context
fetch_account_email
open_sealed_blob
Open a blob this layer sealed: split the prefix, then open every chunk under encryption with the AAD context the seal was bound to. Returns the fingerprint of the key that sealed it alongside the plaintext.
prepare_membership_entry
run_blocking_object_verification