libmspack 0.10.1 → 0.10.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (355) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +37 -0
  3. data/.gitignore +2 -0
  4. data/ext/Rakefile +1 -1
  5. data/ext/x86_64-linux/libmspack.so +0 -0
  6. data/ext/x86_64-windows/mspack.dll +0 -0
  7. data/lib/libmspack/version.rb +1 -1
  8. data/lib/libmspack.rb +1 -1
  9. data/libmspack.gemspec +1 -1
  10. metadata +6 -348
  11. data/.travis.yml +0 -5
  12. data/ext/i386-windows/libmspack.dll +0 -0
  13. data/ext/libmspack/doc/Doxyfile +0 -9
  14. data/ext/libmspack/doc/Makefile +0 -8
  15. data/ext/libmspack/doc/html/annotated.html +0 -104
  16. data/ext/libmspack/doc/html/bc_s.png +0 -0
  17. data/ext/libmspack/doc/html/bdwn.png +0 -0
  18. data/ext/libmspack/doc/html/classes.html +0 -85
  19. data/ext/libmspack/doc/html/closed.png +0 -0
  20. data/ext/libmspack/doc/html/dir_f4d90282fe865f947a460986b93b960a.html +0 -83
  21. data/ext/libmspack/doc/html/doc.png +0 -0
  22. data/ext/libmspack/doc/html/doxygen.css +0 -1596
  23. data/ext/libmspack/doc/html/doxygen.png +0 -0
  24. data/ext/libmspack/doc/html/dynsections.js +0 -97
  25. data/ext/libmspack/doc/html/files.html +0 -78
  26. data/ext/libmspack/doc/html/folderclosed.png +0 -0
  27. data/ext/libmspack/doc/html/folderopen.png +0 -0
  28. data/ext/libmspack/doc/html/functions.html +0 -454
  29. data/ext/libmspack/doc/html/functions_vars.html +0 -454
  30. data/ext/libmspack/doc/html/globals.html +0 -406
  31. data/ext/libmspack/doc/html/globals_defs.html +0 -316
  32. data/ext/libmspack/doc/html/globals_func.html +0 -161
  33. data/ext/libmspack/doc/html/graph_legend.html +0 -102
  34. data/ext/libmspack/doc/html/graph_legend.md5 +0 -1
  35. data/ext/libmspack/doc/html/graph_legend.png +0 -0
  36. data/ext/libmspack/doc/html/index.html +0 -167
  37. data/ext/libmspack/doc/html/jquery.js +0 -87
  38. data/ext/libmspack/doc/html/menu.js +0 -26
  39. data/ext/libmspack/doc/html/menudata.js +0 -56
  40. data/ext/libmspack/doc/html/mspack_8h.html +0 -2664
  41. data/ext/libmspack/doc/html/mspack_8h__incl.map +0 -2
  42. data/ext/libmspack/doc/html/mspack_8h__incl.md5 +0 -1
  43. data/ext/libmspack/doc/html/mspack_8h__incl.png +0 -0
  44. data/ext/libmspack/doc/html/mspack_8h_source.html +0 -238
  45. data/ext/libmspack/doc/html/nav_f.png +0 -0
  46. data/ext/libmspack/doc/html/nav_g.png +0 -0
  47. data/ext/libmspack/doc/html/nav_h.png +0 -0
  48. data/ext/libmspack/doc/html/open.png +0 -0
  49. data/ext/libmspack/doc/html/search/all_0.html +0 -26
  50. data/ext/libmspack/doc/html/search/all_0.js +0 -6
  51. data/ext/libmspack/doc/html/search/all_1.html +0 -26
  52. data/ext/libmspack/doc/html/search/all_1.js +0 -5
  53. data/ext/libmspack/doc/html/search/all_10.html +0 -26
  54. data/ext/libmspack/doc/html/search/all_10.js +0 -8
  55. data/ext/libmspack/doc/html/search/all_11.html +0 -26
  56. data/ext/libmspack/doc/html/search/all_11.js +0 -4
  57. data/ext/libmspack/doc/html/search/all_12.html +0 -26
  58. data/ext/libmspack/doc/html/search/all_12.js +0 -4
  59. data/ext/libmspack/doc/html/search/all_13.html +0 -26
  60. data/ext/libmspack/doc/html/search/all_13.js +0 -4
  61. data/ext/libmspack/doc/html/search/all_2.html +0 -26
  62. data/ext/libmspack/doc/html/search/all_2.js +0 -14
  63. data/ext/libmspack/doc/html/search/all_3.html +0 -26
  64. data/ext/libmspack/doc/html/search/all_3.js +0 -13
  65. data/ext/libmspack/doc/html/search/all_4.html +0 -26
  66. data/ext/libmspack/doc/html/search/all_4.js +0 -6
  67. data/ext/libmspack/doc/html/search/all_5.html +0 -26
  68. data/ext/libmspack/doc/html/search/all_5.js +0 -13
  69. data/ext/libmspack/doc/html/search/all_6.html +0 -26
  70. data/ext/libmspack/doc/html/search/all_6.js +0 -4
  71. data/ext/libmspack/doc/html/search/all_7.html +0 -26
  72. data/ext/libmspack/doc/html/search/all_7.js +0 -5
  73. data/ext/libmspack/doc/html/search/all_8.html +0 -26
  74. data/ext/libmspack/doc/html/search/all_8.js +0 -5
  75. data/ext/libmspack/doc/html/search/all_9.html +0 -26
  76. data/ext/libmspack/doc/html/search/all_9.js +0 -7
  77. data/ext/libmspack/doc/html/search/all_a.html +0 -26
  78. data/ext/libmspack/doc/html/search/all_a.js +0 -144
  79. data/ext/libmspack/doc/html/search/all_b.html +0 -26
  80. data/ext/libmspack/doc/html/search/all_b.js +0 -10
  81. data/ext/libmspack/doc/html/search/all_c.html +0 -26
  82. data/ext/libmspack/doc/html/search/all_c.js +0 -5
  83. data/ext/libmspack/doc/html/search/all_d.html +0 -26
  84. data/ext/libmspack/doc/html/search/all_d.js +0 -7
  85. data/ext/libmspack/doc/html/search/all_e.html +0 -26
  86. data/ext/libmspack/doc/html/search/all_e.js +0 -5
  87. data/ext/libmspack/doc/html/search/all_f.html +0 -26
  88. data/ext/libmspack/doc/html/search/all_f.js +0 -15
  89. data/ext/libmspack/doc/html/search/classes_0.html +0 -26
  90. data/ext/libmspack/doc/html/search/classes_0.js +0 -30
  91. data/ext/libmspack/doc/html/search/close.png +0 -0
  92. data/ext/libmspack/doc/html/search/defines_0.html +0 -26
  93. data/ext/libmspack/doc/html/search/defines_0.js +0 -84
  94. data/ext/libmspack/doc/html/search/files_0.html +0 -26
  95. data/ext/libmspack/doc/html/search/files_0.js +0 -4
  96. data/ext/libmspack/doc/html/search/functions_0.html +0 -26
  97. data/ext/libmspack/doc/html/search/functions_0.js +0 -33
  98. data/ext/libmspack/doc/html/search/mag_sel.png +0 -0
  99. data/ext/libmspack/doc/html/search/nomatches.html +0 -12
  100. data/ext/libmspack/doc/html/search/search.css +0 -271
  101. data/ext/libmspack/doc/html/search/search.js +0 -791
  102. data/ext/libmspack/doc/html/search/search_l.png +0 -0
  103. data/ext/libmspack/doc/html/search/search_m.png +0 -0
  104. data/ext/libmspack/doc/html/search/search_r.png +0 -0
  105. data/ext/libmspack/doc/html/search/searchdata.js +0 -30
  106. data/ext/libmspack/doc/html/search/variables_0.html +0 -26
  107. data/ext/libmspack/doc/html/search/variables_0.js +0 -6
  108. data/ext/libmspack/doc/html/search/variables_1.html +0 -26
  109. data/ext/libmspack/doc/html/search/variables_1.js +0 -5
  110. data/ext/libmspack/doc/html/search/variables_10.html +0 -26
  111. data/ext/libmspack/doc/html/search/variables_10.js +0 -8
  112. data/ext/libmspack/doc/html/search/variables_11.html +0 -26
  113. data/ext/libmspack/doc/html/search/variables_11.js +0 -4
  114. data/ext/libmspack/doc/html/search/variables_12.html +0 -26
  115. data/ext/libmspack/doc/html/search/variables_12.js +0 -4
  116. data/ext/libmspack/doc/html/search/variables_13.html +0 -26
  117. data/ext/libmspack/doc/html/search/variables_13.js +0 -4
  118. data/ext/libmspack/doc/html/search/variables_2.html +0 -26
  119. data/ext/libmspack/doc/html/search/variables_2.js +0 -14
  120. data/ext/libmspack/doc/html/search/variables_3.html +0 -26
  121. data/ext/libmspack/doc/html/search/variables_3.js +0 -13
  122. data/ext/libmspack/doc/html/search/variables_4.html +0 -26
  123. data/ext/libmspack/doc/html/search/variables_4.js +0 -6
  124. data/ext/libmspack/doc/html/search/variables_5.html +0 -26
  125. data/ext/libmspack/doc/html/search/variables_5.js +0 -13
  126. data/ext/libmspack/doc/html/search/variables_6.html +0 -26
  127. data/ext/libmspack/doc/html/search/variables_6.js +0 -4
  128. data/ext/libmspack/doc/html/search/variables_7.html +0 -26
  129. data/ext/libmspack/doc/html/search/variables_7.js +0 -5
  130. data/ext/libmspack/doc/html/search/variables_8.html +0 -26
  131. data/ext/libmspack/doc/html/search/variables_8.js +0 -5
  132. data/ext/libmspack/doc/html/search/variables_9.html +0 -26
  133. data/ext/libmspack/doc/html/search/variables_9.js +0 -7
  134. data/ext/libmspack/doc/html/search/variables_a.html +0 -26
  135. data/ext/libmspack/doc/html/search/variables_a.js +0 -5
  136. data/ext/libmspack/doc/html/search/variables_b.html +0 -26
  137. data/ext/libmspack/doc/html/search/variables_b.js +0 -10
  138. data/ext/libmspack/doc/html/search/variables_c.html +0 -26
  139. data/ext/libmspack/doc/html/search/variables_c.js +0 -5
  140. data/ext/libmspack/doc/html/search/variables_d.html +0 -26
  141. data/ext/libmspack/doc/html/search/variables_d.js +0 -7
  142. data/ext/libmspack/doc/html/search/variables_e.html +0 -26
  143. data/ext/libmspack/doc/html/search/variables_e.js +0 -5
  144. data/ext/libmspack/doc/html/search/variables_f.html +0 -26
  145. data/ext/libmspack/doc/html/search/variables_f.js +0 -15
  146. data/ext/libmspack/doc/html/splitbar.png +0 -0
  147. data/ext/libmspack/doc/html/structmscab__compressor.html +0 -106
  148. data/ext/libmspack/doc/html/structmscab__decompressor.html +0 -361
  149. data/ext/libmspack/doc/html/structmscab__decompressor__coll__graph.map +0 -5
  150. data/ext/libmspack/doc/html/structmscab__decompressor__coll__graph.md5 +0 -1
  151. data/ext/libmspack/doc/html/structmscab__decompressor__coll__graph.png +0 -0
  152. data/ext/libmspack/doc/html/structmscabd__cabinet.html +0 -418
  153. data/ext/libmspack/doc/html/structmscabd__cabinet__coll__graph.map +0 -4
  154. data/ext/libmspack/doc/html/structmscabd__cabinet__coll__graph.md5 +0 -1
  155. data/ext/libmspack/doc/html/structmscabd__cabinet__coll__graph.png +0 -0
  156. data/ext/libmspack/doc/html/structmscabd__file.html +0 -337
  157. data/ext/libmspack/doc/html/structmscabd__file__coll__graph.map +0 -3
  158. data/ext/libmspack/doc/html/structmscabd__file__coll__graph.md5 +0 -1
  159. data/ext/libmspack/doc/html/structmscabd__file__coll__graph.png +0 -0
  160. data/ext/libmspack/doc/html/structmscabd__folder.html +0 -159
  161. data/ext/libmspack/doc/html/structmscabd__folder__coll__graph.map +0 -2
  162. data/ext/libmspack/doc/html/structmscabd__folder__coll__graph.md5 +0 -1
  163. data/ext/libmspack/doc/html/structmscabd__folder__coll__graph.png +0 -0
  164. data/ext/libmspack/doc/html/structmschm__compressor.html +0 -226
  165. data/ext/libmspack/doc/html/structmschm__decompressor.html +0 -299
  166. data/ext/libmspack/doc/html/structmschm__decompressor__coll__graph.map +0 -7
  167. data/ext/libmspack/doc/html/structmschm__decompressor__coll__graph.md5 +0 -1
  168. data/ext/libmspack/doc/html/structmschm__decompressor__coll__graph.png +0 -0
  169. data/ext/libmspack/doc/html/structmschmc__file.html +0 -169
  170. data/ext/libmspack/doc/html/structmschmd__file.html +0 -198
  171. data/ext/libmspack/doc/html/structmschmd__file__coll__graph.map +0 -6
  172. data/ext/libmspack/doc/html/structmschmd__file__coll__graph.md5 +0 -1
  173. data/ext/libmspack/doc/html/structmschmd__file__coll__graph.png +0 -0
  174. data/ext/libmspack/doc/html/structmschmd__header.html +0 -458
  175. data/ext/libmspack/doc/html/structmschmd__header__coll__graph.map +0 -6
  176. data/ext/libmspack/doc/html/structmschmd__header__coll__graph.md5 +0 -1
  177. data/ext/libmspack/doc/html/structmschmd__header__coll__graph.png +0 -0
  178. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed.html +0 -198
  179. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed__coll__graph.map +0 -6
  180. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed__coll__graph.md5 +0 -1
  181. data/ext/libmspack/doc/html/structmschmd__sec__mscompressed__coll__graph.png +0 -0
  182. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed.html +0 -140
  183. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed__coll__graph.map +0 -6
  184. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed__coll__graph.md5 +0 -1
  185. data/ext/libmspack/doc/html/structmschmd__sec__uncompressed__coll__graph.png +0 -0
  186. data/ext/libmspack/doc/html/structmschmd__section.html +0 -142
  187. data/ext/libmspack/doc/html/structmschmd__section__coll__graph.map +0 -6
  188. data/ext/libmspack/doc/html/structmschmd__section__coll__graph.md5 +0 -1
  189. data/ext/libmspack/doc/html/structmschmd__section__coll__graph.png +0 -0
  190. data/ext/libmspack/doc/html/structmshlp__compressor.html +0 -106
  191. data/ext/libmspack/doc/html/structmshlp__decompressor.html +0 -106
  192. data/ext/libmspack/doc/html/structmskwaj__compressor.html +0 -243
  193. data/ext/libmspack/doc/html/structmskwaj__decompressor.html +0 -245
  194. data/ext/libmspack/doc/html/structmskwaj__decompressor__coll__graph.map +0 -3
  195. data/ext/libmspack/doc/html/structmskwaj__decompressor__coll__graph.md5 +0 -1
  196. data/ext/libmspack/doc/html/structmskwaj__decompressor__coll__graph.png +0 -0
  197. data/ext/libmspack/doc/html/structmskwajd__header.html +0 -225
  198. data/ext/libmspack/doc/html/structmslit__compressor.html +0 -106
  199. data/ext/libmspack/doc/html/structmslit__decompressor.html +0 -106
  200. data/ext/libmspack/doc/html/structmsoab__compressor.html +0 -151
  201. data/ext/libmspack/doc/html/structmsoab__decompressor.html +0 -184
  202. data/ext/libmspack/doc/html/structmspack__file.html +0 -107
  203. data/ext/libmspack/doc/html/structmspack__system.html +0 -404
  204. data/ext/libmspack/doc/html/structmspack__system__coll__graph.map +0 -3
  205. data/ext/libmspack/doc/html/structmspack__system__coll__graph.md5 +0 -1
  206. data/ext/libmspack/doc/html/structmspack__system__coll__graph.png +0 -0
  207. data/ext/libmspack/doc/html/structmsszdd__compressor.html +0 -186
  208. data/ext/libmspack/doc/html/structmsszdd__decompressor.html +0 -246
  209. data/ext/libmspack/doc/html/structmsszdd__decompressor__coll__graph.map +0 -3
  210. data/ext/libmspack/doc/html/structmsszdd__decompressor__coll__graph.md5 +0 -1
  211. data/ext/libmspack/doc/html/structmsszdd__decompressor__coll__graph.png +0 -0
  212. data/ext/libmspack/doc/html/structmsszddd__header.html +0 -149
  213. data/ext/libmspack/doc/html/sync_off.png +0 -0
  214. data/ext/libmspack/doc/html/sync_on.png +0 -0
  215. data/ext/libmspack/doc/html/szdd_kwaj_format.html +0 -331
  216. data/ext/libmspack/doc/html/tab_a.png +0 -0
  217. data/ext/libmspack/doc/html/tab_b.png +0 -0
  218. data/ext/libmspack/doc/html/tab_h.png +0 -0
  219. data/ext/libmspack/doc/html/tab_s.png +0 -0
  220. data/ext/libmspack/doc/html/tabs.css +0 -1
  221. data/ext/libmspack/doc/szdd_kwaj_format.html +0 -331
  222. data/ext/libmspack/examples/cabd_memory.c +0 -179
  223. data/ext/libmspack/examples/cabrip.c +0 -85
  224. data/ext/libmspack/examples/chmextract.c +0 -121
  225. data/ext/libmspack/examples/msexpand.c +0 -48
  226. data/ext/libmspack/examples/multifh.c +0 -435
  227. data/ext/libmspack/examples/oabextract.c +0 -41
  228. data/ext/libmspack/test/cabd_md5.c +0 -161
  229. data/ext/libmspack/test/cabd_test.c +0 -468
  230. data/ext/libmspack/test/chmd_find.c +0 -95
  231. data/ext/libmspack/test/chmd_md5.c +0 -67
  232. data/ext/libmspack/test/chmd_order.c +0 -144
  233. data/ext/libmspack/test/chmd_test.c +0 -134
  234. data/ext/libmspack/test/chminfo.c +0 -285
  235. data/ext/libmspack/test/error.h +0 -22
  236. data/ext/libmspack/test/kwajd_test.c +0 -119
  237. data/ext/libmspack/test/md5.c +0 -450
  238. data/ext/libmspack/test/md5.h +0 -166
  239. data/ext/libmspack/test/md5_fh.h +0 -123
  240. data/ext/libmspack/test/test_files/cabd/1.pl +0 -84
  241. data/ext/libmspack/test/test_files/cabd/2.pl +0 -75
  242. data/ext/libmspack/test/test_files/cabd/bad_folderindex.cab +0 -0
  243. data/ext/libmspack/test/test_files/cabd/bad_nofiles.cab +0 -0
  244. data/ext/libmspack/test/test_files/cabd/bad_nofolders.cab +0 -0
  245. data/ext/libmspack/test/test_files/cabd/bad_signature.cab +0 -0
  246. data/ext/libmspack/test/test_files/cabd/cve-2010-2800-mszip-infinite-loop.cab +0 -0
  247. data/ext/libmspack/test/test_files/cabd/cve-2014-9556-qtm-infinite-loop.cab +0 -0
  248. data/ext/libmspack/test/test_files/cabd/cve-2014-9732-folders-segfault.cab +0 -0
  249. data/ext/libmspack/test/test_files/cabd/cve-2015-4470-mszip-over-read.cab +0 -0
  250. data/ext/libmspack/test/test_files/cabd/cve-2015-4471-lzx-under-read.cab +0 -0
  251. data/ext/libmspack/test/test_files/cabd/filename-read-violation-1.cab +0 -0
  252. data/ext/libmspack/test/test_files/cabd/filename-read-violation-2.cab +0 -0
  253. data/ext/libmspack/test/test_files/cabd/filename-read-violation-3.cab +0 -0
  254. data/ext/libmspack/test/test_files/cabd/filename-read-violation-4.cab +0 -0
  255. data/ext/libmspack/test/test_files/cabd/lzx-main-tree-no-lengths.cab +0 -0
  256. data/ext/libmspack/test/test_files/cabd/lzx-premature-matches.cab +0 -0
  257. data/ext/libmspack/test/test_files/cabd/mszip_lzx_qtm.cab +0 -0
  258. data/ext/libmspack/test/test_files/cabd/multi_basic_pt1.cab +0 -0
  259. data/ext/libmspack/test/test_files/cabd/multi_basic_pt2.cab +0 -0
  260. data/ext/libmspack/test/test_files/cabd/multi_basic_pt3.cab +0 -0
  261. data/ext/libmspack/test/test_files/cabd/multi_basic_pt4.cab +0 -0
  262. data/ext/libmspack/test/test_files/cabd/multi_basic_pt5.cab +0 -0
  263. data/ext/libmspack/test/test_files/cabd/normal_255c_filename.cab +0 -0
  264. data/ext/libmspack/test/test_files/cabd/normal_2files_1folder.cab +0 -0
  265. data/ext/libmspack/test/test_files/cabd/normal_2files_2folders.cab +0 -0
  266. data/ext/libmspack/test/test_files/cabd/partial_nodata.cab +0 -0
  267. data/ext/libmspack/test/test_files/cabd/partial_nofiles.cab +0 -0
  268. data/ext/libmspack/test/test_files/cabd/partial_nofolder.cab +0 -0
  269. data/ext/libmspack/test/test_files/cabd/partial_shortextheader.cab +0 -0
  270. data/ext/libmspack/test/test_files/cabd/partial_shortfile1.cab +0 -0
  271. data/ext/libmspack/test/test_files/cabd/partial_shortfile2.cab +0 -0
  272. data/ext/libmspack/test/test_files/cabd/partial_shortfolder.cab +0 -0
  273. data/ext/libmspack/test/test_files/cabd/partial_shortheader.cab +0 -0
  274. data/ext/libmspack/test/test_files/cabd/partial_str_nofname.cab +0 -0
  275. data/ext/libmspack/test/test_files/cabd/partial_str_noninfo.cab +0 -0
  276. data/ext/libmspack/test/test_files/cabd/partial_str_nonname.cab +0 -0
  277. data/ext/libmspack/test/test_files/cabd/partial_str_nopinfo.cab +0 -0
  278. data/ext/libmspack/test/test_files/cabd/partial_str_nopname.cab +0 -0
  279. data/ext/libmspack/test/test_files/cabd/partial_str_shortfname.cab +0 -0
  280. data/ext/libmspack/test/test_files/cabd/partial_str_shortninfo.cab +0 -0
  281. data/ext/libmspack/test/test_files/cabd/partial_str_shortnname.cab +0 -0
  282. data/ext/libmspack/test/test_files/cabd/partial_str_shortpinfo.cab +0 -0
  283. data/ext/libmspack/test/test_files/cabd/partial_str_shortpname.cab +0 -0
  284. data/ext/libmspack/test/test_files/cabd/qtm-max-size-block.cab +0 -0
  285. data/ext/libmspack/test/test_files/cabd/reserve_---.cab +0 -0
  286. data/ext/libmspack/test/test_files/cabd/reserve_--D.cab +0 -0
  287. data/ext/libmspack/test/test_files/cabd/reserve_-F-.cab +0 -0
  288. data/ext/libmspack/test/test_files/cabd/reserve_-FD.cab +0 -0
  289. data/ext/libmspack/test/test_files/cabd/reserve_H--.cab +0 -0
  290. data/ext/libmspack/test/test_files/cabd/reserve_H-D.cab +0 -0
  291. data/ext/libmspack/test/test_files/cabd/reserve_HF-.cab +0 -0
  292. data/ext/libmspack/test/test_files/cabd/reserve_HFD.cab +0 -0
  293. data/ext/libmspack/test/test_files/cabd/search_basic.cab +0 -0
  294. data/ext/libmspack/test/test_files/cabd/search_tricky1.cab +0 -0
  295. data/ext/libmspack/test/test_files/chmd/blank-filenames.chm +0 -0
  296. data/ext/libmspack/test/test_files/chmd/cve-2015-4467-reset-interval-zero.chm.xor +0 -0
  297. data/ext/libmspack/test/test_files/chmd/cve-2015-4468-namelen-bounds.chm +0 -0
  298. data/ext/libmspack/test/test_files/chmd/cve-2015-4469-namelen-bounds.chm +0 -0
  299. data/ext/libmspack/test/test_files/chmd/cve-2015-4472-namelen-bounds.chm +0 -0
  300. data/ext/libmspack/test/test_files/chmd/cve-2017-6419-lzx-negative-spaninfo.chm +0 -0
  301. data/ext/libmspack/test/test_files/chmd/short-system-filenames.chm +0 -0
  302. data/ext/libmspack/test/test_files/kwajd/f00.kwj +0 -0
  303. data/ext/libmspack/test/test_files/kwajd/f01.kwj +0 -0
  304. data/ext/libmspack/test/test_files/kwajd/f02.kwj +0 -0
  305. data/ext/libmspack/test/test_files/kwajd/f03.kwj +0 -0
  306. data/ext/libmspack/test/test_files/kwajd/f04.kwj +0 -0
  307. data/ext/libmspack/test/test_files/kwajd/f10.kwj +0 -0
  308. data/ext/libmspack/test/test_files/kwajd/f11.kwj +0 -0
  309. data/ext/libmspack/test/test_files/kwajd/f12.kwj +0 -0
  310. data/ext/libmspack/test/test_files/kwajd/f13.kwj +0 -0
  311. data/ext/libmspack/test/test_files/kwajd/f14.kwj +0 -0
  312. data/ext/libmspack/test/test_files/kwajd/f20.kwj +0 -0
  313. data/ext/libmspack/test/test_files/kwajd/f21.kwj +0 -0
  314. data/ext/libmspack/test/test_files/kwajd/f22.kwj +0 -0
  315. data/ext/libmspack/test/test_files/kwajd/f23.kwj +0 -0
  316. data/ext/libmspack/test/test_files/kwajd/f24.kwj +0 -0
  317. data/ext/libmspack/test/test_files/kwajd/f30.kwj +0 -0
  318. data/ext/libmspack/test/test_files/kwajd/f31.kwj +0 -0
  319. data/ext/libmspack/test/test_files/kwajd/f32.kwj +0 -0
  320. data/ext/libmspack/test/test_files/kwajd/f33.kwj +0 -0
  321. data/ext/libmspack/test/test_files/kwajd/f34.kwj +0 -0
  322. data/ext/libmspack/test/test_files/kwajd/f40.kwj +0 -0
  323. data/ext/libmspack/test/test_files/kwajd/f41.kwj +0 -0
  324. data/ext/libmspack/test/test_files/kwajd/f42.kwj +0 -0
  325. data/ext/libmspack/test/test_files/kwajd/f43.kwj +0 -0
  326. data/ext/libmspack/test/test_files/kwajd/f44.kwj +0 -0
  327. data/ext/libmspack/test/test_files/kwajd/f50.kwj +0 -0
  328. data/ext/libmspack/test/test_files/kwajd/f51.kwj +0 -0
  329. data/ext/libmspack/test/test_files/kwajd/f52.kwj +0 -0
  330. data/ext/libmspack/test/test_files/kwajd/f53.kwj +0 -0
  331. data/ext/libmspack/test/test_files/kwajd/f54.kwj +0 -0
  332. data/ext/libmspack/test/test_files/kwajd/f60.kwj +0 -0
  333. data/ext/libmspack/test/test_files/kwajd/f61.kwj +0 -0
  334. data/ext/libmspack/test/test_files/kwajd/f62.kwj +0 -0
  335. data/ext/libmspack/test/test_files/kwajd/f63.kwj +0 -0
  336. data/ext/libmspack/test/test_files/kwajd/f64.kwj +0 -0
  337. data/ext/libmspack/test/test_files/kwajd/f70.kwj +0 -0
  338. data/ext/libmspack/test/test_files/kwajd/f71.kwj +0 -0
  339. data/ext/libmspack/test/test_files/kwajd/f72.kwj +0 -0
  340. data/ext/libmspack/test/test_files/kwajd/f73.kwj +0 -0
  341. data/ext/libmspack/test/test_files/kwajd/f74.kwj +0 -0
  342. data/ext/libmspack/test/test_files/kwajd/f80.kwj +0 -0
  343. data/ext/libmspack/test/test_files/kwajd/f81.kwj +0 -0
  344. data/ext/libmspack/test/test_files/kwajd/f82.kwj +0 -0
  345. data/ext/libmspack/test/test_files/kwajd/f83.kwj +0 -0
  346. data/ext/libmspack/test/test_files/kwajd/f84.kwj +0 -0
  347. data/ext/libmspack/test/test_files/kwajd/f90.kwj +0 -0
  348. data/ext/libmspack/test/test_files/kwajd/f91.kwj +0 -0
  349. data/ext/libmspack/test/test_files/kwajd/f92.kwj +0 -0
  350. data/ext/libmspack/test/test_files/kwajd/f93.kwj +0 -0
  351. data/ext/libmspack/test/test_files/kwajd/f94.kwj +0 -0
  352. data/ext/libmspack/test/test_files/kwajd/make.pl +0 -17
  353. data/ext/x86_64-linux/liblibmspack.so +0 -0
  354. data/ext/x86_64-windows/libmspack.dll +0 -0
  355. data/ext/x86_64-windows-msys/libmspack.dll +0 -0
@@ -1,450 +0,0 @@
1
- /* md5.c - Functions to compute MD5 message digest of files or memory blocks
2
- according to the definition of MD5 in RFC 1321 from April 1992.
3
- Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc.
4
- NOTE: The canonical source of this file is maintained with the GNU C
5
- Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
6
-
7
- This program is free software; you can redistribute it and/or modify it
8
- under the terms of the GNU General Public License as published by the
9
- Free Software Foundation; either version 2, or (at your option) any
10
- later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program; if not, write to the Free Software Foundation,
19
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
20
-
21
- /* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
22
-
23
- #ifdef HAVE_CONFIG_H
24
- # include <config.h>
25
- #endif
26
-
27
- #include <sys/types.h>
28
- #include <stdlib.h>
29
- #include <string.h>
30
-
31
- #include <md5.h>
32
-
33
- #ifdef _LIBC
34
- # include <endian.h>
35
- # if __BYTE_ORDER == __BIG_ENDIAN
36
- # define WORDS_BIGENDIAN 1
37
- # endif
38
- /* We need to keep the namespace clean so define the MD5 function
39
- protected using leading __ . */
40
- # define md5_init_ctx __md5_init_ctx
41
- # define md5_process_block __md5_process_block
42
- # define md5_process_bytes __md5_process_bytes
43
- # define md5_finish_ctx __md5_finish_ctx
44
- # define md5_read_ctx __md5_read_ctx
45
- # define md5_stream __md5_stream
46
- # define md5_buffer __md5_buffer
47
- #endif
48
-
49
- #ifdef WORDS_BIGENDIAN
50
- # define SWAP(n) \
51
- (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
52
- #else
53
- # define SWAP(n) (n)
54
- #endif
55
-
56
- #define BLOCKSIZE 4096
57
- /* Ensure that BLOCKSIZE is a multiple of 64. */
58
- #if BLOCKSIZE % 64 != 0
59
- /* FIXME-someday (soon?): use #error instead of this kludge. */
60
- "invalid BLOCKSIZE"
61
- #endif
62
-
63
- /* This array contains the bytes used to pad the buffer to the next
64
- 64-byte boundary. (RFC 1321, 3.1: Step 1) */
65
- static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
66
-
67
-
68
- /* Initialize structure containing state of computation.
69
- (RFC 1321, 3.3: Step 3) */
70
- void
71
- md5_init_ctx (struct md5_ctx *ctx)
72
- {
73
- ctx->A = 0x67452301;
74
- ctx->B = 0xefcdab89;
75
- ctx->C = 0x98badcfe;
76
- ctx->D = 0x10325476;
77
-
78
- ctx->total[0] = ctx->total[1] = 0;
79
- ctx->buflen = 0;
80
- }
81
-
82
- /* Put result from CTX in first 16 bytes following RESBUF. The result
83
- must be in little endian byte order.
84
-
85
- IMPORTANT: On some systems it is required that RESBUF is correctly
86
- aligned for a 32 bits value. */
87
- void *
88
- md5_read_ctx (const struct md5_ctx *ctx, void *resbuf)
89
- {
90
- ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A);
91
- ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B);
92
- ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C);
93
- ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D);
94
-
95
- return resbuf;
96
- }
97
-
98
- /* Process the remaining bytes in the internal buffer and the usual
99
- prolog according to the standard and write the result to RESBUF.
100
-
101
- IMPORTANT: On some systems it is required that RESBUF is correctly
102
- aligned for a 32 bits value. */
103
- void *
104
- md5_finish_ctx (struct md5_ctx *ctx, void *resbuf)
105
- {
106
- /* Take yet unprocessed bytes into account. */
107
- md5_uint32 bytes = ctx->buflen;
108
- size_t pad;
109
-
110
- /* Now count remaining bytes. */
111
- ctx->total[0] += bytes;
112
- if (ctx->total[0] < bytes)
113
- ++ctx->total[1];
114
-
115
- pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
116
- memcpy (&ctx->buffer[bytes], fillbuf, pad);
117
-
118
- /* Put the 64-bit file length in *bits* at the end of the buffer. */
119
- *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
120
- *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
121
- (ctx->total[0] >> 29));
122
-
123
- /* Process last bytes. */
124
- md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
125
-
126
- return md5_read_ctx (ctx, resbuf);
127
- }
128
-
129
- /* Compute MD5 message digest for bytes read from STREAM. The
130
- resulting message digest number will be written into the 16 bytes
131
- beginning at RESBLOCK. */
132
- int
133
- md5_stream (FILE *stream, void *resblock)
134
- {
135
- struct md5_ctx ctx;
136
- char buffer[BLOCKSIZE + 72];
137
- size_t sum;
138
-
139
- /* Initialize the computation context. */
140
- md5_init_ctx (&ctx);
141
-
142
- /* Iterate over full file contents. */
143
- while (1)
144
- {
145
- /* We read the file in blocks of BLOCKSIZE bytes. One call of the
146
- computation function processes the whole buffer so that with the
147
- next round of the loop another block can be read. */
148
- size_t n;
149
- sum = 0;
150
-
151
- /* Read block. Take care for partial reads. */
152
- while (1)
153
- {
154
- n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
155
-
156
- sum += n;
157
-
158
- if (sum == BLOCKSIZE)
159
- break;
160
-
161
- if (n == 0)
162
- {
163
- /* Check for the error flag IFF N == 0, so that we don't
164
- exit the loop after a partial read due to e.g., EAGAIN
165
- or EWOULDBLOCK. */
166
- if (ferror (stream))
167
- return 1;
168
- goto process_partial_block;
169
- }
170
-
171
- /* We've read at least one byte, so ignore errors. But always
172
- check for EOF, since feof may be true even though N > 0.
173
- Otherwise, we could end up calling fread after EOF. */
174
- if (feof (stream))
175
- goto process_partial_block;
176
- }
177
-
178
- /* Process buffer with BLOCKSIZE bytes. Note that
179
- BLOCKSIZE % 64 == 0
180
- */
181
- md5_process_block (buffer, BLOCKSIZE, &ctx);
182
- }
183
-
184
- process_partial_block:;
185
-
186
- /* Process any remaining bytes. */
187
- if (sum > 0)
188
- md5_process_bytes (buffer, sum, &ctx);
189
-
190
- /* Construct result in desired memory. */
191
- md5_finish_ctx (&ctx, resblock);
192
- return 0;
193
- }
194
-
195
- /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
196
- result is always in little endian byte order, so that a byte-wise
197
- output yields to the wanted ASCII representation of the message
198
- digest. */
199
- void *
200
- md5_buffer (const char *buffer, size_t len, void *resblock)
201
- {
202
- struct md5_ctx ctx;
203
-
204
- /* Initialize the computation context. */
205
- md5_init_ctx (&ctx);
206
-
207
- /* Process whole buffer but last len % 64 bytes. */
208
- md5_process_bytes (buffer, len, &ctx);
209
-
210
- /* Put result in desired memory area. */
211
- return md5_finish_ctx (&ctx, resblock);
212
- }
213
-
214
-
215
- void
216
- md5_process_bytes ( const void *buffer, size_t len, struct md5_ctx *ctx)
217
- {
218
- /* When we already have some bits in our internal buffer concatenate
219
- both inputs first. */
220
- if (ctx->buflen != 0)
221
- {
222
- size_t left_over = ctx->buflen;
223
- size_t add = 128 - left_over > len ? len : 128 - left_over;
224
-
225
- memcpy (&ctx->buffer[left_over], buffer, add);
226
- ctx->buflen += add;
227
-
228
- if (ctx->buflen > 64)
229
- {
230
- md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
231
-
232
- ctx->buflen &= 63;
233
- /* The regions in the following copy operation cannot overlap. */
234
- memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
235
- ctx->buflen);
236
- }
237
-
238
- buffer = (const char *) buffer + add;
239
- len -= add;
240
- }
241
-
242
- /* Process available complete blocks. */
243
- if (len >= 64)
244
- {
245
- #if !_STRING_ARCH_unaligned
246
- /* To check alignment gcc has an appropriate operator. Other
247
- compilers don't. */
248
- # if __GNUC__ >= 2
249
- # define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0)
250
- # else
251
- # define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0)
252
- # endif
253
- if (UNALIGNED_P (buffer))
254
- while (len > 64)
255
- {
256
- memcpy (ctx->buffer, buffer, 64);
257
- md5_process_block (ctx->buffer, 64, ctx);
258
- buffer = (const char *) buffer + 64;
259
- len -= 64;
260
- }
261
- else
262
- #endif
263
- {
264
- md5_process_block (buffer, len & ~63, ctx);
265
- buffer = (const char *) buffer + (len & ~63);
266
- len &= 63;
267
- }
268
- }
269
-
270
- /* Move remaining bytes in internal buffer. */
271
- if (len > 0)
272
- {
273
- size_t left_over = ctx->buflen;
274
-
275
- memcpy (&ctx->buffer[left_over], buffer, len);
276
- left_over += len;
277
- if (left_over >= 64)
278
- {
279
- md5_process_block (ctx->buffer, 64, ctx);
280
- left_over -= 64;
281
- memcpy (ctx->buffer, &ctx->buffer[64], left_over);
282
- }
283
- ctx->buflen = left_over;
284
- }
285
- }
286
-
287
-
288
- /* These are the four functions used in the four steps of the MD5 algorithm
289
- and defined in the RFC 1321. The first function is a little bit optimized
290
- (as found in Colin Plumbs public domain implementation). */
291
- /* #define FF(b, c, d) ((b & c) | (~b & d)) */
292
- #define FF(b, c, d) (d ^ (b & (c ^ d)))
293
- #define FG(b, c, d) FF (d, b, c)
294
- #define FH(b, c, d) (b ^ c ^ d)
295
- #define FI(b, c, d) (c ^ (b | ~d))
296
-
297
- /* Process LEN bytes of BUFFER, accumulating context into CTX.
298
- It is assumed that LEN % 64 == 0. */
299
-
300
- void
301
- md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx)
302
- {
303
- md5_uint32 correct_words[16];
304
- const md5_uint32 *words = (const md5_uint32 *) buffer;
305
- size_t nwords = len / sizeof (md5_uint32);
306
- const md5_uint32 *endp = words + nwords;
307
- md5_uint32 A = ctx->A;
308
- md5_uint32 B = ctx->B;
309
- md5_uint32 C = ctx->C;
310
- md5_uint32 D = ctx->D;
311
-
312
- /* First increment the byte count. RFC 1321 specifies the possible
313
- length of the file up to 2^64 bits. Here we only compute the
314
- number of bytes. Do a double word increment. */
315
- ctx->total[0] += len;
316
- if (ctx->total[0] < len)
317
- ++ctx->total[1];
318
-
319
- /* Process all bytes in the buffer with 64 bytes in each round of
320
- the loop. */
321
- while (words < endp)
322
- {
323
- md5_uint32 *cwp = correct_words;
324
- md5_uint32 A_save = A;
325
- md5_uint32 B_save = B;
326
- md5_uint32 C_save = C;
327
- md5_uint32 D_save = D;
328
-
329
- /* First round: using the given function, the context and a constant
330
- the next context is computed. Because the algorithms processing
331
- unit is a 32-bit word and it is determined to work on words in
332
- little endian byte order we perhaps have to change the byte order
333
- before the computation. To reduce the work for the next steps
334
- we store the swapped words in the array CORRECT_WORDS. */
335
-
336
- #define OP(a, b, c, d, s, T) \
337
- do \
338
- { \
339
- a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
340
- ++words; \
341
- a = rol (a, s); \
342
- a += b; \
343
- } \
344
- while (0)
345
-
346
- /* Before we start, one word to the strange constants.
347
- They are defined in RFC 1321 as
348
-
349
- T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or
350
- perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}'
351
- */
352
-
353
- /* Round 1. */
354
- OP (A, B, C, D, 7, 0xd76aa478);
355
- OP (D, A, B, C, 12, 0xe8c7b756);
356
- OP (C, D, A, B, 17, 0x242070db);
357
- OP (B, C, D, A, 22, 0xc1bdceee);
358
- OP (A, B, C, D, 7, 0xf57c0faf);
359
- OP (D, A, B, C, 12, 0x4787c62a);
360
- OP (C, D, A, B, 17, 0xa8304613);
361
- OP (B, C, D, A, 22, 0xfd469501);
362
- OP (A, B, C, D, 7, 0x698098d8);
363
- OP (D, A, B, C, 12, 0x8b44f7af);
364
- OP (C, D, A, B, 17, 0xffff5bb1);
365
- OP (B, C, D, A, 22, 0x895cd7be);
366
- OP (A, B, C, D, 7, 0x6b901122);
367
- OP (D, A, B, C, 12, 0xfd987193);
368
- OP (C, D, A, B, 17, 0xa679438e);
369
- OP (B, C, D, A, 22, 0x49b40821);
370
-
371
- /* For the second to fourth round we have the possibly swapped words
372
- in CORRECT_WORDS. Redefine the macro to take an additional first
373
- argument specifying the function to use. */
374
- #undef OP
375
- #define OP(f, a, b, c, d, k, s, T) \
376
- do \
377
- { \
378
- a += f (b, c, d) + correct_words[k] + T; \
379
- a = rol (a, s); \
380
- a += b; \
381
- } \
382
- while (0)
383
-
384
- /* Round 2. */
385
- OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
386
- OP (FG, D, A, B, C, 6, 9, 0xc040b340);
387
- OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
388
- OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
389
- OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
390
- OP (FG, D, A, B, C, 10, 9, 0x02441453);
391
- OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
392
- OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
393
- OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
394
- OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
395
- OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
396
- OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
397
- OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
398
- OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
399
- OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
400
- OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
401
-
402
- /* Round 3. */
403
- OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
404
- OP (FH, D, A, B, C, 8, 11, 0x8771f681);
405
- OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
406
- OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
407
- OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
408
- OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
409
- OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
410
- OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
411
- OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
412
- OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
413
- OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
414
- OP (FH, B, C, D, A, 6, 23, 0x04881d05);
415
- OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
416
- OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
417
- OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
418
- OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
419
-
420
- /* Round 4. */
421
- OP (FI, A, B, C, D, 0, 6, 0xf4292244);
422
- OP (FI, D, A, B, C, 7, 10, 0x432aff97);
423
- OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
424
- OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
425
- OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
426
- OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
427
- OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
428
- OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
429
- OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
430
- OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
431
- OP (FI, C, D, A, B, 6, 15, 0xa3014314);
432
- OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
433
- OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
434
- OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
435
- OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
436
- OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
437
-
438
- /* Add the starting values of the context. */
439
- A += A_save;
440
- B += B_save;
441
- C += C_save;
442
- D += D_save;
443
- }
444
-
445
- /* Put checksum in context given as argument. */
446
- ctx->A = A;
447
- ctx->B = B;
448
- ctx->C = C;
449
- ctx->D = D;
450
- }
@@ -1,166 +0,0 @@
1
- /* md5.h - Declaration of functions and data types used for MD5 sum
2
- computing library functions.
3
- Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc.
4
- NOTE: The canonical source of this file is maintained with the GNU C
5
- Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
6
-
7
- This program is free software; you can redistribute it and/or modify it
8
- under the terms of the GNU General Public License as published by the
9
- Free Software Foundation; either version 2, or (at your option) any
10
- later version.
11
-
12
- This program is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with this program; if not, write to the Free Software Foundation,
19
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
20
-
21
- #ifndef _MD5_H
22
- #define _MD5_H 1
23
-
24
- #include <stdio.h>
25
- #include <limits.h>
26
-
27
- /* The following contortions are an attempt to use the C preprocessor
28
- to determine an unsigned integral type that is 32 bits wide. An
29
- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
30
- doing that would require that the configure script compile and *run*
31
- the resulting executable. Locally running cross-compiled executables
32
- is usually not possible. */
33
-
34
- #if HAVE_INTTYPES_H || HAVE_STDINT_H
35
- # if HAVE_INTTYPES_H
36
- # include <inttypes.h>
37
- # else
38
- # include <stdint.h>
39
- # endif
40
- typedef uint32_t md5_uint32;
41
- typedef uintptr_t md5_uintptr;
42
- #else
43
- # if defined __STDC__ && __STDC__
44
- # define UINT_MAX_32_BITS 4294967295U
45
- # else
46
- # define UINT_MAX_32_BITS 0xFFFFFFFF
47
- # endif
48
-
49
- /* If UINT_MAX isn't defined, assume it's a 32-bit type.
50
- This should be valid for all systems GNU cares about because
51
- that doesn't include 16-bit systems, and only modern systems
52
- (that certainly have <limits.h>) have 64+-bit integral types. */
53
-
54
- # ifndef UINT_MAX
55
- # define UINT_MAX UINT_MAX_32_BITS
56
- # endif
57
-
58
- # if UINT_MAX == UINT_MAX_32_BITS
59
- typedef unsigned int md5_uint32;
60
- # else
61
- # if USHRT_MAX == UINT_MAX_32_BITS
62
- typedef unsigned short md5_uint32;
63
- # else
64
- # if ULONG_MAX == UINT_MAX_32_BITS
65
- typedef unsigned long md5_uint32;
66
- # else
67
- /* The following line is intended to evoke an error.
68
- Using #error is not portable enough. */
69
- "Cannot determine unsigned 32-bit data type."
70
- # endif
71
- # endif
72
- # endif
73
- /* We have to make a guess about the integer type equivalent in size
74
- to pointers which should always be correct. */
75
- typedef unsigned long int md5_uintptr;
76
- #endif
77
-
78
- #undef __P
79
- #if defined (__STDC__) && __STDC__
80
- #define __P(x) x
81
- #else
82
- #define __P(x) ()
83
- #endif
84
-
85
- /* Structure to save state of computation between the single steps. */
86
- struct md5_ctx
87
- {
88
- md5_uint32 A;
89
- md5_uint32 B;
90
- md5_uint32 C;
91
- md5_uint32 D;
92
-
93
- md5_uint32 total[2];
94
- md5_uint32 buflen;
95
- char buffer[128];
96
- };
97
-
98
- /*
99
- * The following three functions are build up the low level used in
100
- * the functions `md5_stream' and `md5_buffer'.
101
- */
102
-
103
- /* Initialize structure containing state of computation.
104
- (RFC 1321, 3.3: Step 3) */
105
- extern void md5_init_ctx __P ((struct md5_ctx *ctx));
106
-
107
- /* Starting with the result of former calls of this function (or the
108
- initialization function update the context for the next LEN bytes
109
- starting at BUFFER.
110
- It is necessary that LEN is a multiple of 64!!! */
111
- extern void md5_process_block __P ((const void *buffer, size_t len,
112
- struct md5_ctx *ctx));
113
-
114
- /* Starting with the result of former calls of this function (or the
115
- initialization function update the context for the next LEN bytes
116
- starting at BUFFER.
117
- It is NOT required that LEN is a multiple of 64. */
118
- extern void md5_process_bytes __P ((const void *buffer, size_t len,
119
- struct md5_ctx *ctx));
120
-
121
- /* Process the remaining bytes in the buffer and put result from CTX
122
- in first 16 bytes following RESBUF. The result is always in little
123
- endian byte order, so that a byte-wise output yields to the wanted
124
- ASCII representation of the message digest.
125
-
126
- IMPORTANT: On some systems it is required that RESBUF be correctly
127
- aligned for a 32 bits value. */
128
- extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf));
129
-
130
-
131
- /* Put result from CTX in first 16 bytes following RESBUF. The result is
132
- always in little endian byte order, so that a byte-wise output yields
133
- to the wanted ASCII representation of the message digest.
134
-
135
- IMPORTANT: On some systems it is required that RESBUF is correctly
136
- aligned for a 32 bits value. */
137
- extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
138
-
139
-
140
- /* Compute MD5 message digest for bytes read from STREAM. The
141
- resulting message digest number will be written into the 16 bytes
142
- beginning at RESBLOCK. */
143
- extern int md5_stream __P ((FILE *stream, void *resblock));
144
-
145
- /* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
146
- result is always in little endian byte order, so that a byte-wise
147
- output yields to the wanted ASCII representation of the message
148
- digest. */
149
- extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
150
-
151
- /* The following is from gnupg-1.0.2's cipher/bithelp.h. */
152
- /* Rotate a 32 bit integer by n bytes */
153
- #if defined __GNUC__ && defined __i386__
154
- static inline md5_uint32
155
- rol(md5_uint32 x, int n)
156
- {
157
- __asm__("roll %%cl,%0"
158
- :"=r" (x)
159
- :"0" (x),"c" (n));
160
- return x;
161
- }
162
- #else
163
- # define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) )
164
- #endif
165
-
166
- #endif