Changelog for cryptostore-0.4.0.0
Revision history for cryptostore
0.4.0.0 - 2025-10-12
-
Private keys are now represented as type
KeyPairdefined in moduleCrypto.Store.PKCS8instead ofPrivKey. This ensures that the corresponding public key is always available and that the library detects and reports data mistakes involving a wrong public key. A new errorPublicPrivateKeyMismatchis added for that purpose and returned by functionscertSigner,withRecipientKeyAgree,fromCredentialandfromNamedCredential. Behavior of functionstoCredentialandtoNamedCredentialis now more strict, they return a key and leaf certificate that always match. Functions to convertKeyPairto/from the usual typePrivKeyare also exposed from moduleCrypto.Store.PKCS8. -
Added support of PBMAC1 for PKCS#12 integrity. Type
IntegrityParamsused in functionswriteP12FileandwriteP12FileToMemoryis modified. A low-level function for PBMAC1 is also available in the PKCS5 module. -
CMS now supports SHA-3 algorithms in HMAC, ECDSA, or as digest algorithm
-
Functions
pemToKey,pemToPubKeyandpemToContentInfoare modified to return error details when a PEM object cannot be read. The old API signature that discarded error details is available with functions renamedpemToKeyAccum,pemToPubKeyAccumandpemToContentInfoAccum. -
Function
generateEncryptionParamsis removed and can be replaced with functionsecbParams,generateCBCParams,generateCFBParamsorgenerateCTRParamsaccording to the desired mode. -
Functions
generateAuthEnc128ParamsandgenerateAuthEnc256Paramsare replaced withauthEnc128ParamsandauthEnc256Params. The new API expects aContentEncryptionParamsargument instead ofContentEncryptionAlg. -
CMS encrypted data, enveloped data and authenticated-enveloped data now support optional HKDF-SHA256 derivation of the content-encryption key. When generating encryption parameters, enable the key derivation feature with a call to functions
deriveEncryptionKeyorauthDeriveEncryptionKey. The feature prevents AEAD-to-CBC downgrade attack scenarios forCCMandGCMmodes but requires support from the receiving end. -
Fixed encoding of some HMAC and PRF parameters
0.3.1.0 - 2024-05-05
- Strict validation of GCM/CCM authentication tag length
0.3.0.1 - 2023-06-25
- Add optional flag to use crypton instead of cryptonite
0.3.0.0 - 2023-01-14
-
API change in PKCS5, PKCS8 and PKCS12 modules to handle better password-based encryption derived from an empty password. All encryption/decryption functions now expect an opaque
ProtectionPassworddata type. Conversion functionstoProtectionPasswordandfromProtectionPasswordare provided. Additionnally in the PKCS12 module, the typeOptProtectedis replaced withOptAuthenticatedwhen dealing with password integrity. Similarly at that level, functionrecoveris to be replaced withrecoverAuthenticated. -
Added support for KMAC (Keccak Message Authentication Code) in CMS authenticated data, through constructors
KMAC_SHAKE128andKMAC_SHAKE256. -
CMS key agreement now supports derivation with HKDF along with X9.63. Data type
KeyAgreementParamsis modified to include a KDF instead of simply the digest algorithm. HKDF has assigned OIDs only for standard DH and cannot be used with cofactor DH. -
Added CMS utility functions to deal with the
signingTimeattribute. -
Changed
withSignerCertificatevalidation callback API to include thesigningTimevalue when available.
0.2.3.0 - 2022-11-05
- Fix RC2 on big-endian architectures
0.2.2.0 - 2022-04-16
- Fix buffer overrun in
pkcs12Derive
0.2.1.0 - 2019-10-13
-
Added CMS fuctions
contentInfoToDERandberToContentInfoin order to generate and parse raw ASN.1. -
Implementation of AES key wrap had some optimizations.
-
SHAKE hash algorithms now allow arbitrary output lengths. Lengths that are very small decrease security. A protection is added so that attempts to use lengths which are too small fail, although the criteria are conservative. Generating and parsing content has no restriction.
0.2.0.0 - 2019-03-24
-
Added functions
toNamedCredentialandfromNamedCredentialto handle PKCS#12 elements with an alias (friendly name). -
Functions
fromCredentialandfromNamedCredentialnow generate PKCS#12 elements with thelocalKeyIdattribute. -
Function
toCredentialis now able to locate the leaf certificate and issuers more reliably. -
Algorithms X25519, X448, Ed25519 and Ed448 are now supported.
-
CMS functions
digestVerifyandverifySignedDatanow return anEitherinstead of aMaybe. ErrorsDigestMismatchandSignatureNotVerifiedare added to report failures. -
CMS types
SignedData,DigestedDataandAuthenticatedDatanow retain the encapsulated content in encoded form (with type aliasEncapsulatedContent) instead of a decoded and parsedContentInfo. TheContentInfois parsed and provided only when successfully unwrapping the encapsulated type. -
The CMS interface is transformed to support detached content. CMS types now have a type parameter to distinguish between a direct reference to the encapsulated or encrypted content, and the
Encapindirection which denotes an attached or detached content. Functions building CMS types do not return theContentInfodirectly anymore, but an intermediate type to be fed intotoAttachedCIortoDetachedCI. Reverse transformation is possible with utility functionsfromAttachedandfromDetachedwhen unwrapping aContentInfo.
0.1.0.0 - 2018-09-23
- First version. Released on an unsuspecting world.