MCPcopy Create free account
hub / github.com/browserify/browserify-aes / cryptBlock

Function cryptBlock

aes.js:27–61  ·  view source on GitHub ↗
(M, keySchedule, SUB_MIX, SBOX, nRounds)

Source from the content-addressed store, hash-verified

25}
26
27function cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {
28 var SUB_MIX0 = SUB_MIX[0]
29 var SUB_MIX1 = SUB_MIX[1]
30 var SUB_MIX2 = SUB_MIX[2]
31 var SUB_MIX3 = SUB_MIX[3]
32
33 var s0 = M[0] ^ keySchedule[0]
34 var s1 = M[1] ^ keySchedule[1]
35 var s2 = M[2] ^ keySchedule[2]
36 var s3 = M[3] ^ keySchedule[3]
37 var t0, t1, t2, t3
38 var ksRow = 4
39
40 for (var round = 1; round < nRounds; round++) {
41 t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]
42 t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]
43 t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]
44 t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]
45 s0 = t0
46 s1 = t1
47 s2 = t2
48 s3 = t3
49 }
50
51 t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]
52 t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]
53 t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]
54 t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]
55 t0 = t0 >>> 0
56 t1 = t1 >>> 0
57 t2 = t2 >>> 0
58 t3 = t3 >>> 0
59
60 return [t0, t1, t2, t3]
61}
62
63// AES constants
64var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]

Callers 1

aes.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…