]> git.mxchange.org Git - friendica-addons.git/blob - securemail/php-gpg/libs/GPG/AES.php
Merge pull request #230 from fabrixxm/securemail
[friendica-addons.git] / securemail / php-gpg / libs / GPG / AES.php
1 <?php\r
2 /** @package    php-gpg::GPG */\r
3 \r
4 /** require supporting files */\r
5 require_once("Cipher.php");\r
6 \r
7 /**\r
8  * @package    php-gpg::GPG\r
9  */\r
10 class GPG_AES\r
11 {\r
12         static function encrypt($block, $ctx)\r
13         {\r
14                 $RCON = GPG_Cipher::$RCON;\r
15                 $S = GPG_Cipher::$S;\r
16                 \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
21                 \r
22                 $r = 0;\r
23                 $t0 = 0;\r
24                 $t1 = 0;\r
25                 $t2 = 0;\r
26                 $t3 = 0;\r
27                 \r
28                 $b = GPG_Utility::pack_octets($block);\r
29                 $rounds = $ctx->rounds;\r
30                 $b0 = $b[0];\r
31                 $b1 = $b[1];\r
32                 $b2 = $b[2];\r
33                 $b3 = $b[3];\r
34                 \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
40                         \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
45                 }\r
46                 \r
47                 $r = $rounds - 1;\r
48                 \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
53                 \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
58                 \r
59                 return GPG_Utility::unpack_octets($b);\r
60         }\r
61 }\r
62 \r
63 ?>