diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..95731801eda4732fbe275c4d312f0a14ea2f4d88 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# Tahoe-Capabilities + +## What is it? + +Tahoe-LAFS LIT, CHK, SDMF, and MDMF capabilities offer varying functionality for interacting with encrypted data. +This library provides abstractions for functionality common to all of these capability types. + +All responsibility for implementing these abstractions is left to the capability-specific libraries. + +### What is the current state? + +* The `ConfidentialShowable` type class provides a uniform way for losslessly converting a capability to a string. + +### What is planned? + +Sufficient abstraction so that general encoding, decoding, upload, and download functions could be implemented independent of the specific capability type in use. + +## Why does it exist? + +Each specific Tahoe-LAFS capability type supports certain operations and offers certain security properties. +At a high level, +an application will often want to select among the available capability types to satisfy its particular security and/or privacy requirements. +A lower level exists encompassing such details of a capability type as which hash function is used or the size or alignment of certain fields. +Applications should typically not be required to make choices at this lower level. +By using a set of operations that abstract over these details, +application code can be kept simpler and more general-purpose. +By allowing some centralization of the choice of which concrete capability type to use, +applications can also be made more secure over time at a lower maintenance cost. diff --git a/tahoe-capabilities.cabal b/tahoe-capabilities.cabal index 063c604ed5d0f5a15b6bf1f67a658d18a6c4c3d3..67a6c2251907f139e6ee54fc8379852fe5567302 100644 --- a/tahoe-capabilities.cabal +++ b/tahoe-capabilities.cabal @@ -54,7 +54,9 @@ category: Codec build-type: Simple -- Extra doc files to be distributed with the package, such as a CHANGELOG or a README. -extra-doc-files: CHANGELOG.md +extra-doc-files: + CHANGELOG.md + README.md -- Extra source files to be distributed with the package, such as examples, or a tutorial module. -- extra-source-files: