Releases: Hinaser/jscrypto
Releases · Hinaser/jscrypto
v1.0.3
v1.0.2
v1.0.1
v1.0.0
Added
- Added CCM block cipher mode (Counter mode/CBC-MAC)
https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38c.pdf - Added CBC-MAC
- Added tag length option to GMAC and GCM
- Exposed
CipherParams
class to public.
Changed
Small breaking change
- Pass initializing vector as Word32Array to constructor of BlockCipherMode instead of just a 32bit number array.
*This may enable developers to use non-32bit-aligned iv value to block cipher mode in future release.
*This change may not be breaking lib compatibility unless developers directly instantiate BlockCipherMode or
creating original BlockCipherMode extending old BlockCipherMode class.// BEFORE const gcm = new GCM({cipher: AES, iv: [0x11223344]}); // AFTER const gcm = new GCM({cipher: AES, iv: new Word32Array([0x11223344], 4)});
Breaking change
- Changed GMAC hash function name from
GCM.hash()
toGCM.mac()
. - Calculating authTag in GCM now requires developer to manually call authTag function.
Encryption/Decryption and MAC Generation are now calculated independently.////////////////////// // AES-GCM ////////////////////// // BEFORE const encrypted = AES.encrypt(msg, key, { iv, mode: GCM, padding: NoPadding, authData }); encrypted.authTag !== undefined; // This returns true. authTag is automatically calculated on encryption. // AFTER const encrypted = AES.encrypt(msg, key, { iv, mode: GCM, padding: NoPadding, authData }); encrypted.authTag === undefined; // This returns true. authTag must be manually calculated as below. const authTag = GCM.mac(AES, key, iv, authData, encrypted.cipherText);
v0.2.0
v0.1.0
v0.0.2
v0.0.1
Fixed
- Fixed an issue where encoder/kdf modules have the different loading path.
<!-- BEFORE THIS FIX --> <!-- Load from index.js --> <script src="dist/index.js"></script> var word = JsCrypto.Hex.parse("00112233"); <!-- Load from individual modules --> <script src="dist/encoder/Hex.js"></script> var word = JsCrypto.encode.Hex.parse("00112233"); <!-- AFTER THIS FIX --> <script src="dist/Hex.js"></script> var word = JsCrypto.Hex.parse("00112233");
- Fixed an issue where loading multiple modules in browser only preserves the last module.
<script src="dist/AES.js"></script> <script src="dist/DES.js"></script> // OK var word1 = JsCrypto.DES.encrypt("message", "key"); // ERROR var word2 = JsCrypto.AES.encrypt("message", "key");