var chacha = require('chacha-native');
var cipher = chacha.createCipher(key, nonce); var decipher = chacha.createDecipher(key, nonce);
Create a cipher object by passing it a 256 bit key and 96 bit nonce, API is identical to crypto.createCipheriv()/createDecipheriv in node >= 11 with a gcm mode, in other words, e.g.
cipher.setAAD(nonencrypteddata);// must be called before data var tag = cipher.getAuthTag();// must be called after finish or end decipher.setAAD(nonencrypteddata);// must be called before data decipher.setAuthTag(tag);// must be called before data
decipher with throw if you don't set a tag or the tag doesn't match. See the node docs for more info (the iv length for gcm is also 96 bit fyi).
var cipher = chacha.chacha(key, nonce);
The API is identical to a cipher/decipher object in node >= 10. Encryption and decryption are the same.
var hmac = chacha.createHmac(key);
API is identical to an hmac in node, so it's a stream with update and digest methods.
A variant version of the aead that is compatible with boringssl.
var cipher = new chacha.AeadLegacy(key, nonce); var decipher = new chacha.AeadLegacy(key, nonce, true);
The third parameter is whether it should decipher, otherwise identical to createCipher/createDecipher. Doesn't implement variable length tags.