(M, keySchedule, SUB_MIX, SBOX, nRounds)
| 25 | } |
| 26 | |
| 27 | function 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 |
| 64 | var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36] |
no outgoing calls
no test coverage detected
searching dependent graphs…