react-native-cryptopp icon indicating copy to clipboard operation
react-native-cryptopp copied to clipboard

Wrong CMAC value generated

Open amrin-justnaik opened this issue 9 months ago • 0 comments

I want to generate CMAC using these values

AES Key: 2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c
SubKey1: fb ee d6 18 35 71 33 66 7c 85 e0 8f 72 36 a8 de
SubKey2: f7 dd ac 30 6a e2 66 cc f9 0b c1 1e e4 6d 51 3b

Message: <empty>
CMAC:    bb 1d 69 29 e9 59 37 28 7f a3 7d 12 9b 75 67 46

Message: 6b c1 be e2 2e 40 9f 96 e9 3d 7e 11 73 93 17 2a
CMAC:    07 0a 16 b4 6b 4d 41 44 f7 9b dd 9d d0 4a 28 7c

Message: 6b c1 be e2 2e 40 9f 96 e9 3d 7e 11 73 93 17 2a ae 2d 8a 57 1e 03 ac 9c 9e b7 6f ac 45 af 8e 51 30 c8 1c 46 a3 5c e4 11
CMAC:    df a6 67 47 de 9a e6 30 30 ca 32 61 14 97 c8 27

However only empty message returns the right CMAC value.

let str = "6b c1 be e2 2e 40 9f 96 e9 3d 7e 11 73 93 17 2a ae 2d 8a 57 1e 03 ac 9c 9e b7 6f ac 45 af 8e 51 30 c8 1c 46 a3 5c e4 11";

let cmac = Cryptopp.CMAC.generate(str, key, "AES");
console.log("CMAC: ", cmac);

str = "6bc1bee22e409f96e93d7e117393172aae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411";

cmac = Cryptopp.CMAC.generate(str, key, 'AES', 'hex');
console.log("CMAC: ", cmac);

const byteValues = [0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a];

// Create a Uint8Array from the byte values
const uint8Array = new Uint8Array(byteValues);

// Create an ArrayBuffer from the Uint8Array
const arrayBuffer = uint8Array.buffer;

both string with spaces and no spaces gives different value than the expected outcome. When using buffer, it returns empty object {}

Am i using the it the wrong way?

amrin-justnaik avatar May 15 '24 07:05 amrin-justnaik