I am looking for an implementation of RFC 5297 (SIV) algorithm using JavaScript.

I would like to see how to wrap a key on client side web browser, like Mozilla's fxa-auth-client (that uses a XOR to wrap) but using RFC 5297.

  • 2
    Please edit your question so that it is standalone, i.e. describe what RFC5297 does. Include a link. Explain 'SIV'. – user416 May 4 '15 at 7:28

SIV is a deterministic authenticated encryption with additional data. It is based on CMAC.

There is an AES-SIV (and AES-CMAC) implementation in JavaScript which is based on CryptoJS and runs in the browser:


Note: I created it under the MIT license.

The tests are passing for all the test vectors from RFC 5297 (SIV) and RFC 4493 (CMAC). The tests are running in node.js, but there is currently no node.js module for from this project.

Since SIV is a two-pass encryption scheme, the API in the CryptoJS extension doesn't currently support streaming/progressive encryption.

To the best of my knowledge it is the only implementation of SIV or CMAC in JavaScript, so there are no performance comparisons.

I also created an online "calculator" for AES-SIV and AES-CMAC from this project: http://artjomb.github.io/cryptojs-extension/.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.