Closed vixentael closed 3 years ago
Based on a quick look I think it's probably a better fit for "Collections of Cryptographic Primitives"
The current distinguishing factor between the two categories is a built-in system for key management (which is a debatable qualifier, but the one currently in use), i.e. some sort of keyring/keystore functionality which manages keys on the user's behalf.
As far as I can tell keys in Themis are initialized from raw bytestrings and the user is expected to provide some way of securely persisting them.
That's true – Themis provides key generation utilities (general doc, rust docs) and a passphrase-based API with KDF under the hood. But it doesn't provide key storing APIs — it's up to user where/how to store generated keys.
I'd argue against "Collections of Cryptographic Primitives". Because from my perspective OpenSSL is a good example of collection (aka "space shuttle of crypto libraries" (c) Matthew Green), while Themis doesn't give a way to use crypto-primitives directly, rather gives a pre-configured APIs (for example, cell.encrypt(passphrase, data)
instead of all-the-troubles-of-AES-GCM-params).
But it's up to you, of course, I can update PR to move it to collection of primitives category.
I think given our current categorization "Collections of Cryptographic Primitives" is a better fit.
However, since you bring up OpenSSL we also have a "Platform / Framework Bindings" category which the openssl
crate is presently under. It's a bit lumped in with various OS framework bindings.
I think given our current categorization "Collections of Cryptographic Primitives" is a better fit.
Agree. Updated PR, moved Themis there.
Thanks!
Would you be interested in adding Themis?
That's a general purpose lib, 6yo, with rust-themis wrapper. C core (stable), multiple wrappers supported by the same team, so 100% compatible, tons of docs and examples.
Rust wrapper was added by @ilammy ~2.5 yrs ago and stable since then. Docs, crate.
Under the hood Themis uses OpenSSL/BoringSSL/LibreSSL, etc, and provides crypto-systems for popular use cases – secure cell for aead (similar to libsodium's secure box); secure comparator for zkp-based authN; secure message for sending messages to peers (ecdh+aead).