Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function importSecretKey(rawKey) {
- return crypto.subtle.importKey(
- "raw",
- rawKey,
- {length: 128, name: "AES-GCM"},
- true,
- ["encrypt", "decrypt"]
- );
- }
- function StrToBuffer(AInput) {
- return new Uint8Array(AInput.match(/[\da-f]{2}/gi).map(function (h) { return parseInt(h, 16) } ) )
- }
- function decryptMessage(aKey, aCipherText, aIV, aAAD, aTagLength = 96) {
- return crypto.subtle.decrypt(
- {
- name: "AES-GCM",
- iv: aIV,
- additionalData: aAAD,
- tagLength: aTagLength
- },
- aKey,
- aCipherText,
- )
- }
- function encryptMessage(aKey, aClearText, aIV, aAAD, aTagLength = 96) {
- return crypto.subtle.encrypt({
- name: 'AES-GCM',
- iv: aIV,
- additionalData: aAAD,
- tagLength: aTagLength
- }, aKey, aClearText);
- }
- var key = await importSecretKey(StrToBuffer('11111111111111111111111111111111'))
- var iv = StrToBuffer('4D4554000000000100000000')
- var aad = StrToBuffer('3033333333333333333333333333333333')
- var ciphertext = StrToBuffer('b662a493a5dfdbccc1dc832271bae416945f2e0474d102d2c7941fcd50c678534083e5d1520ae04c3038a281d176b6b2a1ce6e15fe861f4689b7fe7909f309908a40f843e9ceff7675f00b0e217b7620')
- var cleartext = StrToBuffer('0fc00000010c07e6091a0103272e5aff8880020209060001190900ff01010206090c07e6091a0103230000ff8880115a1749cb251d1749cb251d1749cb251d1749cb251d')
- // encrypt to a 128 bit tag
- var encMsg = await encryptMessage(key, cleartext, iv, aad, 128);
- // decrypt and verify
- var decMsg = await decryptMessage(key, encMsg, iv, aad, 128);
- // decrypt original and verify
- var decMsg = await decryptMessage(key, ciphertext, iv, aad, 96);
- // decrypt truncated and verify
- var decMsg = await decryptMessage(key, encMsg.slice(0, -4), iv, aad, 96)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement