GPGTest.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407
  1. <?php
  2. /**
  3. * @file GPGTest.php
  4. * @brief Interface for gpg (GnuPG) shell commands test cases. Project home: https://github.com/vajayattila/GPGShell
  5. * @author Vajay Attila (vajay.attila@gmail.com)
  6. * @copyright MIT License (MIT)
  7. * @date 2018.09.19-2019.07.16
  8. * @version 1.0.0.0
  9. *
  10. * Testing:
  11. * --list-keys
  12. * --list-secret-keys
  13. * --export
  14. * --export-secret-key
  15. * --import
  16. * --encrypt
  17. * --decrypt
  18. * --detach-sign
  19. * --verify
  20. * --gen-key
  21. * getKeyFingerprintsByEmail
  22. * getSecretKeyFingerprintsByEmail
  23. * deleteSecretKeyByFingerprint
  24. * deleteKeyByFingerprint
  25. * deleteAllSecretKeyByEmail
  26. * deleteAllKeyByEmail
  27. */
  28. require_once (__DIR__."/GPGShell.php");
  29. $gpg=new GPGShell(__DIR__.'/.gnupg');
  30. include('config.php');
  31. function stringwidth($str, $width, $align="left"){
  32. if($align=="left"){
  33. for($i=strlen($str);$i<=$width;$i++){
  34. $str.=' ';
  35. }
  36. }else{
  37. for($i=strlen($str);$i<=$width;$i++){
  38. $str=' '.$str;
  39. }
  40. }
  41. return $str;
  42. }
  43. function printField($gpg, $field){
  44. // print stringwidth($name, 30).' = '. stringwidth($field['value'], 30);
  45. print stringwidth($field['description'], 30, 'right').' = '. stringwidth($field['value'], 30);
  46. $desc=$gpg->getValueDescription($field);
  47. if($desc!=NULL){
  48. print ' '.$desc;
  49. }
  50. print "\n";
  51. }
  52. function printPub($gpg, $item){
  53. print stringwidth($item['description'], 30)."\n";
  54. printField($gpg, $item['fields'][1]); // validity
  55. printField($gpg, $item['fields'][2]); // keylength
  56. printField($gpg, $item['fields'][3]); // algorithm
  57. printField($gpg, $item['fields'][4]); // keyid
  58. printField($gpg, $item['fields'][5]); // creation
  59. printField($gpg, $item['fields'][6]); // expiration
  60. printField($gpg, $item['fields'][11]); // keycaps
  61. printField($gpg, $item['fields'][17]); // compilanceflags
  62. }
  63. function printSec($gpg, $item){
  64. print stringwidth($item['description'], 30)."\n";
  65. printField($gpg, $item['fields'][1] ); // validity
  66. printField($gpg, $item['fields'][2] ); // keylength
  67. printField($gpg, $item['fields'][3] ); // algorithm
  68. printField($gpg, $item['fields'][4] ); // keyid
  69. printField($gpg, $item['fields'][5]); // creation
  70. printField($gpg, $item['fields'][6]); // expiration
  71. printField($gpg, $item['fields'][11]); // keycaps
  72. printField($gpg, $item['fields'][14]); // snofatoken
  73. printField($gpg, $item['fields'][17]); // compilanceflags
  74. }
  75. function printRecords($gpg){
  76. $showFingerprint=true;
  77. foreach($gpg->output as $key=>$rec){
  78. if(!$gpg->isSpecialRecord($key)&&'tru'!=$key){
  79. foreach($rec as $item){
  80. switch($item['recordtype']){
  81. case 'sec':
  82. $showFingerprint=true;
  83. printSec($gpg, $item);
  84. break;
  85. case 'pub':
  86. $showFingerprint=true;
  87. printPub($gpg, $item);
  88. break;
  89. case 'fpr':
  90. if($showFingerprint===true){
  91. $fpr=$item['fields'][9];
  92. printField($gpg, $fpr);
  93. $showFingerprint=false;
  94. }
  95. break;
  96. case 'uid':
  97. $uid=$item['fields'][9];
  98. printField($gpg, $uid);
  99. break;
  100. default:
  101. //
  102. }
  103. };
  104. print("\n");
  105. };
  106. };
  107. }
  108. function printListKeys($gpg){
  109. if($gpg->listKeys()){
  110. printRecords($gpg);
  111. } else {
  112. echo('Exit code: '.$gpg->exitCode);
  113. }
  114. }
  115. function printListSecretKeys($gpg){
  116. if($gpg->listSecretKeys()){
  117. printRecords($gpg);
  118. } else {
  119. echo('Exit code: '.$gpg->exitCode);
  120. }
  121. }
  122. function printSecretKey($gpg, $userid){
  123. if($gpg->exportSecretKey($userid)===true){
  124. echo implode("\n", $gpg->output);
  125. }else{
  126. echo('Exit code: '.$gpg->exitCode);
  127. }
  128. }
  129. function printKey($gpg, $userid){
  130. if($gpg->exportKey($userid)===true){
  131. echo implode("\n", $gpg->output);
  132. }else{
  133. echo('Exit code: '.$gpg->exitCode);
  134. }
  135. }
  136. function printEncrypt($gpg, $userid, $text){
  137. $return=$gpg->encrypt($userid, $text);
  138. if($return===FALSE){
  139. echo('Exit code: '.$gpg->exitCode);
  140. }else{
  141. echo($return);
  142. }
  143. return $return;
  144. }
  145. function printDecrypt($gpg, $userid, $pgpmessage){
  146. $return=$gpg->decrypt($userid, $pgpmessage);
  147. if($return===FALSE){
  148. echo('Exit code: '.$gpg->exitCode);
  149. }else{
  150. echo($return);
  151. }
  152. return $return;
  153. }
  154. // Test cases
  155. //----------------------------------------------------
  156. // Test of --gen-key command
  157. //$gpg->genKey(2048, 'GPGShell test keys', 'gpgshell@test.hu', 0, NULL);
  158. //$gpg->genKey(2048, 'GPGShell test keys 2', 'gpgshell@test2.hu', 0, NULL);
  159. //$gpg->genKey(2048, 'GPGShell test keys 3', 'gpgshell@test3.hu', 0, NULL);
  160. // Test of getFingerprintsByEmail
  161. //$gpg->getKeyFingerprintsByEmail('gpgshell@test.hu');
  162. //$gpg->getSecretKeyFingerprintsByEmail('gpgshell@test.hu');
  163. // Test of deleteSecretKeyByFingerprint
  164. //$gpg->deleteSecretKeyByFingerprint('3C1FC03AE8BBBDBE561464853253DF9A0244E3DD');
  165. //$gpg->deleteAllSecretKeyByEmail('gpgshell@test.hu');
  166. // Test of --list-keys command
  167. printListSecretKeys($gpg);
  168. // Test of deleteKeyByFingerprint
  169. //$gpg->deleteKeyByFingerprint('8EADE9526A9599F48B1A69E20F646DD8E2494AB9');
  170. //$gpg->deleteAllKeyByEmail('gpgshell@test.hu');
  171. // Test of --list-keys command
  172. printListKeys($gpg);
  173. // Test of --export-secret-key
  174. //printSecretKey($gpg, 'test@gpgshell.example');
  175. // Test of --export-key
  176. // printKey($gpg, 'test@gpgshell.example');
  177. // Test of --import (import@test public key)
  178. /*$gpg->importKey('-----BEGIN PGP PUBLIC KEY BLOCK-----
  179. Version: OpenPGP.js v3.0.13
  180. Comment: https://openpgpjs.org
  181. xsFNBFup6GUBEADJvx6lJgFlCnpN/mkHjYy3B9KSG/mJWJkeSQ6UEzJbrfQN
  182. 5FsMVBAuyTwUR6NuxhTVWXsRpVV974qjed/n/6vnwflQawXLEIvmP3GWPkV+
  183. DiTmzsxb2ETPsLmw0eJbMsFDtzMjoRfwth0DpBlGBfIIm5G6ChtYm3X6LE3w
  184. EVF7URHJU/xOHr7X+/qyj5U5OZ0jQurUN2YyGFRwN1VUllEzPuS28txA8QaY
  185. s2uZICtoZPWycsscvBK8OIteLKTQriRkKb6yvw/66bp+alwG5DGTfjrj0GQR
  186. 1Dofb22T1sURrcLZaC9k1PG2/qCP/TsSeZykWX5+vsdsfATQ2um86fYGhC1X
  187. Sertt+NuhFe24V3hiXxt1j0a4wWUGz+gIq6Ur10S8zLpiZ6GYOfFJ8o0u6pu
  188. Nrfr0+bPIttNHCY+Uiaye9rsREqeWLB/idCqLok+xsi9sqM5Z+8LKyY2IcPr
  189. vG4AyTZX8vSpdB7nB2LyYIM/uI/2pp4++gY+HJSrfgo6Lz/n9sEZ0oZKtuH0
  190. socp206aXL4eJFP3AjZ7+Hpu/n3RSZAZbxCcDhtzFvlmLeGdSBw7s9ein4DU
  191. gzwAH/iiJVYBPurh3YbCOvCkf9L0xvxEchB+CIRs3nHCZfOtpnGARtqUHDEz
  192. AsIUSMQeygYrg1/U/yt/+wlD9FD2g3ktEXQfnwARAQABzQ0iaW1wb3J0QHRl
  193. c3QiwsF1BBABCAApBQJbqehlBgsJBwgDAgkQzsiOeMouUJUEFQgKAgMWAgEC
  194. GQECGwMCHgEAAAhgD/46Aub4autz+VG58aG9sGWds0gB9tpUo8Lch4xpy34r
  195. BoD1HSQfUFUzJ5SDh/b2pZqR+UmE71A4sQz8nTQG8oqGTdsLbuyoDA/mnqA7
  196. TEM4U7Jn/J6noWIt1rCYNx27tsp6VJj4cqdrjbwP7url3/PJPfPmLnlzP842
  197. 65iDejBxnz9+gkPSP3LDcw51M81Qt6zXwnlLRzYDBovZFLDmzSHmQJUIRJOe
  198. JPcqfDmqjIASpmFtpHf2Ci/a7bnft13fgHxXtIFtEwzqUQWZfGyVIyjD8ybw
  199. HtMIUuSTjcEzklPFc1xrcTTEJv2bEshq7cM9COAyA9O9WHnMGQX70iJjOJLq
  200. AWf+GHWKm/ejDRWB9n2F/BQc/u/kniJvclV7VyxrS4hkwdp1QIi0YqC05ia8
  201. ycvS+dPlp7vD9sV/K70LceIKbIGqCXXEkOTOGkbpYEM09PHBLXngOKhykCcE
  202. +xQH/GuSBW+dF3ohz8as+2eh8t5WCdQTs7Jl5i6tIotAe4JFjjri3Qjxu+C+
  203. +zru4D1NBExEmgyg9qkFvjiNbCUr+wn0N+21HjSkIQm1I/vqD1VAbI7YzSk/
  204. V6BVuJI8t0lxv5lkzBlzE7ydSqZ3sIgQgOtgS/S1SHiTcbnMerQjxbwwJThv
  205. qUnriMa9ImUiISNmZZOMQ/XqsBoofS65dc3fZ4XnR87BTQRbqehlARAA8fSX
  206. HOn/eYhE8/SZ+DokO1p24C9e7DsjGXIn+h/muyAV5OcA+JcA3Ko0BRS+vkIs
  207. Uq9NDoj5Vwz4aBPwkOMHAD8cJLioK4EP1nx7IxriL0mkgcEL5VU/lWbtj8rT
  208. 5e9V3NKpjVtQmXSiq9lcmONhyl6GrcTkc/hgakkGlTs4EgRr+RDCfkoOyHSA
  209. RwNtJ/2TNMDDoezIzC9Dt0kJ/CXCL+4u+UwYRM+Mml7hbGUKUxMkEaANmnCK
  210. zwwDnN4+ekCCdVN4nACZ5kuWkcWVPg6Hp5SE6PHp6iIfD2deELP9uUvBey41
  211. JdSX9GMLQ4fb+RsX6I+z/7VfnWCeL3F3GzBNTlHZfTEhb4o4m+7qE7qL9i+h
  212. sl5e0FLq/2JV2No/9kSgP6VqmEoenJsZR5Do3HKN0X13Ohnhyps7jkK5/b6+
  213. 7wVwWE8SC7T+Z7IEpXPjA9nAGpV2HtgLDH5ogfE8NIeC4XFF+hmy/rVmQjvM
  214. PMFcK5RYanM9goil36cpeiGGTu8Qwwt2k2sUfJMJD7eCrxtJAEfkXIAavU+9
  215. H0I0rTvZRv7g7WXB7lYPNubSjyjeOZ7wJSkwZ5elVMwl5l2cHvAjrl5zvria
  216. h+rpbM8GKVLDNJGz3iQrFAkRuT0HWTnrJaIITqerTHUNuwmLkO8xX4edeO+n
  217. d3nYPXvQMGxPvTHwiZsAEQEAAcLBXwQYAQgAEwUCW6noZQkQzsiOeMouUJUC
  218. GwwAAF9oD/kBnplsX1ENRC3sTkXp1UK5VX/vIxO5IJWM2oGtDM+4fO9Z16g6
  219. 9DaL8R2SArzqmaaRZMRLfZZC4/kZyBvX63VV4pfaCVZ4FkHeUuraAXpacMdZ
  220. xIry9QC0ws86rc4W3bapHU6nmcMlqqklhDlxtljXqNUc63x+4+U/2oCMlCLN
  221. hVu0SmmbnAu+6ek4+l6VjpzMt/k9EthRgBB/fgt0NbNKJqoUzU+CbD/X2rGj
  222. iCVJOnbIkvSG/k4LnvaRMcw1BhFoC5MKf5KKojrzsQ8BSs1AgRaaJd3GF0Qt
  223. kJp8fdblvxAhSafV6OSd9MKyZW+LUHWSkLHQ3O42kWGaExDJZrLHJ3isxhlf
  224. PTBhgIk4ls8obSugSPyet4GnV4kS4gpBeOBUvwcs7Pv8N5Fp4Dgx0kUc5ot3
  225. tLzT4Aftd+UQyQPodKM8qQGovSRoaKUqIknKC6EmEXjeij+Z65wbN3H6DMbh
  226. ZZ116evBuxStTizeW/X8SvGAWDaonLuCHsGAN5UGhpSRsqWv+Ge/z8vfKbEc
  227. 6jkRhYo2hIM1tHbcWNmGGnaryFaZrhEYcwBm9GImjigjrNftbS5XmjAG0RQp
  228. Ku2uUpxc6MjvGiz/iHpGVWYwW4I1Ut/gTJh4qf+/f+VvwBMGXwFsEVGhX0bH
  229. vCC83dAStjEaELaoLqjp1vwesfw8EXdLIA==
  230. =c5EJ
  231. -----END PGP PUBLIC KEY BLOCK-----
  232. ');*/
  233. /*
  234. $gpg->importKey('-----BEGIN PGP PRIVATE KEY BLOCK-----
  235. Version: OpenPGP.js v3.0.13
  236. Comment: https://openpgpjs.org
  237. xcZYBFup6GUBEADJvx6lJgFlCnpN/mkHjYy3B9KSG/mJWJkeSQ6UEzJbrfQN
  238. 5FsMVBAuyTwUR6NuxhTVWXsRpVV974qjed/n/6vnwflQawXLEIvmP3GWPkV+
  239. DiTmzsxb2ETPsLmw0eJbMsFDtzMjoRfwth0DpBlGBfIIm5G6ChtYm3X6LE3w
  240. EVF7URHJU/xOHr7X+/qyj5U5OZ0jQurUN2YyGFRwN1VUllEzPuS28txA8QaY
  241. s2uZICtoZPWycsscvBK8OIteLKTQriRkKb6yvw/66bp+alwG5DGTfjrj0GQR
  242. 1Dofb22T1sURrcLZaC9k1PG2/qCP/TsSeZykWX5+vsdsfATQ2um86fYGhC1X
  243. Sertt+NuhFe24V3hiXxt1j0a4wWUGz+gIq6Ur10S8zLpiZ6GYOfFJ8o0u6pu
  244. Nrfr0+bPIttNHCY+Uiaye9rsREqeWLB/idCqLok+xsi9sqM5Z+8LKyY2IcPr
  245. vG4AyTZX8vSpdB7nB2LyYIM/uI/2pp4++gY+HJSrfgo6Lz/n9sEZ0oZKtuH0
  246. socp206aXL4eJFP3AjZ7+Hpu/n3RSZAZbxCcDhtzFvlmLeGdSBw7s9ein4DU
  247. gzwAH/iiJVYBPurh3YbCOvCkf9L0xvxEchB+CIRs3nHCZfOtpnGARtqUHDEz
  248. AsIUSMQeygYrg1/U/yt/+wlD9FD2g3ktEXQfnwARAQABAA//X4Pwyle4CVJw
  249. nUR6DW1i1bUKaMp91hzwQXptQIXmLamqBnm68ZdLIht8Kk3Qfr2hV3FJ5wzT
  250. 8Q/cH5GwBHLzvIIFu6Ev2Pg4hAY9jNhmpkukBPKbplA6I+qTv7de57ab8adm
  251. utOmNfzCt9qVbKWb9Z9R2za1w7m2nX8kVyib3zp+pUbyCTpdOHzAMJHyIGm6
  252. j9s6usaPx9/k+kv4Rlf0kcKRHlzVEpoKeXlY0+J7Kq3B9X6L00rnw90xfqC8
  253. V2BbMmDhPFdhBXZrKTbJ4ylen2oAD6O1/QrxibiDtJ7WJoyR18SPy7lVx0G+
  254. Wu2VbiXNl7IXRYKlgCMnVIqQZzSNmaikuOIFnqZNSjliY4bSIMF+XEX1t6E1
  255. jDUJ+e2FKirNE7jGVfcmFFI+Sxf79RGsSF64xP5wcypWhx9TiGzu3dHy0sJ7
  256. Lx7cnJmMCcyGBYBoH6C4cifw3cUdAtnPKIiXO/UUhxxaZWI5wcAl/JaUJyJd
  257. egWZVtRcnTZ7F1T3jOe+rV31sMQJnnNHoQywcDekJAKCmARgNdYfvP1/sH9A
  258. YzjG2CMF0WimumTyFq4sfZvwIYSbafthCgvhk/CS3h4mpFIhjip0m8qFRqpD
  259. 2EuTsQrhP1bjfbxJToO3hoO3t3GgqBQEmeNs280o2I1LiOKNdoeL1Jre7nq0
  260. H1Ydrhhf0+EIAPDT8+2wq17TC6dpUPZTAZFVxAaJTEWnlOvsR4n7tCPbILTf
  261. 6QqQyQe877q1eU8233yWBFSq5wAuf4JLOwNblalFBY/GmLt5r8z8lHMYL5bH
  262. MThfJuQsdsOqL9fmmHHCZwKVu9dtVKvEugiJ5dMxV6kjkXz8O2J1OoT1UZ1R
  263. 1OnxSiVr+wnfZG9lgxxCEpVHwgIlTpEalyg2VdOgeOgalvn5Mra8rO6mcYs0
  264. yaKlMw5MEf5gf+sdrhx8uY8D41MlbmTUFj/7/g4fouZvoOLlQCnFGQEd2+B8
  265. xFCouqak7S7+8VRtpL5FXVEkmss6TNjpQ7CAYKccC7Po98ncSW9R2ssIANZ0
  266. 3de8LyyTw7xzp4zOjMX2KwvZcyQKW19TfJLECn3I6elb49aCgbXRDlYm8NdV
  267. zjLx68s6C5+CYgfdIItK8P0WX7bgN7HoqoaqikrORkgVnSt9CzfL58CI/qy5
  268. KxjFxGEkDpX0jhHbFWIOLUkp7SekZapQj3m0LoC/z3+BGd2uzzeU9R7VrS12
  269. iJZKZZZzZKAckZrg+cF3fkASpJz23D6LC7u+dmEp7u9ucffz8X/UeWdXRE+j
  270. jxxL93ENcShrO0o/t0kqNzIe+zNS3xEr3oGiRZOSWwB5HHhQ+GKGJ35+p2Ul
  271. n4+DFy+OkjwUyYbu4rdMu+9nrkE+KgF72hyXD/0IALDcbrZAx9apPxQW+Jm7
  272. hnYldtQ2WW99XjfXURJQC2tfA78ZFzm2LKLuPKSXgY0WW9znsUsCIvxXtSMH
  273. mxMB0sK+ABxhh/grKX8yY2TKLXH6mYC04GkH21Rux3FwTWUJrKb6c+b7qyzG
  274. lqmOePEtYBdQHLxtu8rkERkUKhQ6ke7BvNZE4cagc6aK+l805QNn5gQJmZzH
  275. ywo/XrChnfLZ1QtBlmJRAlZk/EL7kFvDx+jcEI8P+BR97HGsjBtgw7o7Zuyp
  276. wRbwtAHKDm/qdpFUJildyDAD+SpqyD3mWD74PFoz088rNQ5ockaEqaOiH+UN
  277. J1cf15+as9aSw8TlQBW3zJuGYc0NImltcG9ydEB0ZXN0IsLBdQQQAQgAKQUC
  278. W6noZQYLCQcIAwIJEM7IjnjKLlCVBBUICgIDFgIBAhkBAhsDAh4BAAAIYA/+
  279. OgLm+Grrc/lRufGhvbBlnbNIAfbaVKPC3IeMact+KwaA9R0kH1BVMyeUg4f2
  280. 9qWakflJhO9QOLEM/J00BvKKhk3bC27sqAwP5p6gO0xDOFOyZ/yep6FiLdaw
  281. mDcdu7bKelSY+HKna428D+7q5d/zyT3z5i55cz/ONuuYg3owcZ8/foJD0j9y
  282. w3MOdTPNULes18J5S0c2AwaL2RSw5s0h5kCVCESTniT3Knw5qoyAEqZhbaR3
  283. 9gov2u2537dd34B8V7SBbRMM6lEFmXxslSMow/Mm8B7TCFLkk43BM5JTxXNc
  284. a3E0xCb9mxLIau3DPQjgMgPTvVh5zBkF+9IiYziS6gFn/hh1ipv3ow0VgfZ9
  285. hfwUHP7v5J4ib3JVe1csa0uIZMHadUCItGKgtOYmvMnL0vnT5ae7w/bFfyu9
  286. C3HiCmyBqgl1xJDkzhpG6WBDNPTxwS154DiocpAnBPsUB/xrkgVvnRd6Ic/G
  287. rPtnofLeVgnUE7OyZeYurSKLQHuCRY464t0I8bvgvvs67uA9TQRMRJoMoPap
  288. Bb44jWwlK/sJ9DfttR40pCEJtSP76g9VQGyO2M0pP1egVbiSPLdJcb+ZZMwZ
  289. cxO8nUqmd7CIEIDrYEv0tUh4k3G5zHq0I8W8MCU4b6lJ64jGvSJlIiEjZmWT
  290. jEP16rAaKH0uuXXN32eF50fHxlgEW6noZQEQAPH0lxzp/3mIRPP0mfg6JDta
  291. duAvXuw7IxlyJ/of5rsgFeTnAPiXANyqNAUUvr5CLFKvTQ6I+VcM+GgT8JDj
  292. BwA/HCS4qCuBD9Z8eyMa4i9JpIHBC+VVP5Vm7Y/K0+XvVdzSqY1bUJl0oqvZ
  293. XJjjYcpehq3E5HP4YGpJBpU7OBIEa/kQwn5KDsh0gEcDbSf9kzTAw6HsyMwv
  294. Q7dJCfwlwi/uLvlMGETPjJpe4WxlClMTJBGgDZpwis8MA5zePnpAgnVTeJwA
  295. meZLlpHFlT4Oh6eUhOjx6eoiHw9nXhCz/blLwXsuNSXUl/RjC0OH2/kbF+iP
  296. s/+1X51gni9xdxswTU5R2X0xIW+KOJvu6hO6i/YvobJeXtBS6v9iVdjaP/ZE
  297. oD+laphKHpybGUeQ6NxyjdF9dzoZ4cqbO45Cuf2+vu8FcFhPEgu0/meyBKVz
  298. 4wPZwBqVdh7YCwx+aIHxPDSHguFxRfoZsv61ZkI7zDzBXCuUWGpzPYKIpd+n
  299. KXohhk7vEMMLdpNrFHyTCQ+3gq8bSQBH5FyAGr1PvR9CNK072Ub+4O1lwe5W
  300. Dzbm0o8o3jme8CUpMGeXpVTMJeZdnB7wI65ec764mofq6WzPBilSwzSRs94k
  301. KxQJEbk9B1k56yWiCE6nq0x1DbsJi5DvMV+HnXjvp3d52D170DBsT70x8Imb
  302. ABEBAAEAD/90Y4GLhZ6AskXlCl1EdId4S7CScAcb4Oil9W14mv7tNeaCSYME
  303. kfL2syM57HxC3mce0TfijY5Pyyv1ON5IfAUin7kkivVOlBNvzEqZnPV/5M9v
  304. IVNdGrBu6GfPezSKT6KAio/IMUxovRwBSZqK6xpf9C+aCHQSu0B58C3r/GQg
  305. +qKL2X2NrYdF8xC/2EyaZ5b30eBplJMU8YmD8e0NL4alctCC2JF2DFbo7UpH
  306. z6TzSGpZ1iGlEI0dQvy76YapXT3EPYZvmLRvfR3telur0eZ8fOugeLpah9Zk
  307. HQe5RjP/fgsQ+63SSF1eUISbFBADWP6bvwDJuVBIzrDZRp4SZJ5SZodQ67hQ
  308. LATMQvf1s7HRcUFsrXGV60G5F3689iCVIUZbgqgkK0kPC/2XR19vNUEMti9R
  309. GT1sq/qCWudXLLj/4l5cKqoE5UUsGYqwKvJWvlxgfyiFX5WixGdAbFJY1OD0
  310. Ckv8Jca2mjma5daKOOYbN/5TnBeCB92VrJT1IEagEMsnXUzT/BOKLtfz+dBx
  311. AKQN/XhIq/l1FWshVh9UzPXDWNvcp1oXwg6ffWuE2J5DbskCc1mWqEAHsnUJ
  312. uaP1+Cu8K/2ncE5fOuwHsHB4THakeaJlTnHZnwpzFafuwCsX0P0cHj+0sxSd
  313. av2Y1y19JOVKGo+DiZI+nOKiGAUtGK4LXQgA+r3TldLykjCi3S44ChIO68rs
  314. Y2i+xBZsxvM7aIIF09MwQI2AhpA6mOrP32tUNnNw6RADZvS95jWuyipb5siC
  315. D7SuVWAW+/ZTk1F/NMfmJNto4pfXm1OSJ1kv+fOtfvzZnxmsgy8w0Ng0wM0d
  316. S8xKyibhtACOVJsrM7waNZvgOvqPpvBlYXAH3W1SmozxVLZirmI6YW0sKFyY
  317. k8Y4oYByZNyyFqgTO1F5eGE7bHX4G4tXr5JlEzoo5ulTqaDiC5i9XKaQ3xcW
  318. /1TppVWBt7DVb2FUBbbgC8/Tf2YAD3rRmOfKcsdhFnM2pq0jAGADkPutCEYz
  319. Lu3SGMboqjMmGYyHfQgA9weX5VBp4AX9QNBs/7DM4IstTCBq6oybVas3RTSI
  320. G1BBVqXLU7potRwNZb7ZGKa7EEN5M1iUsTqvdKZFceuMJsY4X+vmDhJu5Gaq
  321. ZaACUq4X+ZjO0qPETOrUFjlUMZHmMT0OUdiCXpIMAc7d6nPhy8KnNyjMTf9t
  322. 63IiuF2HQp9cf6Hv6MAfxE0XBzwETxOL32HafudgMFHoRC/MjHTeJWwG0zW/
  323. o9fUmT3BmqAdpR9SjrvpxpL4U685QVooDPboWlgCoQy5dicfFDwRa1co/S5D
  324. F0145Vq6hvF3DE4iIpO1KFd2ChqmK5nqMoHCpqeWG3m5gpQt4b7BYm9P2AoQ
  325. 9wgAr3vOMxXFyTCq7Hqb4l7p3bCJERAZxdLg2W0qday43b7uyRExhwJceTCY
  326. tHeDubOAD0jrIsIdQpzvPxlZJ1fmD2gKudS0VelkBd4NgF7dU62o0IhrykXF
  327. OHsAlpwR4bmlruYlg1/wntM6jArzCD5Opd1eZN7/I+DyIDiFtKRtVt1L2RRh
  328. AgnmChpBkOUOUPMC9AJF9XAIUJsZwfh5skKNM0sunVaNqp7F7tWEK0T3qbr7
  329. RoL+gk1U7S8rLGjc6YTqA/SRZb85VY/PSr8T6KF1tzI7WH0xP864kamZ0WFC
  330. oR90FD5Scpr7F6zn6yy3/EuvODSx8bjYDunEQZtXPNC96374wsFfBBgBCAAT
  331. BQJbqehlCRDOyI54yi5QlQIbDAAAX2gP+QGemWxfUQ1ELexORenVQrlVf+8j
  332. E7kglYzaga0Mz7h871nXqDr0NovxHZICvOqZppFkxEt9lkLj+RnIG9frdVXi
  333. l9oJVngWQd5S6toBelpwx1nEivL1ALTCzzqtzhbdtqkdTqeZwyWqqSWEOXG2
  334. WNeo1RzrfH7j5T/agIyUIs2FW7RKaZucC77p6Tj6XpWOnMy3+T0S2FGAEH9+
  335. C3Q1s0omqhTNT4JsP9fasaOIJUk6dsiS9Ib+Tgue9pExzDUGEWgLkwp/koqi
  336. OvOxDwFKzUCBFpol3cYXRC2Qmnx91uW/ECFJp9Xo5J30wrJlb4tQdZKQsdDc
  337. 7jaRYZoTEMlmsscneKzGGV89MGGAiTiWzyhtK6BI/J63gadXiRLiCkF44FS/
  338. Byzs+/w3kWngODHSRRzmi3e0vNPgB+135RDJA+h0ozypAai9JGhopSoiScoL
  339. oSYReN6KP5nrnBs3cfoMxuFlnXXp68G7FK1OLN5b9fxK8YBYNqicu4IewYA3
  340. lQaGlJGypa/4Z7/Py98psRzqORGFijaEgzW0dtxY2YYadqvIVpmuERhzAGb0
  341. YiaOKCOs1+1tLleaMAbRFCkq7a5SnFzoyO8aLP+IekZVZjBbgjVS3+BMmHip
  342. /79/5W/AEwZfAWwRUaFfRse8ILzd0BK2MRoQtqguqOnW/B6x/DwRd0sg
  343. =K6B/
  344. -----END PGP PRIVATE KEY BLOCK-----
  345. ');*/
  346. // Test of --encrypt
  347. //printEncrypt($gpg, 'import@test', 'Hello GPGShell!');
  348. // Test of --decrypt
  349. /*printDecrypt($gpg, 'import@test', '-----BEGIN PGP MESSAGE-----
  350. hQIMAzKV5v1wKZItARAAtHUZ/5x4hqKmoek3lx/E+UJ6Hv/LvpAA/g9FmEaFaY5i
  351. LNnrxgqXdKm2oy7ej05KF1wbfAcP3XjbXkRnu8Q8R+rgk9ukZqAwhGtdt3cULuHA
  352. BLUDVVT3U91S9Na5pvq0mJXyUEB6oupXVssQDaCTTAF90kUyGJfUn3PyfzbzR6wk
  353. ahAAqfFAMEhwvbw36t9zFLm27PgwEDsrWr1OFgLgCDxFs2Kl4PrlGBbtiz/h0few
  354. 1eq/jxyk/c7Y27cQW5SwRpd63h/suPcRG1A6FttBachc56rKgo4o2zl4pmfpqVT/
  355. z1YqwYPUkLWNw9Hztzu/urxzJPpZx64DbpJj3ZRHH/Gj3l9IHATw2Op7ALJc881o
  356. cY2+ViITmDCegiSavHkBH8KA/mLddalCAw5iclRkjX30Kp43jqMRCcGG+IN3UZAw
  357. VSOrmo1JmnPGNy8DOMCCIW3gAvlXo1+ONSLNGiQPGaRPOMhI518LHnIXVB+Uixbl
  358. Gdvx6CaaYPVWF/JJ3WnZMcUu9nvx5c+4h41xGIWUHBp2ws2357f3NMcH8wmD0WyL
  359. jlpozEh0U+zmsaM5D4LhjVIPfMgBYI9vNufLTmo8D902Mq4tJhHJyqvwCEOkjUMI
  360. ItyISo3KpXa96Hl74522n1k0Rph1TZ/BPved/8biFsoDP7aAFKNgB5X1acgmMNzS
  361. XQE2zYmBNAYf5kOSQPotWDvg4OmYNxtAwcZvCrtz+O6bSpozLcRgB7lCip130Yu+
  362. 5Odl8pioZQcCtLdNwt/upP3pD+/paf6A+xf7A0Jx0tQfTr7UQA4VMxYn7gUfNA==
  363. =QHm0
  364. -----END PGP MESSAGE-----');*/
  365. // Test of --detach-sig
  366. /*if($gpg->detachSign('./encodable.txt', './encodeble.txt.sig', 'import@test')==FALSE){
  367. echo('Exit code: '.$gpg->exitCode);
  368. }else{
  369. print 'Success';
  370. }*/
  371. /*if($gpg->verify('./encodable.txt', './encodeble.txt.sig', 'import@test')==FALSE){
  372. echo('Exit code: '.$gpg->exitCode);
  373. }else{
  374. print 'Success';
  375. }*/