xcrypt 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +106 -0
  3. data/ext/libxcrypt/AUTHORS +38 -0
  4. data/ext/libxcrypt/COPYING.LIB +502 -0
  5. data/ext/libxcrypt/ChangeLog +239 -0
  6. data/ext/libxcrypt/INSTALL +380 -0
  7. data/ext/libxcrypt/LICENSING +152 -0
  8. data/ext/libxcrypt/Makefile.am +704 -0
  9. data/ext/libxcrypt/Makefile.in +4110 -0
  10. data/ext/libxcrypt/NEWS +630 -0
  11. data/ext/libxcrypt/README +1 -0
  12. data/ext/libxcrypt/README.md +179 -0
  13. data/ext/libxcrypt/THANKS +13 -0
  14. data/ext/libxcrypt/TODO +1 -0
  15. data/ext/libxcrypt/TODO.md +100 -0
  16. data/ext/libxcrypt/aclocal.m4 +2617 -0
  17. data/ext/libxcrypt/autogen.sh +33 -0
  18. data/ext/libxcrypt/autom4te.cache/output.0 +19884 -0
  19. data/ext/libxcrypt/autom4te.cache/output.1 +19884 -0
  20. data/ext/libxcrypt/autom4te.cache/output.2 +19884 -0
  21. data/ext/libxcrypt/autom4te.cache/output.3 +19885 -0
  22. data/ext/libxcrypt/autom4te.cache/requests +714 -0
  23. data/ext/libxcrypt/autom4te.cache/traces.0 +4088 -0
  24. data/ext/libxcrypt/autom4te.cache/traces.1 +1060 -0
  25. data/ext/libxcrypt/autom4te.cache/traces.2 +4088 -0
  26. data/ext/libxcrypt/autom4te.cache/traces.3 +1060 -0
  27. data/ext/libxcrypt/build-aux/ci/ci-log-dependency-versions +79 -0
  28. data/ext/libxcrypt/build-aux/ci/ci-log-logfiles +22 -0
  29. data/ext/libxcrypt/build-aux/ci/clang-gcov-wrapper +2 -0
  30. data/ext/libxcrypt/build-aux/ci/configure-wrapper +10 -0
  31. data/ext/libxcrypt/build-aux/ci/summarize-coverage +24 -0
  32. data/ext/libxcrypt/build-aux/m4/ax_append_compile_flags.m4 +46 -0
  33. data/ext/libxcrypt/build-aux/m4/ax_append_flag.m4 +50 -0
  34. data/ext/libxcrypt/build-aux/m4/ax_check_compile_flag.m4 +53 -0
  35. data/ext/libxcrypt/build-aux/m4/ax_check_vscript.m4 +142 -0
  36. data/ext/libxcrypt/build-aux/m4/ax_gcc_func_attribute.m4 +246 -0
  37. data/ext/libxcrypt/build-aux/m4/ax_require_defined.m4 +37 -0
  38. data/ext/libxcrypt/build-aux/m4/ax_valgrind_check.m4 +239 -0
  39. data/ext/libxcrypt/build-aux/m4/libtool.m4 +8488 -0
  40. data/ext/libxcrypt/build-aux/m4/ltoptions.m4 +467 -0
  41. data/ext/libxcrypt/build-aux/m4/ltsugar.m4 +124 -0
  42. data/ext/libxcrypt/build-aux/m4/ltversion.m4 +24 -0
  43. data/ext/libxcrypt/build-aux/m4/lt~obsolete.m4 +99 -0
  44. data/ext/libxcrypt/build-aux/m4/pkg_compat.m4 +88 -0
  45. data/ext/libxcrypt/build-aux/m4/zw_alignment.m4 +90 -0
  46. data/ext/libxcrypt/build-aux/m4/zw_automodern.m4 +307 -0
  47. data/ext/libxcrypt/build-aux/m4/zw_detect_asan.m4 +24 -0
  48. data/ext/libxcrypt/build-aux/m4/zw_endianness.m4 +152 -0
  49. data/ext/libxcrypt/build-aux/m4/zw_ld_wrap.m4 +47 -0
  50. data/ext/libxcrypt/build-aux/m4/zw_prog_perl.m4 +40 -0
  51. data/ext/libxcrypt/build-aux/m4/zw_simple_warnings.m4 +150 -0
  52. data/ext/libxcrypt/build-aux/m4/zw_static_assert.m4 +68 -0
  53. data/ext/libxcrypt/build-aux/m4-autogen/compile +364 -0
  54. data/ext/libxcrypt/build-aux/m4-autogen/config.guess +1815 -0
  55. data/ext/libxcrypt/build-aux/m4-autogen/config.sub +2354 -0
  56. data/ext/libxcrypt/build-aux/m4-autogen/depcomp +792 -0
  57. data/ext/libxcrypt/build-aux/m4-autogen/install-sh +541 -0
  58. data/ext/libxcrypt/build-aux/m4-autogen/ltmain.sh +11524 -0
  59. data/ext/libxcrypt/build-aux/m4-autogen/missing +236 -0
  60. data/ext/libxcrypt/build-aux/m4-autogen/test-driver +160 -0
  61. data/ext/libxcrypt/build-aux/scripts/BuildCommon.pm +712 -0
  62. data/ext/libxcrypt/build-aux/scripts/check-perlcritic-config +76 -0
  63. data/ext/libxcrypt/build-aux/scripts/compute-symver-floor +116 -0
  64. data/ext/libxcrypt/build-aux/scripts/expand-selected-hashes +80 -0
  65. data/ext/libxcrypt/build-aux/scripts/gen-crypt-h +131 -0
  66. data/ext/libxcrypt/build-aux/scripts/gen-crypt-hashes-h +141 -0
  67. data/ext/libxcrypt/build-aux/scripts/gen-crypt-symbol-vers-h +150 -0
  68. data/ext/libxcrypt/build-aux/scripts/gen-libcrypt-map +67 -0
  69. data/ext/libxcrypt/build-aux/scripts/move-if-change +84 -0
  70. data/ext/libxcrypt/build-aux/scripts/skip-if-exec-format-error +78 -0
  71. data/ext/libxcrypt/codecov.yml +4 -0
  72. data/ext/libxcrypt/config.h.in +303 -0
  73. data/ext/libxcrypt/configure +19885 -0
  74. data/ext/libxcrypt/configure.ac +549 -0
  75. data/ext/libxcrypt/doc/crypt.3 +512 -0
  76. data/ext/libxcrypt/doc/crypt.5 +343 -0
  77. data/ext/libxcrypt/doc/crypt_checksalt.3 +106 -0
  78. data/ext/libxcrypt/doc/crypt_gensalt.3 +285 -0
  79. data/ext/libxcrypt/doc/crypt_gensalt_ra.3 +1 -0
  80. data/ext/libxcrypt/doc/crypt_gensalt_rn.3 +1 -0
  81. data/ext/libxcrypt/doc/crypt_preferred_method.3 +68 -0
  82. data/ext/libxcrypt/doc/crypt_r.3 +1 -0
  83. data/ext/libxcrypt/doc/crypt_ra.3 +1 -0
  84. data/ext/libxcrypt/doc/crypt_rn.3 +1 -0
  85. data/ext/libxcrypt/lib/alg-des-tables.c +3858 -0
  86. data/ext/libxcrypt/lib/alg-des.c +269 -0
  87. data/ext/libxcrypt/lib/alg-des.h +74 -0
  88. data/ext/libxcrypt/lib/alg-gost3411-2012-const.h +313 -0
  89. data/ext/libxcrypt/lib/alg-gost3411-2012-core.c +238 -0
  90. data/ext/libxcrypt/lib/alg-gost3411-2012-core.h +51 -0
  91. data/ext/libxcrypt/lib/alg-gost3411-2012-hmac.c +78 -0
  92. data/ext/libxcrypt/lib/alg-gost3411-2012-hmac.h +46 -0
  93. data/ext/libxcrypt/lib/alg-gost3411-2012-precalc.h +1426 -0
  94. data/ext/libxcrypt/lib/alg-gost3411-2012-ref.h +67 -0
  95. data/ext/libxcrypt/lib/alg-hmac-sha1.c +140 -0
  96. data/ext/libxcrypt/lib/alg-hmac-sha1.h +35 -0
  97. data/ext/libxcrypt/lib/alg-md4.c +270 -0
  98. data/ext/libxcrypt/lib/alg-md4.h +43 -0
  99. data/ext/libxcrypt/lib/alg-md5.c +291 -0
  100. data/ext/libxcrypt/lib/alg-md5.h +43 -0
  101. data/ext/libxcrypt/lib/alg-sha1.c +288 -0
  102. data/ext/libxcrypt/lib/alg-sha1.h +34 -0
  103. data/ext/libxcrypt/lib/alg-sha256.c +630 -0
  104. data/ext/libxcrypt/lib/alg-sha256.h +123 -0
  105. data/ext/libxcrypt/lib/alg-sha512.c +311 -0
  106. data/ext/libxcrypt/lib/alg-sha512.h +81 -0
  107. data/ext/libxcrypt/lib/alg-sm3-hmac.c +113 -0
  108. data/ext/libxcrypt/lib/alg-sm3-hmac.h +42 -0
  109. data/ext/libxcrypt/lib/alg-sm3.c +449 -0
  110. data/ext/libxcrypt/lib/alg-sm3.h +63 -0
  111. data/ext/libxcrypt/lib/alg-yescrypt-common.c +713 -0
  112. data/ext/libxcrypt/lib/alg-yescrypt-opt.c +1568 -0
  113. data/ext/libxcrypt/lib/alg-yescrypt-platform.c +106 -0
  114. data/ext/libxcrypt/lib/alg-yescrypt.h +360 -0
  115. data/ext/libxcrypt/lib/byteorder.h +164 -0
  116. data/ext/libxcrypt/lib/crypt-bcrypt.c +1061 -0
  117. data/ext/libxcrypt/lib/crypt-des-obsolete.c +215 -0
  118. data/ext/libxcrypt/lib/crypt-des.c +491 -0
  119. data/ext/libxcrypt/lib/crypt-gensalt-static.c +40 -0
  120. data/ext/libxcrypt/lib/crypt-gost-yescrypt.c +182 -0
  121. data/ext/libxcrypt/lib/crypt-md5.c +232 -0
  122. data/ext/libxcrypt/lib/crypt-nthash.c +134 -0
  123. data/ext/libxcrypt/lib/crypt-obsolete.h +40 -0
  124. data/ext/libxcrypt/lib/crypt-pbkdf1-sha1.c +260 -0
  125. data/ext/libxcrypt/lib/crypt-port.h +514 -0
  126. data/ext/libxcrypt/lib/crypt-scrypt.c +247 -0
  127. data/ext/libxcrypt/lib/crypt-sha256.c +308 -0
  128. data/ext/libxcrypt/lib/crypt-sha512.c +323 -0
  129. data/ext/libxcrypt/lib/crypt-sm3-yescrypt.c +189 -0
  130. data/ext/libxcrypt/lib/crypt-sm3.c +308 -0
  131. data/ext/libxcrypt/lib/crypt-static.c +44 -0
  132. data/ext/libxcrypt/lib/crypt-sunmd5.c +314 -0
  133. data/ext/libxcrypt/lib/crypt-yescrypt.c +177 -0
  134. data/ext/libxcrypt/lib/crypt.c +421 -0
  135. data/ext/libxcrypt/lib/crypt.h.in +249 -0
  136. data/ext/libxcrypt/lib/gen-des-tables.c +363 -0
  137. data/ext/libxcrypt/lib/hashes.conf +59 -0
  138. data/ext/libxcrypt/lib/libcrypt.map.in +48 -0
  139. data/ext/libxcrypt/lib/libcrypt.minver +97 -0
  140. data/ext/libxcrypt/lib/libxcrypt.pc.in +15 -0
  141. data/ext/libxcrypt/lib/util-base64.c +26 -0
  142. data/ext/libxcrypt/lib/util-gensalt-sha.c +88 -0
  143. data/ext/libxcrypt/lib/util-get-random-bytes.c +154 -0
  144. data/ext/libxcrypt/lib/util-make-failure-token.c +48 -0
  145. data/ext/libxcrypt/lib/util-xbzero.c +43 -0
  146. data/ext/libxcrypt/lib/util-xstrcpy.c +42 -0
  147. data/ext/libxcrypt/lib/xcrypt.h.in +58 -0
  148. data/ext/libxcrypt/libxcrypt.spec.rpkg +481 -0
  149. data/ext/libxcrypt/rpkg.conf +2 -0
  150. data/ext/libxcrypt/rpkg.macros +86 -0
  151. data/ext/libxcrypt/test/TestCommon.pm +326 -0
  152. data/ext/libxcrypt/test/alg-des.c +80 -0
  153. data/ext/libxcrypt/test/alg-gost3411-2012-hmac.c +90 -0
  154. data/ext/libxcrypt/test/alg-gost3411-2012.c +191 -0
  155. data/ext/libxcrypt/test/alg-hmac-sha1.c +187 -0
  156. data/ext/libxcrypt/test/alg-md4.c +111 -0
  157. data/ext/libxcrypt/test/alg-md5.c +134 -0
  158. data/ext/libxcrypt/test/alg-pbkdf-hmac-sha256.c +269 -0
  159. data/ext/libxcrypt/test/alg-sha1.c +111 -0
  160. data/ext/libxcrypt/test/alg-sha256.c +141 -0
  161. data/ext/libxcrypt/test/alg-sha512.c +170 -0
  162. data/ext/libxcrypt/test/alg-sm3-hmac.c +149 -0
  163. data/ext/libxcrypt/test/alg-sm3.c +168 -0
  164. data/ext/libxcrypt/test/alg-yescrypt.c +466 -0
  165. data/ext/libxcrypt/test/badsalt.c +726 -0
  166. data/ext/libxcrypt/test/badsetting.c +350 -0
  167. data/ext/libxcrypt/test/byteorder.c +254 -0
  168. data/ext/libxcrypt/test/checksalt.c +265 -0
  169. data/ext/libxcrypt/test/compile-strong-alias.c +43 -0
  170. data/ext/libxcrypt/test/crypt-badargs.c +392 -0
  171. data/ext/libxcrypt/test/crypt-gost-yescrypt.c +149 -0
  172. data/ext/libxcrypt/test/crypt-nested-call.c +180 -0
  173. data/ext/libxcrypt/test/crypt-sm3-yescrypt.c +149 -0
  174. data/ext/libxcrypt/test/crypt-too-long-phrase.c +157 -0
  175. data/ext/libxcrypt/test/des-cases.h +196 -0
  176. data/ext/libxcrypt/test/des-obsolete.c +206 -0
  177. data/ext/libxcrypt/test/des-obsolete_r.c +207 -0
  178. data/ext/libxcrypt/test/explicit-bzero.c +334 -0
  179. data/ext/libxcrypt/test/gensalt-bcrypt_x.c +54 -0
  180. data/ext/libxcrypt/test/gensalt-extradata.c +246 -0
  181. data/ext/libxcrypt/test/gensalt-nested-call.c +126 -0
  182. data/ext/libxcrypt/test/gensalt-nthash.c +65 -0
  183. data/ext/libxcrypt/test/gensalt.c +599 -0
  184. data/ext/libxcrypt/test/getrandom-fallbacks.c +295 -0
  185. data/ext/libxcrypt/test/getrandom-interface.c +211 -0
  186. data/ext/libxcrypt/test/ka-table-gen.py +945 -0
  187. data/ext/libxcrypt/test/ka-table.inc +5849 -0
  188. data/ext/libxcrypt/test/ka-tester.c +240 -0
  189. data/ext/libxcrypt/test/preferred-method.c +133 -0
  190. data/ext/libxcrypt/test/short-outbuf.c +119 -0
  191. data/ext/libxcrypt/test/special-char-salt.c +1160 -0
  192. data/ext/libxcrypt/test/symbols-compat.pl +137 -0
  193. data/ext/libxcrypt/test/symbols-renames.pl +107 -0
  194. data/ext/libxcrypt/test/symbols-static.pl +87 -0
  195. data/ext/xcrypt/xcrypt.c +9 -0
  196. data/lib/xcrypt/ffi.rb +76 -0
  197. data/lib/xcrypt/version.rb +5 -0
  198. data/lib/xcrypt.rb +89 -0
  199. metadata +267 -0
@@ -0,0 +1,196 @@
1
+ /*
2
+ * These test vectors for the DES primitive block cipher are derived
3
+ * from Phil Karns' PD DES package. They are used to test both the
4
+ * raw encryption primitive (des.c) and the obsolete setkey/encrypt
5
+ * API that wraps it (des-obsolete.c).
6
+ *
7
+ * @(#)cert.c 1.8 11 Aug 1996
8
+ */
9
+
10
+ #ifndef _CRYPT_TEST_DES_CASES_H
11
+ #define _CRYPT_TEST_DES_CASES_H 1
12
+
13
+ struct des_testcase
14
+ {
15
+ unsigned char key[8 + 1];
16
+ unsigned char plain[8 + 1];
17
+ unsigned char answer[8 + 1];
18
+ };
19
+
20
+ static const struct des_testcase des_testcases[] =
21
+ {
22
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x95\xf8\xa5\xe5\xdd\x31\xd9\x00", "\x80\x00\x00\x00\x00\x00\x00\x00" },
23
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xdd\x7f\x12\x1c\xa5\x01\x56\x19", "\x40\x00\x00\x00\x00\x00\x00\x00" },
24
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x2e\x86\x53\x10\x4f\x38\x34\xea", "\x20\x00\x00\x00\x00\x00\x00\x00" },
25
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x4b\xd3\x88\xff\x6c\xd8\x1d\x4f", "\x10\x00\x00\x00\x00\x00\x00\x00" },
26
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x20\xb9\xe7\x67\xb2\xfb\x14\x56", "\x08\x00\x00\x00\x00\x00\x00\x00" },
27
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x55\x57\x93\x80\xd7\x71\x38\xef", "\x04\x00\x00\x00\x00\x00\x00\x00" },
28
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x6c\xc5\xde\xfa\xaf\x04\x51\x2f", "\x02\x00\x00\x00\x00\x00\x00\x00" },
29
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x0d\x9f\x27\x9b\xa5\xd8\x72\x60", "\x01\x00\x00\x00\x00\x00\x00\x00" },
30
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xd9\x03\x1b\x02\x71\xbd\x5a\x0a", "\x00\x80\x00\x00\x00\x00\x00\x00" },
31
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x42\x42\x50\xb3\x7c\x3d\xd9\x51", "\x00\x40\x00\x00\x00\x00\x00\x00" },
32
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xb8\x06\x1b\x7e\xcd\x9a\x21\xe5", "\x00\x20\x00\x00\x00\x00\x00\x00" },
33
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xf1\x5d\x0f\x28\x6b\x65\xbd\x28", "\x00\x10\x00\x00\x00\x00\x00\x00" },
34
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xad\xd0\xcc\x8d\x6e\x5d\xeb\xa1", "\x00\x08\x00\x00\x00\x00\x00\x00" },
35
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe6\xd5\xf8\x27\x52\xad\x63\xd1", "\x00\x04\x00\x00\x00\x00\x00\x00" },
36
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xec\xbf\xe3\xbd\x3f\x59\x1a\x5e", "\x00\x02\x00\x00\x00\x00\x00\x00" },
37
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xf3\x56\x83\x43\x79\xd1\x65\xcd", "\x00\x01\x00\x00\x00\x00\x00\x00" },
38
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x2b\x9f\x98\x2f\x20\x03\x7f\xa9", "\x00\x00\x80\x00\x00\x00\x00\x00" },
39
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x88\x9d\xe0\x68\xa1\x6f\x0b\xe6", "\x00\x00\x40\x00\x00\x00\x00\x00" },
40
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe1\x9e\x27\x5d\x84\x6a\x12\x98", "\x00\x00\x20\x00\x00\x00\x00\x00" },
41
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x32\x9a\x8e\xd5\x23\xd7\x1a\xec", "\x00\x00\x10\x00\x00\x00\x00\x00" },
42
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe7\xfc\xe2\x25\x57\xd2\x3c\x97", "\x00\x00\x08\x00\x00\x00\x00\x00" },
43
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x12\xa9\xf5\x81\x7f\xf2\xd6\x5d", "\x00\x00\x04\x00\x00\x00\x00\x00" },
44
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xa4\x84\xc3\xad\x38\xdc\x9c\x19", "\x00\x00\x02\x00\x00\x00\x00\x00" },
45
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xfb\xe0\x0a\x8a\x1e\xf8\xad\x72", "\x00\x00\x01\x00\x00\x00\x00\x00" },
46
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x75\x0d\x07\x94\x07\x52\x13\x63", "\x00\x00\x00\x80\x00\x00\x00\x00" },
47
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x64\xfe\xed\x9c\x72\x4c\x2f\xaf", "\x00\x00\x00\x40\x00\x00\x00\x00" },
48
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xf0\x2b\x26\x3b\x32\x8e\x2b\x60", "\x00\x00\x00\x20\x00\x00\x00\x00" },
49
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x9d\x64\x55\x5a\x9a\x10\xb8\x52", "\x00\x00\x00\x10\x00\x00\x00\x00" },
50
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xd1\x06\xff\x0b\xed\x52\x55\xd7", "\x00\x00\x00\x08\x00\x00\x00\x00" },
51
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe1\x65\x2c\x6b\x13\x8c\x64\xa5", "\x00\x00\x00\x04\x00\x00\x00\x00" },
52
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe4\x28\x58\x11\x86\xec\x8f\x46", "\x00\x00\x00\x02\x00\x00\x00\x00" },
53
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xae\xb5\xf5\xed\xe2\x2d\x1a\x36", "\x00\x00\x00\x01\x00\x00\x00\x00" },
54
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe9\x43\xd7\x56\x8a\xec\x0c\x5c", "\x00\x00\x00\x00\x80\x00\x00\x00" },
55
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xdf\x98\xc8\x27\x6f\x54\xb0\x4b", "\x00\x00\x00\x00\x40\x00\x00\x00" },
56
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xb1\x60\xe4\x68\x0f\x6c\x69\x6f", "\x00\x00\x00\x00\x20\x00\x00\x00" },
57
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xfa\x07\x52\xb0\x7d\x9c\x4a\xb8", "\x00\x00\x00\x00\x10\x00\x00\x00" },
58
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xca\x3a\x2b\x03\x6d\xbc\x85\x02", "\x00\x00\x00\x00\x08\x00\x00\x00" },
59
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x5e\x09\x05\x51\x7b\xb5\x9b\xcf", "\x00\x00\x00\x00\x04\x00\x00\x00" },
60
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x81\x4e\xeb\x3b\x91\xd9\x07\x26", "\x00\x00\x00\x00\x02\x00\x00\x00" },
61
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x4d\x49\xdb\x15\x32\x91\x9c\x9f", "\x00\x00\x00\x00\x01\x00\x00\x00" },
62
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x25\xeb\x5f\xc3\xf8\xcf\x06\x21", "\x00\x00\x00\x00\x00\x80\x00\x00" },
63
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xab\x6a\x20\xc0\x62\x0d\x1c\x6f", "\x00\x00\x00\x00\x00\x40\x00\x00" },
64
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x79\xe9\x0d\xbc\x98\xf9\x2c\xca", "\x00\x00\x00\x00\x00\x20\x00\x00" },
65
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x86\x6e\xce\xdd\x80\x72\xbb\x0e", "\x00\x00\x00\x00\x00\x10\x00\x00" },
66
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x8b\x54\x53\x6f\x2f\x3e\x64\xa8", "\x00\x00\x00\x00\x00\x08\x00\x00" },
67
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xea\x51\xd3\x97\x55\x95\xb8\x6b", "\x00\x00\x00\x00\x00\x04\x00\x00" },
68
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xca\xff\xc6\xac\x45\x42\xde\x31", "\x00\x00\x00\x00\x00\x02\x00\x00" },
69
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x8d\xd4\x5a\x2d\xdf\x90\x79\x6c", "\x00\x00\x00\x00\x00\x01\x00\x00" },
70
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x10\x29\xd5\x5e\x88\x0e\xc2\xd0", "\x00\x00\x00\x00\x00\x00\x80\x00" },
71
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x5d\x86\xcb\x23\x63\x9d\xbe\xa9", "\x00\x00\x00\x00\x00\x00\x40\x00" },
72
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x1d\x1c\xa8\x53\xae\x7c\x0c\x5f", "\x00\x00\x00\x00\x00\x00\x20\x00" },
73
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xce\x33\x23\x29\x24\x8f\x32\x28", "\x00\x00\x00\x00\x00\x00\x10\x00" },
74
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x84\x05\xd1\xab\xe2\x4f\xb9\x42", "\x00\x00\x00\x00\x00\x00\x08\x00" },
75
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe6\x43\xd7\x80\x90\xca\x42\x07", "\x00\x00\x00\x00\x00\x00\x04\x00" },
76
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x48\x22\x1b\x99\x37\x74\x8a\x23", "\x00\x00\x00\x00\x00\x00\x02\x00" },
77
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xdd\x7c\x0b\xbd\x61\xfa\xfd\x54", "\x00\x00\x00\x00\x00\x00\x01\x00" },
78
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x2f\xbc\x29\x1a\x57\x0d\xb5\xc4", "\x00\x00\x00\x00\x00\x00\x00\x80" },
79
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xe0\x7c\x30\xd7\xe4\xe2\x6e\x12", "\x00\x00\x00\x00\x00\x00\x00\x40" },
80
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x09\x53\xe2\x25\x8e\x8e\x90\xa1", "\x00\x00\x00\x00\x00\x00\x00\x20" },
81
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x5b\x71\x1b\xc4\xce\xeb\xf2\xee", "\x00\x00\x00\x00\x00\x00\x00\x10" },
82
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xcc\x08\x3f\x1e\x6d\x9e\x85\xf6", "\x00\x00\x00\x00\x00\x00\x00\x08" },
83
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\xd2\xfd\x88\x67\xd5\x0d\x2d\xfe", "\x00\x00\x00\x00\x00\x00\x00\x04" },
84
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x06\xe7\xea\x22\xce\x92\x70\x8f", "\x00\x00\x00\x00\x00\x00\x00\x02" },
85
+ { "\x01\x01\x01\x01\x01\x01\x01\x01", "\x16\x6b\x40\xb4\x4a\xba\x4b\xd6", "\x00\x00\x00\x00\x00\x00\x00\x01" },
86
+ { "\x80\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x95\xa8\xd7\x28\x13\xda\xa9\x4d" },
87
+ { "\x40\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x0e\xec\x14\x87\xdd\x8c\x26\xd5" },
88
+ { "\x20\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x7a\xd1\x6f\xfb\x79\xc4\x59\x26" },
89
+ { "\x10\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xd3\x74\x62\x94\xca\x6a\x6c\xf3" },
90
+ { "\x08\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x80\x9f\x5f\x87\x3c\x1f\xd7\x61" },
91
+ { "\x04\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xc0\x2f\xaf\xfe\xc9\x89\xd1\xfc" },
92
+ { "\x02\x01\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x46\x15\xaa\x1d\x33\xe7\x2f\x10" },
93
+ { "\x01\x80\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x20\x55\x12\x33\x50\xc0\x08\x58" },
94
+ { "\x01\x40\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xdf\x3b\x99\xd6\x57\x73\x97\xc8" },
95
+ { "\x01\x20\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x31\xfe\x17\x36\x9b\x52\x88\xc9" },
96
+ { "\x01\x10\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xdf\xdd\x3c\xc6\x4d\xae\x16\x42" },
97
+ { "\x01\x08\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x17\x8c\x83\xce\x2b\x39\x9d\x94" },
98
+ { "\x01\x04\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x50\xf6\x36\x32\x4a\x9b\x7f\x80" },
99
+ { "\x01\x02\x01\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xa8\x46\x8e\xe3\xbc\x18\xf0\x6d" },
100
+ { "\x01\x01\x80\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xa2\xdc\x9e\x92\xfd\x3c\xde\x92" },
101
+ { "\x01\x01\x40\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xca\xc0\x9f\x79\x7d\x03\x12\x87" },
102
+ { "\x01\x01\x20\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x90\xba\x68\x0b\x22\xae\xb5\x25" },
103
+ { "\x01\x01\x10\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xce\x7a\x24\xf3\x50\xe2\x80\xb6" },
104
+ { "\x01\x01\x08\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x88\x2b\xff\x0a\xa0\x1a\x0b\x87" },
105
+ { "\x01\x01\x04\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x25\x61\x02\x88\x92\x45\x11\xc2" },
106
+ { "\x01\x01\x02\x01\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xc7\x15\x16\xc2\x9c\x75\xd1\x70" },
107
+ { "\x01\x01\x01\x80\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x51\x99\xc2\x9a\x52\xc9\xf0\x59" },
108
+ { "\x01\x01\x01\x40\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xc2\x2f\x0a\x29\x4a\x71\xf2\x9f" },
109
+ { "\x01\x01\x01\x20\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xee\x37\x14\x83\x71\x4c\x02\xea" },
110
+ { "\x01\x01\x01\x10\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xa8\x1f\xbd\x44\x8f\x9e\x52\x2f" },
111
+ { "\x01\x01\x01\x08\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x4f\x64\x4c\x92\xe1\x92\xdf\xed" },
112
+ { "\x01\x01\x01\x04\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x1a\xfa\x9a\x66\xa6\xdf\x92\xae" },
113
+ { "\x01\x01\x01\x02\x01\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xb3\xc1\xcc\x71\x5c\xb8\x79\xd8" },
114
+ { "\x01\x01\x01\x01\x80\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x19\xd0\x32\xe6\x4a\xb0\xbd\x8b" },
115
+ { "\x01\x01\x01\x01\x40\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x3c\xfa\xa7\xa7\xdc\x87\x20\xdc" },
116
+ { "\x01\x01\x01\x01\x20\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xb7\x26\x5f\x7f\x44\x7a\xc6\xf3" },
117
+ { "\x01\x01\x01\x01\x10\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x9d\xb7\x3b\x3c\x0d\x16\x3f\x54" },
118
+ { "\x01\x01\x01\x01\x08\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x81\x81\xb6\x5b\xab\xf4\xa9\x75" },
119
+ { "\x01\x01\x01\x01\x04\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x93\xc9\xb6\x40\x42\xea\xa2\x40" },
120
+ { "\x01\x01\x01\x01\x02\x01\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x55\x70\x53\x08\x29\x70\x55\x92" },
121
+ { "\x01\x01\x01\x01\x01\x80\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x86\x38\x80\x9e\x87\x87\x87\xa0" },
122
+ { "\x01\x01\x01\x01\x01\x40\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x41\xb9\xa7\x9a\xf7\x9a\xc2\x08" },
123
+ { "\x01\x01\x01\x01\x01\x20\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x7a\x9b\xe4\x2f\x20\x09\xa8\x92" },
124
+ { "\x01\x01\x01\x01\x01\x10\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x29\x03\x8d\x56\xba\x6d\x27\x45" },
125
+ { "\x01\x01\x01\x01\x01\x08\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x54\x95\xc6\xab\xf1\xe5\xdf\x51" },
126
+ { "\x01\x01\x01\x01\x01\x04\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xae\x13\xdb\xd5\x61\x48\x89\x33" },
127
+ { "\x01\x01\x01\x01\x01\x02\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x02\x4d\x1f\xfa\x89\x04\xe3\x89" },
128
+ { "\x01\x01\x01\x01\x01\x01\x80\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xd1\x39\x97\x12\xf9\x9b\xf0\x2e" },
129
+ { "\x01\x01\x01\x01\x01\x01\x40\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x14\xc1\xd7\xc1\xcf\xfe\xc7\x9e" },
130
+ { "\x01\x01\x01\x01\x01\x01\x20\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x1d\xe5\x27\x9d\xae\x3b\xed\x6f" },
131
+ { "\x01\x01\x01\x01\x01\x01\x10\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xe9\x41\xa3\x3f\x85\x50\x13\x03" },
132
+ { "\x01\x01\x01\x01\x01\x01\x08\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xda\x99\xdb\xbc\x9a\x03\xf3\x79" },
133
+ { "\x01\x01\x01\x01\x01\x01\x04\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xb7\xfc\x92\xf9\x1d\x8e\x92\xe9" },
134
+ { "\x01\x01\x01\x01\x01\x01\x02\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xae\x8e\x5c\xaa\x3c\xa0\x4e\x85" },
135
+ { "\x01\x01\x01\x01\x01\x01\x01\x80", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x9c\xc6\x2d\xf4\x3b\x6e\xed\x74" },
136
+ { "\x01\x01\x01\x01\x01\x01\x01\x40", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xd8\x63\xdb\xb5\xc5\x9a\x91\xa0" },
137
+ { "\x01\x01\x01\x01\x01\x01\x01\x20", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xa1\xab\x21\x90\x54\x5b\x91\xd7" },
138
+ { "\x01\x01\x01\x01\x01\x01\x01\x10", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x08\x75\x04\x1e\x64\xc5\x70\xf7" },
139
+ { "\x01\x01\x01\x01\x01\x01\x01\x08", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x5a\x59\x45\x28\xbe\xbe\xf1\xcc" },
140
+ { "\x01\x01\x01\x01\x01\x01\x01\x04", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xfc\xdb\x32\x91\xde\x21\xf0\xc0" },
141
+ { "\x01\x01\x01\x01\x01\x01\x01\x02", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x86\x9e\xfd\x7f\x9f\x26\x5a\x09" },
142
+ { "\x10\x46\x91\x34\x89\x98\x01\x31", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x88\xd5\x5e\x54\xf5\x4c\x97\xb4" },
143
+ { "\x10\x07\x10\x34\x89\x98\x80\x20", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x0c\x0c\xc0\x0c\x83\xea\x48\xfd" },
144
+ { "\x10\x07\x10\x34\xc8\x98\x01\x20", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x83\xbc\x8e\xf3\xa6\x57\x01\x83" },
145
+ { "\x10\x46\x10\x34\x89\x98\x80\x20", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xdf\x72\x5d\xca\xd9\x4e\xa2\xe9" },
146
+ { "\x10\x86\x91\x15\x19\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xe6\x52\xb5\x3b\x55\x0b\xe8\xb0" },
147
+ { "\x10\x86\x91\x15\x19\x58\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xaf\x52\x71\x20\xc4\x85\xcb\xb0" },
148
+ { "\x51\x07\xb0\x15\x19\x58\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x0f\x04\xce\x39\x3d\xb9\x26\xd5" },
149
+ { "\x10\x07\xb0\x15\x19\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xc9\xf0\x0f\xfc\x74\x07\x90\x67" },
150
+ { "\x31\x07\x91\x54\x98\x08\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x7c\xfd\x82\xa5\x93\x25\x2b\x4e" },
151
+ { "\x31\x07\x91\x94\x98\x08\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xcb\x49\xa2\xf9\xe9\x13\x63\xe3" },
152
+ { "\x10\x07\x91\x15\xb9\x08\x01\x40", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x00\xb5\x88\xbe\x70\xd2\x3f\x56" },
153
+ { "\x31\x07\x91\x15\x98\x08\x01\x40", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x40\x6a\x9a\x6a\xb4\x33\x99\xae" },
154
+ { "\x10\x07\xd0\x15\x89\x98\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x6c\xb7\x73\x61\x1d\xca\x9a\xda" },
155
+ { "\x91\x07\x91\x15\x89\x98\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x67\xfd\x21\xc1\x7d\xbb\x5d\x70" },
156
+ { "\x91\x07\xd0\x15\x89\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x95\x92\xcb\x41\x10\x43\x07\x87" },
157
+ { "\x10\x07\xd0\x15\x98\x98\x01\x20", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xa6\xb7\xff\x68\xa3\x18\xdd\xd3" },
158
+ { "\x10\x07\x94\x04\x98\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x4d\x10\x21\x96\xc9\x14\xca\x16" },
159
+ { "\x01\x07\x91\x04\x91\x19\x04\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x2d\xfa\x9f\x45\x73\x59\x49\x65" },
160
+ { "\x01\x07\x91\x04\x91\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xb4\x66\x04\x81\x6c\x0e\x07\x74" },
161
+ { "\x01\x07\x94\x04\x91\x19\x04\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x6e\x7e\x62\x21\xa4\xf3\x4e\x87" },
162
+ { "\x19\x07\x92\x10\x98\x1a\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xaa\x85\xe7\x46\x43\x23\x31\x99" },
163
+ { "\x10\x07\x91\x19\x98\x19\x08\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x2e\x5a\x19\xdb\x4d\x19\x62\xd6" },
164
+ { "\x10\x07\x91\x19\x98\x1a\x08\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x23\xa8\x66\xa8\x09\xd3\x08\x94" },
165
+ { "\x10\x07\x92\x10\x98\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xd8\x12\xd9\x61\xf0\x17\xd3\x20" },
166
+ { "\x10\x07\x91\x15\x98\x19\x01\x0b", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x05\x56\x05\x81\x6e\x58\x60\x8f" },
167
+ { "\x10\x04\x80\x15\x98\x19\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xab\xd8\x8e\x8b\x1b\x77\x16\xf1" },
168
+ { "\x10\x04\x80\x15\x98\x19\x01\x02", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x53\x7a\xc9\x5b\xe6\x9d\xa1\xe1" },
169
+ { "\x10\x04\x80\x15\x98\x19\x01\x08", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xae\xd0\xf6\xae\x3c\x25\xcd\xd8" },
170
+ { "\x10\x02\x91\x15\x98\x10\x01\x04", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xb3\xe3\x5a\x5e\xe5\x3e\x7b\x8d" },
171
+ { "\x10\x02\x91\x15\x98\x19\x01\x04", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x61\xc7\x9c\x71\x92\x1a\x2e\xf8" },
172
+ { "\x10\x02\x91\x15\x98\x10\x02\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\xe2\xf5\x72\x8f\x09\x95\x01\x3c" },
173
+ { "\x10\x02\x91\x16\x98\x10\x01\x01", "\x00\x00\x00\x00\x00\x00\x00\x00", "\x1a\xea\xc3\x9a\x61\xf0\xa4\x64" },
174
+ { "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57", "\x01\xa1\xd6\xd0\x39\x77\x67\x42", "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b" },
175
+ { "\x01\x31\xd9\x61\x9d\xc1\x37\x6e", "\x5c\xd5\x4c\xa8\x3d\xef\x57\xda", "\x7a\x38\x9d\x10\x35\x4b\xd2\x71" },
176
+ { "\x07\xa1\x13\x3e\x4a\x0b\x26\x86", "\x02\x48\xd4\x38\x06\xf6\x71\x72", "\x86\x8e\xbb\x51\xca\xb4\x59\x9a" },
177
+ { "\x38\x49\x67\x4c\x26\x02\x31\x9e", "\x51\x45\x4b\x58\x2d\xdf\x44\x0a", "\x71\x78\x87\x6e\x01\xf1\x9b\x2a" },
178
+ { "\x04\xb9\x15\xba\x43\xfe\xb5\xb6", "\x42\xfd\x44\x30\x59\x57\x7f\xa2", "\xaf\x37\xfb\x42\x1f\x8c\x40\x95" },
179
+ { "\x01\x13\xb9\x70\xfd\x34\xf2\xce", "\x05\x9b\x5e\x08\x51\xcf\x14\x3a", "\x86\xa5\x60\xf1\x0e\xc6\xd8\x5b" },
180
+ { "\x01\x70\xf1\x75\x46\x8f\xb5\xe6", "\x07\x56\xd8\xe0\x77\x47\x61\xd2", "\x0c\xd3\xda\x02\x00\x21\xdc\x09" },
181
+ { "\x43\x29\x7f\xad\x38\xe3\x73\xfe", "\x76\x25\x14\xb8\x29\xbf\x48\x6a", "\xea\x67\x6b\x2c\xb7\xdb\x2b\x7a" },
182
+ { "\x07\xa7\x13\x70\x45\xda\x2a\x16", "\x3b\xdd\x11\x90\x49\x37\x28\x02", "\xdf\xd6\x4a\x81\x5c\xaf\x1a\x0f" },
183
+ { "\x04\x68\x91\x04\xc2\xfd\x3b\x2f", "\x26\x95\x5f\x68\x35\xaf\x60\x9a", "\x5c\x51\x3c\x9c\x48\x86\xc0\x88" },
184
+ { "\x37\xd0\x6b\xb5\x16\xcb\x75\x46", "\x16\x4d\x5e\x40\x4f\x27\x52\x32", "\x0a\x2a\xee\xae\x3f\xf4\xab\x77" },
185
+ { "\x1f\x08\x26\x0d\x1a\xc2\x46\x5e", "\x6b\x05\x6e\x18\x75\x9f\x5c\xca", "\xef\x1b\xf0\x3e\x5d\xfa\x57\x5a" },
186
+ { "\x58\x40\x23\x64\x1a\xba\x61\x76", "\x00\x4b\xd6\xef\x09\x17\x60\x62", "\x88\xbf\x0d\xb6\xd7\x0d\xee\x56" },
187
+ { "\x02\x58\x16\x16\x46\x29\xb0\x07", "\x48\x0d\x39\x00\x6e\xe7\x62\xf2", "\xa1\xf9\x91\x55\x41\x02\x0b\x56" },
188
+ { "\x49\x79\x3e\xbc\x79\xb3\x25\x8f", "\x43\x75\x40\xc8\x69\x8f\x3c\xfa", "\x6f\xbf\x1c\xaf\xcf\xfd\x05\x56" },
189
+ { "\x4f\xb0\x5e\x15\x15\xab\x73\xa7", "\x07\x2d\x43\xa0\x77\x07\x52\x92", "\x2f\x22\xe4\x9b\xab\x7c\xa1\xac" },
190
+ { "\x49\xe9\x5d\x6d\x4c\xa2\x29\xbf", "\x02\xfe\x55\x77\x81\x17\xf1\x2a", "\x5a\x6b\x61\x2c\xc2\x6c\xce\x4a" },
191
+ { "\x01\x83\x10\xdc\x40\x9b\x26\xd6", "\x1d\x9d\x5c\x50\x18\xf7\x28\xc2", "\x5f\x4c\x03\x8e\xd1\x2b\x2e\x41" },
192
+ { "\x1c\x58\x7f\x1c\x13\x92\x4f\xef", "\x30\x55\x32\x28\x6d\x6f\x29\x5a", "\x63\xfa\xc0\xd0\x34\xd9\xf7\x93" },
193
+ };
194
+ static const size_t N_DES_TESTCASES = ARRAY_SIZE (des_testcases);
195
+
196
+ #endif /* test-des-cases.h */
@@ -0,0 +1,206 @@
1
+
2
+ /*
3
+ * This crypt(3) validation program shipped with UFC-crypt
4
+ * is derived from one distributed with Phil Karns PD DES package.
5
+ *
6
+ * @(#)cert.c 1.8 11 Aug 1996
7
+ */
8
+
9
+ #include "crypt-port.h"
10
+ #include "crypt-obsolete.h"
11
+ #include "des-cases.h"
12
+
13
+ #include <stdio.h>
14
+
15
+ #if ENABLE_OBSOLETE_API_ENOSYS
16
+ #include <errno.h>
17
+ #endif
18
+
19
+ #if HAVE_SYMVER
20
+ symver_ref("encrypt", encrypt, SYMVER_FLOOR);
21
+ symver_ref("setkey", setkey, SYMVER_FLOOR);
22
+ #endif
23
+
24
+ static void
25
+ expand (unsigned char ex[64], const unsigned char pk[8])
26
+ {
27
+ int i, j;
28
+ unsigned int t;
29
+
30
+ for (i = 0; i < 8; i++)
31
+ {
32
+ t = pk[i];
33
+ for (j = 0; j < 8; j++)
34
+ ex[i*8 + j] = (unsigned char)((t & (0x01u << (7 - j))) != 0);
35
+ }
36
+ }
37
+
38
+ #if !ENABLE_OBSOLETE_API_ENOSYS
39
+
40
+ static void
41
+ ex_print (const unsigned char ex[64])
42
+ {
43
+ int i, j;
44
+ unsigned int t;
45
+
46
+ for (i = 0; i < 8; i++)
47
+ {
48
+ t = 0;
49
+ for (j = 0; j < 8; j++)
50
+ t = (t << 1) | ex[i*8 + j];
51
+ printf ("%02x", t);
52
+ }
53
+ }
54
+
55
+ static void
56
+ pk_print (const unsigned char pk[8])
57
+ {
58
+ for (int i = 0; i < 8; i++)
59
+ printf ("%02x", (unsigned int)pk[i]);
60
+ }
61
+
62
+ static void
63
+ report_failure (size_t n, bool decrypt,
64
+ const struct des_testcase *tc, const unsigned char got[64])
65
+ {
66
+ printf ("FAIL: %zu/%s: k=", n, decrypt ? "de" : "en");
67
+ pk_print (tc->key);
68
+ fputs (" exp ", stdout);
69
+ if (decrypt)
70
+ pk_print (tc->plain);
71
+ else
72
+ pk_print (tc->answer);
73
+ fputs (" got ", stdout);
74
+ ex_print (got);
75
+ putchar ('\n');
76
+ }
77
+
78
+ int
79
+ main (void)
80
+ {
81
+ unsigned char key[64], plain[64], cipher[64], answer[64];
82
+ const struct des_testcase *tc;
83
+ size_t t;
84
+ int status = 0;
85
+
86
+ for (t = 0; t < N_DES_TESTCASES; t++)
87
+ {
88
+ tc = &des_testcases[t];
89
+ expand (key, tc->key);
90
+ expand (plain, tc->plain);
91
+ expand (answer, tc->answer);
92
+
93
+ setkey ((char *)key);
94
+ memcpy (cipher, plain, 64);
95
+ encrypt ((char *)cipher, 0);
96
+
97
+ if (memcmp (cipher, answer, 64) != 0)
98
+ {
99
+ status = 1;
100
+ // coverity[sensitive_data_leak]
101
+ report_failure (t, false, tc, cipher);
102
+ }
103
+
104
+ memcpy (cipher, answer, 64);
105
+ encrypt ((char *)cipher, 1);
106
+ if (memcmp (cipher, plain, 64) != 0)
107
+ {
108
+ status = 1;
109
+ report_failure (t, true, tc, cipher);
110
+ }
111
+ }
112
+
113
+ return status;
114
+ }
115
+
116
+ #else
117
+
118
+ int
119
+ main (void)
120
+ {
121
+ unsigned char key[64], plain[64], cipher[64], answer[64];
122
+ const struct des_testcase *tc;
123
+ size_t t;
124
+ int status = 0;
125
+
126
+ for (t = 0; t < N_DES_TESTCASES; t++)
127
+ {
128
+ tc = &des_testcases[t];
129
+ expand (key, tc->key);
130
+ expand (plain, tc->plain);
131
+ expand (answer, tc->answer);
132
+
133
+ /* Explicitly reset errno as required by POSIX. */
134
+ errno = 0;
135
+
136
+ setkey ((char *)key);
137
+
138
+ if (errno != ENOSYS)
139
+ {
140
+ status = 1;
141
+ printf ("FAIL: %s: errno does NOT equal ENOSYS.\n"
142
+ "expected: %d, %s, got: %d, %s\n", "setkey",
143
+ ENOSYS, strerror (ENOSYS), errno, strerror (errno));
144
+ }
145
+
146
+ memcpy (cipher, plain, 64);
147
+
148
+ /* Explicitly reset errno as required by POSIX. */
149
+ errno = 0;
150
+
151
+ encrypt ((char *)cipher, 0);
152
+
153
+ if (memcmp (cipher, answer, 64) == 0)
154
+ {
155
+ status = 1;
156
+ printf ("FAIL: %s: still performs correct operation.\n",
157
+ "encrypt");
158
+ }
159
+
160
+ if (memcmp (cipher, plain, 64) == 0)
161
+ {
162
+ status = 1;
163
+ printf ("FAIL: %s: data-block is has not changed.\n",
164
+ "encrypt");
165
+ }
166
+
167
+ if (errno != ENOSYS)
168
+ {
169
+ status = 1;
170
+ printf ("FAIL: %s: errno does NOT equal ENOSYS.\n"
171
+ "expected: %d, %s, got: %d, %s\n", "encrypt",
172
+ ENOSYS, strerror (ENOSYS), errno, strerror (errno));
173
+ }
174
+
175
+ /* Explicitly reset errno as required by POSIX. */
176
+ errno = 0;
177
+
178
+ encrypt ((char *)cipher, 1);
179
+
180
+ if (memcmp (cipher, plain, 64) == 0)
181
+ {
182
+ status = 1;
183
+ printf ("FAIL: %s: still performs correct operation.\n",
184
+ "encrypt (decrypt)");
185
+ }
186
+
187
+ if (memcmp (cipher, answer, 64) == 0)
188
+ {
189
+ status = 1;
190
+ printf ("FAIL: %s: data-block is unchanged.\n",
191
+ "encrypt (decrypt)");
192
+ }
193
+
194
+ if (errno != ENOSYS)
195
+ {
196
+ status = 1;
197
+ printf ("FAIL: %s: errno does NOT equal ENOSYS.\n"
198
+ "expected: %d, %s, got: %d, %s\n", "encrypt (decrypt)",
199
+ ENOSYS, strerror (ENOSYS), errno, strerror (errno));
200
+ }
201
+ }
202
+
203
+ return status;
204
+ }
205
+
206
+ #endif
@@ -0,0 +1,207 @@
1
+
2
+ /*
3
+ * This crypt(3) validation program shipped with UFC-crypt
4
+ * is derived from one distributed with Phil Karns PD DES package.
5
+ *
6
+ * @(#)cert.c 1.8 11 Aug 1996
7
+ */
8
+
9
+ #include "crypt-port.h"
10
+ #include "crypt-obsolete.h"
11
+ #include "des-cases.h"
12
+
13
+ #include <stdio.h>
14
+
15
+ #if ENABLE_OBSOLETE_API_ENOSYS
16
+ #include <errno.h>
17
+ #endif
18
+
19
+ #if HAVE_SYMVER
20
+ symver_ref("encrypt_r", encrypt_r, SYMVER_FLOOR);
21
+ symver_ref("setkey_r", setkey_r, SYMVER_FLOOR);
22
+ #endif
23
+
24
+ static void
25
+ expand (unsigned char ex[64], const unsigned char pk[8])
26
+ {
27
+ int i, j;
28
+ unsigned int t;
29
+
30
+ for (i = 0; i < 8; i++)
31
+ {
32
+ t = pk[i];
33
+ for (j = 0; j < 8; j++)
34
+ ex[i*8 + j] = (unsigned char)((t & (0x01u << (7 - j))) != 0);
35
+ }
36
+ }
37
+
38
+ #if !ENABLE_OBSOLETE_API_ENOSYS
39
+
40
+ static void
41
+ ex_print (const unsigned char ex[64])
42
+ {
43
+ int i, j;
44
+ unsigned int t;
45
+
46
+ for (i = 0; i < 8; i++)
47
+ {
48
+ t = 0;
49
+ for (j = 0; j < 8; j++)
50
+ t = (t << 1) | ex[i*8 + j];
51
+ printf ("%02x", t);
52
+ }
53
+ }
54
+
55
+ static void
56
+ pk_print (const unsigned char pk[8])
57
+ {
58
+ for (int i = 0; i < 8; i++)
59
+ printf ("%02x", (unsigned int)pk[i]);
60
+ }
61
+
62
+ static void
63
+ report_failure (size_t n, bool decrypt,
64
+ const struct des_testcase *tc, const unsigned char got[64])
65
+ {
66
+ printf ("FAIL: %zu/%s: k=", n, decrypt ? "de" : "en");
67
+ pk_print (tc->key);
68
+ fputs (" exp ", stdout);
69
+ if (decrypt)
70
+ pk_print (tc->plain);
71
+ else
72
+ pk_print (tc->answer);
73
+ fputs (" got ", stdout);
74
+ ex_print (got);
75
+ putchar ('\n');
76
+ }
77
+
78
+ int
79
+ main (void)
80
+ {
81
+ unsigned char key[64], plain[64], cipher[64], answer[64];
82
+ const struct des_testcase *tc;
83
+ size_t t;
84
+ int status = 0;
85
+ struct crypt_data data;
86
+
87
+ for (t = 0; t < N_DES_TESTCASES; t++)
88
+ {
89
+ tc = &des_testcases[t];
90
+ expand (key, tc->key);
91
+ expand (plain, tc->plain);
92
+ expand (answer, tc->answer);
93
+
94
+ setkey_r ((char *)key, &data);
95
+ memcpy (cipher, plain, 64);
96
+ encrypt_r ((char *)cipher, 0, &data);
97
+
98
+ if (memcmp (cipher, answer, 64) != 0)
99
+ {
100
+ status = 1;
101
+ report_failure (t, false, tc, cipher);
102
+ }
103
+
104
+ memcpy (cipher, answer, 64);
105
+ encrypt_r ((char *)cipher, 1, &data);
106
+ if (memcmp (cipher, plain, 64) != 0)
107
+ {
108
+ status = 1;
109
+ report_failure (t, true, tc, cipher);
110
+ }
111
+ }
112
+
113
+ return status;
114
+ }
115
+
116
+ #else
117
+
118
+ int
119
+ main (void)
120
+ {
121
+ unsigned char key[64], plain[64], cipher[64], answer[64];
122
+ const struct des_testcase *tc;
123
+ size_t t;
124
+ int status = 0;
125
+ struct crypt_data data;
126
+
127
+ for (t = 0; t < N_DES_TESTCASES; t++)
128
+ {
129
+ tc = &des_testcases[t];
130
+ expand (key, tc->key);
131
+ expand (plain, tc->plain);
132
+ expand (answer, tc->answer);
133
+
134
+ /* Explicitly reset errno as required by POSIX. */
135
+ errno = 0;
136
+
137
+ setkey_r ((char *)key, &data);
138
+
139
+ if (errno != ENOSYS)
140
+ {
141
+ status = 1;
142
+ printf ("FAIL: %s: errno does NOT equal ENOSYS.\n"
143
+ "expected: %d, %s, got: %d, %s\n", "setkey_r",
144
+ ENOSYS, strerror (ENOSYS), errno, strerror (errno));
145
+ }
146
+
147
+ memcpy (cipher, plain, 64);
148
+
149
+ /* Explicitly reset errno as required by POSIX. */
150
+ errno = 0;
151
+
152
+ encrypt_r ((char *)cipher, 0, &data);
153
+
154
+ if (memcmp (cipher, answer, 64) == 0)
155
+ {
156
+ status = 1;
157
+ printf ("FAIL: %s: still performs correct operation.\n",
158
+ "encrypt_r");
159
+ }
160
+
161
+ if (memcmp (cipher, plain, 64) == 0)
162
+ {
163
+ status = 1;
164
+ printf ("FAIL: %s: data-block is has not changed.\n",
165
+ "encrypt_r");
166
+ }
167
+
168
+ if (errno != ENOSYS)
169
+ {
170
+ status = 1;
171
+ printf ("FAIL: %s: errno does NOT equal ENOSYS.\n"
172
+ "expected: %d, %s, got: %d, %s\n", "encrypt_r",
173
+ ENOSYS, strerror (ENOSYS), errno, strerror (errno));
174
+ }
175
+
176
+ /* Explicitly reset errno as required by POSIX. */
177
+ errno = 0;
178
+
179
+ encrypt_r ((char *)cipher, 1, &data);
180
+
181
+ if (memcmp (cipher, plain, 64) == 0)
182
+ {
183
+ status = 1;
184
+ printf ("FAIL: %s: still performs correct operation.\n",
185
+ "encrypt_r (decrypt)");
186
+ }
187
+
188
+ if (memcmp (cipher, answer, 64) == 0)
189
+ {
190
+ status = 1;
191
+ printf ("FAIL: %s: data-block is unchanged.\n",
192
+ "encrypt_r (decrypt)");
193
+ }
194
+
195
+ if (errno != ENOSYS)
196
+ {
197
+ status = 1;
198
+ printf ("FAIL: %s: errno does NOT equal ENOSYS.\n"
199
+ "expected: %d, %s, got: %d, %s\n", "encrypt_r (decrypt)",
200
+ ENOSYS, strerror (ENOSYS), errno, strerror (errno));
201
+ }
202
+ }
203
+
204
+ return status;
205
+ }
206
+
207
+ #endif