The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed Node.js 18+ version not supported (#94)
- Inlined WASM modules to simplify packaging for WASM users (#83)
- Support for Python 3.11-3.12 (#87)
- Fixed Python typings for
ThresholdMessageKit.decrypt_with_shared_secret()
andcombine_decryption_shares_simple()
(#84)
Conditions
should not be optional as it pertains toAuthenticatedData
andAccessControlPolicy
types since conditions-based decryption (CBD) requires conditions. (#80)
0.12.0 - 2023-08-28
- Modified
ThresholdDecryptionRequest
to useCiphertextHeader
andAccessControlPolicy
to utilize encapsulation now provided byferveo
. (#74)
- Added
ThresholdMessageKit
which is the representation of data encrypted viaferveo
that utilizes data encapsulation and an ephemeral symmetric key. (#74) - Added
AccessControlPolicy
which contains access metadata (conditions, public key, authorization, etc.) that forms part of theThresholdMessageKit
. (#74) - Added
AuthenticatedData
which forms part of theAccessControlPolicy
and is needed to ensure that the aad is consistent during the encryption process and during the decryption process. (#74) - Added
encrypt_for_dkg
method for generation offerveo
Ciphertext
andAuthenticatedData
. (#74)
0.11.0 - 2023-08-01
- Bumped
umbral-pre
version to 0.11.0 andferveo-pre-release
version to 0.2.1 (#72) - Bumped MSRV to 1.67. (#72)
- Expose
FerveoVariant
fromferveo-pre-release
in Python bindings. (#72)
0.10.0 - 2023-06-23
- Custom (de)serialization of
SessionStaticKey
to bytestring instead of a vector of integers. (#63) - Replaced raw tuples with
ValidatorMessage
in Python bindings. (#65) - Removed
DkgPublicParams
from bindings. (#66)
- Added
equals
method to protocol objects in WASM bindings (#56)
- Fixed a typo in the Python type stubs for
ferveo.Keypair.secure_randomness_size()
. (#61)
0.9.0 - 2023-06-07
- Re-exported
ferveo
Python and WASM bindings. (#58) - Added
SessionSharedSecret
,SessionStaticKey
,SessionStaticSecret
,SessionSecretFactory
as wrappers for underlying Curve 25519 key functionality. (#54) - Added Rust
pre-commit
hooks for repos. (#54) - Added
secret_box
functionality. (#54)
- Replaced opaque types with native
ferveo
types. (#53) - Removed
E2EThresholdDecryptionRequest
type and bindings. (#54) - Modified
EncryptedThresholdDecryptionRequest
/EncryptedThresholdDecryptionResponse
to use Curve 25519 keys instead of Umbral keys for encryption/decryption. (#54) - Modified
ThresholdDecryptionResponse
/EncryptedThresholdDecryptionResponse
to includeritual_id
member in struct. (#54) - Ritual ID for
ThresholdDecryption[Request/Response]
/EncryptedThresholdDecryption[Request/Response]
is now u32 instead of u16. (#54)
0.8.0 - 2023-05-23
- Add
EncryptedThresholdDecryptionRequest
/EncryptedThresholdDecryptionResponse
types and bindings. (#52)
- Bumped MSRV to 1.65. (#52)
0.7.0 - 2023-05-01
- Add
ThresholdDecryptionRequest
/ThresholdDecryptionResponse
types and bindings. (#48) - Add
ferveo_public_key
field toNodeMetadataPayload
. (#48)
- Bumped MSRV to 1.64. (#48)
0.6.1 - 2023-02-18
- Fixed the type signature for
RecoverableSignature.from_be_bytes()
in Python bindings. (#45)
0.6.0 - 2023-02-17
- Bumped
umbral-pre
version to 0.9.1 andPyO3
to 0.18. (#44) NodeMetadataPayload::operator_signature
now has the typeumbral_pre::RecoverableSignature
. (#44)- Major protocol versions bumped to 3 - ABI has changed (because of the changes in how
Signature
is serialized). (#44) FleetStateChecksum
argument order changed (becausePyO3
wants the optional argument to be the last). (#44)RECOVERABLE_SIGNATURE_SIZE
andk256
removed from the exports. (#44)
0.5.1 - 2023-01-17
- Add
wasm-pack build -t web
to theMakefile
for use in web pages without a wasm aware bundler. (#42) - Re-exported
umbral-pre
bumped to 0.8.1. (#43)
0.5.0 - 2023-01-16
- Bumped MSRV to 1.63. (#41)
- Bumped
umbral-pre
to 0.8 (with consequent API changes to the re-exportedumbral_pre
crate),rmp-serde
to 1.x,pyo3
to 0.17. (#41) - Major protocol versions bumped to 2 - ABI has changed. (#41)
0.4.1 - 2022-10-22
- Finish up introducing the
Address
type in the spots forgotten in #34. Namely, in Python bindings: inTreasureMap.destinations()
, inRetrievalKit.queried_addresses()
, and inNodeMetadata.staking_provider_address()
. (#38)
0.4.0 - 2022-10-02
- Conditions and context are now strings instead of bytestrings. (#33)
- Methods taking
VerifiedCapsuleFrag
objects use "vcfrag" instead of "cfrag" for their names and the names of the corresponding parameters. (#33) - Use a workaround with
wasm-bindgen-derive
to supportOption<&T>
andVec<&T>
arguments, andVec<T>
and tuple return values, with correct TypeScript annotations. Removed all the Builder pattern helper classes. (#34) - Use
Address
instead of plain bytes in arguments and return values (both in WASM and Python bindgins). Export theAddress
type. (#34) umbral-pre
dependency bumped to 0.7. (#36)ReencryptionResponse::new()
now takes an iterator of pairs(Capsule, VerifiedCapsuleFrag)
instead of two separate iterators; bindings changed correspondingly. (#37)- Change
Iterable
toSequence
in Python binding type stubs: bindings cannot actually take just iterables. (#37) AuthorizedKeyFrag.verify()
,ReencryptionResponse.verify()
, andAuthorizedTreasureMap.verify()
now consumeself
. (#37)
conditions
getters inMessageKit
andRetrievalKit
in WASM bindings. (#32)- Attributes
MessageKit.conditions
,ReencryptionRequest.conditions
, andReencryptionRequest.context
in Python typing stubs. (#32) Conditions
andContext
newtypes, to be used instead of raw objects. (#33)MessageKit
,RetrievalKit
, andReencryptionRequest
protocol versions bumped to v1.1. (#33)
- Removed
serde
dependency for WASM bindings. (#34)
0.4.0-alpha.0 - 2022-09-07
- Fixed the type annotation for
signer
ingenerate_kfrags()
in Python type stubs. (#28)
conditions
andcontext
toReencryptionRequest
with python/wasm bindings to expose them. (#26)conditions
toMessageKit
andRetrievalKit
with python/wasm bindings to expose them. (#26)- Rust-native tests for these new attributes and getters. (#26)
0.3.0 - 2022-08-16
- Bumped
umbral-pre
to 0.6, and the nested dependencies accordingly. (#17) - Following the changes in
umbral-pre
0.6, the types that wereserde
-serialized in human readable formats as hex will now have a"0x"
prefix. (#17)
Eq
marker forHRAC
andFleetStateChecksum
. (#17)- Python typing stubs. (#20)
- The Python module
nucypher_core.umbral
now exportsKeyFrag
. (#20) Display
impl forHRAC
andFleetStateChecksum
, and exposed it in the Python and WASM bindings. (#22)
0.2.0 - 2022-04-24
- Changed from
sha3_256
toKeccak
when buildingFleetState
andHRAC
. (#15)
0.1.1 - 2022-03-15
umbral-pre
bumped to 0.5.2 andk256
bumped to 0.10.4 to make use of an important bugfix (see RustCrypto/elliptic-curves#529). Previous 0.1.* versions (usingk256
0.10.2 with the bug) are yanked.
0.1.0 - 2022-03-14
- Renamed
staker_address
tostaking_provider_address
inNodeMetadataPayload
fields andRevocationOrder::new
parameters. (#10) - Renamed
NodeMetadataPayload.decentralized_identity_evidence
tooperator_signature
. (#10) - Declared
NodeMetadataPayload.operator_signature
asrecoverable::Signature
instead of just a byte array. This allows the user to detect an invalid signature onNodeMetadata
creation. (#11) - Renamed
NodeMetadataPayload.certificate_bytes
tocertificate_der
(although it is not deserialized on the Rust side, so the DER format is not strictly enforced). (#13) - Changed some method and field names in WASM bindings to conform to JS style (camel case). New names are:
TreasureMap.publisherVerifyingKey
,TreasureMap.bobVerifyingKey
,TreasureMap.encryptedKfrag
,RetrievalKit.queriedAddresses
,RevocationOrder.verifySignature
,NodeMetadataPayload.verifyingKey
,NodeMetadataPayload.encryptingKey
,NodeMetadataPayload.timestampEpoch
,MetadataRequest.announceNodes
. (#9) - Moved
ADDRESS_SIZE
toAddress::SIZE
. (#14) MetadataResponse::verify()
andReencryptionResponse::verify()
return aResult
instead ofOption
. (#14)- Renamed
RevocationOrder::verify_signature()
toverify()
and made it return aResult<(Address, EncryptedKeyFrag)>
. (#14)
TreasureMap::make_revocation_orders()
(with the corresponding methods in Python and WASM bindings). (#9)HRAC.fromBytes()
in WASM bindings (#9), and in Python bindings (#14).RevocationOrder.stakingProviderAddress
in WASM bindings. (#9)MetadataResponse.verify()
in WASM bindings. (#9)impl From<[u8; 16]>
forHRAC
. (#9)- Made
RevocationOrder.staking_provider_address
public. (#9) Rolled back in (#14) in favor of the return value fromverify()
. HRAC::SIZE
constant (#14)VerificationError
for use in variousverify()
methods. (#14)
- Some methods in WASM bindings that were previously taking
self
are now taking&self
, leading to a more idiomatic behavior in JS. (#9)
0.0.4 - 2022-02-09
- Changed "worker" to "operator" in the API, according to the new terminology. (#5)
0.0.3 - 2022-02-03
- Added the manifest to the Python bindings package, fixing the source distribution build.
0.0.2 - 2022-01-25
umbral-pre
dependency bumped to 0.5 (and to match it, MSRV to 1.56, and Rust edition to 2021). The API was updated accordingly (mainly due to the no-clone approach). Note that this changes the ABI as well. (#4)NodeMetadataPayload.decentralized_identity_evidence
is now a fixed-sized array in the serialized metadata. (#2)k256
dependency bumped to 0.10, andumbral-pre
to 0.5. (#2)NodeMetadataPayload.canonical_address
and the parameterursula_address
ofRevocationOrder::new()
are renamed tostaker_address
. (#2)
0.0.1 - 2021-12-25
Initial release.