2 /** @package php-gpg::GPG */
\r
4 /** require supporting files */
\r
5 require_once("Cipher.php");
\r
8 * @package php-gpg::GPG
\r
12 static function encrypt($block, $ctx)
\r
14 $RCON = GPG_Cipher::$RCON;
\r
15 $S = GPG_Cipher::$S;
\r
17 $T1 = GPG_Cipher::$T1;
\r
18 $T2 = GPG_Cipher::$T2;
\r
19 $T3 = GPG_Cipher::$T3;
\r
20 $T4 = GPG_Cipher::$T4;
\r
28 $b = GPG_Utility::pack_octets($block);
\r
29 $rounds = $ctx->rounds;
\r
35 for($r = 0; $r < $rounds - 1; $r++) {
\r
36 $t0 = $b0 ^ $ctx->rk[$r][0];
\r
37 $t1 = $b1 ^ $ctx->rk[$r][1];
\r
38 $t2 = $b2 ^ $ctx->rk[$r][2];
\r
39 $t3 = $b3 ^ $ctx->rk[$r][3];
\r
41 $b0 = $T1[$t0 & 255] ^ $T2[($t1 >> 8) & 255] ^ $T3[($t2 >> 16) & 255] ^ $T4[GPG_Utility::zshift($t3, 24)];
\r
42 $b1 = $T1[$t1 & 255] ^ $T2[($t2 >> 8) & 255] ^ $T3[($t3 >> 16) & 255] ^ $T4[GPG_Utility::zshift($t0, 24)];
\r
43 $b2 = $T1[$t2 & 255] ^ $T2[($t3 >> 8) & 255] ^ $T3[($t0 >> 16) & 255] ^ $T4[GPG_Utility::zshift($t1, 24)];
\r
44 $b3 = $T1[$t3 & 255] ^ $T2[($t0 >> 8) & 255] ^ $T3[($t1 >> 16) & 255] ^ $T4[GPG_Utility::zshift($t2, 24)];
\r
49 $t0 = $b0 ^ $ctx->rk[$r][0];
\r
50 $t1 = $b1 ^ $ctx->rk[$r][1];
\r
51 $t2 = $b2 ^ $ctx->rk[$r][2];
\r
52 $t3 = $b3 ^ $ctx->rk[$r][3];
\r
54 $b[0] = GPG_Cipher::F1($t0, $t1, $t2, $t3) ^ $ctx->rk[$rounds][0];
\r
55 $b[1] = GPG_Cipher::F1($t1, $t2, $t3, $t0) ^ $ctx->rk[$rounds][1];
\r
56 $b[2] = GPG_Cipher::F1($t2, $t3, $t0, $t1) ^ $ctx->rk[$rounds][2];
\r
57 $b[3] = GPG_Cipher::F1($t3, $t0, $t1, $t2) ^ $ctx->rk[$rounds][3];
\r
59 return GPG_Utility::unpack_octets($b);
\r