precompiled-digest-crc 0.7.0-x86_64-linux

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 (236) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/cibuildgem.yaml +89 -0
  3. data/.github/workflows/integration.yml +26 -0
  4. data/.github/workflows/ruby.yml +33 -0
  5. data/.gitignore +11 -0
  6. data/.rspec +1 -0
  7. data/.yardopts +1 -0
  8. data/ChangeLog.md +212 -0
  9. data/Gemfile +16 -0
  10. data/LICENSE.txt +20 -0
  11. data/README.md +401 -0
  12. data/Rakefile +57 -0
  13. data/benchmarks.rb +59 -0
  14. data/digest-crc.gemspec +65 -0
  15. data/ext/digest/Rakefile +46 -0
  16. data/ext/digest/compat/ruby.h +11 -0
  17. data/ext/digest/crc12_3gpp/3.3/crc12_3gpp_ext.so +0 -0
  18. data/ext/digest/crc12_3gpp/3.4/crc12_3gpp_ext.so +0 -0
  19. data/ext/digest/crc12_3gpp/4.0/crc12_3gpp_ext.so +0 -0
  20. data/ext/digest/crc12_3gpp/crc12_3gpp.c +68 -0
  21. data/ext/digest/crc12_3gpp/crc12_3gpp.h +11 -0
  22. data/ext/digest/crc12_3gpp/crc12_3gpp_ext.c +32 -0
  23. data/ext/digest/crc12_3gpp/extconf.rb +7 -0
  24. data/ext/digest/crc15/3.3/crc15_ext.so +0 -0
  25. data/ext/digest/crc15/3.4/crc15_ext.so +0 -0
  26. data/ext/digest/crc15/4.0/crc15_ext.so +0 -0
  27. data/ext/digest/crc15/crc15.c +54 -0
  28. data/ext/digest/crc15/crc15.h +11 -0
  29. data/ext/digest/crc15/crc15_ext.c +33 -0
  30. data/ext/digest/crc15/extconf.rb +7 -0
  31. data/ext/digest/crc16/3.3/crc16_ext.so +0 -0
  32. data/ext/digest/crc16/3.4/crc16_ext.so +0 -0
  33. data/ext/digest/crc16/4.0/crc16_ext.so +0 -0
  34. data/ext/digest/crc16/crc16.c +70 -0
  35. data/ext/digest/crc16/crc16.h +11 -0
  36. data/ext/digest/crc16/crc16_ext.c +33 -0
  37. data/ext/digest/crc16/extconf.rb +7 -0
  38. data/ext/digest/crc16_ccitt/3.3/crc16_ccitt_ext.so +0 -0
  39. data/ext/digest/crc16_ccitt/3.4/crc16_ccitt_ext.so +0 -0
  40. data/ext/digest/crc16_ccitt/4.0/crc16_ccitt_ext.so +0 -0
  41. data/ext/digest/crc16_ccitt/crc16_ccitt.c +70 -0
  42. data/ext/digest/crc16_ccitt/crc16_ccitt.h +8 -0
  43. data/ext/digest/crc16_ccitt/crc16_ccitt_ext.c +33 -0
  44. data/ext/digest/crc16_ccitt/extconf.rb +7 -0
  45. data/ext/digest/crc16_dnp/3.3/crc16_dnp_ext.so +0 -0
  46. data/ext/digest/crc16_dnp/3.4/crc16_dnp_ext.so +0 -0
  47. data/ext/digest/crc16_dnp/4.0/crc16_dnp_ext.so +0 -0
  48. data/ext/digest/crc16_dnp/crc16_dnp.c +54 -0
  49. data/ext/digest/crc16_dnp/crc16_dnp.h +8 -0
  50. data/ext/digest/crc16_dnp/crc16_dnp_ext.c +33 -0
  51. data/ext/digest/crc16_dnp/extconf.rb +7 -0
  52. data/ext/digest/crc16_genibus/3.3/crc16_genibus_ext.so +0 -0
  53. data/ext/digest/crc16_genibus/3.4/crc16_genibus_ext.so +0 -0
  54. data/ext/digest/crc16_genibus/4.0/crc16_genibus_ext.so +0 -0
  55. data/ext/digest/crc16_genibus/crc16_genibus.c +70 -0
  56. data/ext/digest/crc16_genibus/crc16_genibus.h +8 -0
  57. data/ext/digest/crc16_genibus/crc16_genibus_ext.c +33 -0
  58. data/ext/digest/crc16_genibus/extconf.rb +7 -0
  59. data/ext/digest/crc16_kermit/3.3/crc16_kermit_ext.so +0 -0
  60. data/ext/digest/crc16_kermit/3.4/crc16_kermit_ext.so +0 -0
  61. data/ext/digest/crc16_kermit/4.0/crc16_kermit_ext.so +0 -0
  62. data/ext/digest/crc16_kermit/crc16_kermit.c +70 -0
  63. data/ext/digest/crc16_kermit/crc16_kermit.h +8 -0
  64. data/ext/digest/crc16_kermit/crc16_kermit_ext.c +33 -0
  65. data/ext/digest/crc16_kermit/extconf.rb +7 -0
  66. data/ext/digest/crc16_modbus/3.3/crc16_modbus_ext.so +0 -0
  67. data/ext/digest/crc16_modbus/3.4/crc16_modbus_ext.so +0 -0
  68. data/ext/digest/crc16_modbus/4.0/crc16_modbus_ext.so +0 -0
  69. data/ext/digest/crc16_modbus/crc16_modbus.c +70 -0
  70. data/ext/digest/crc16_modbus/crc16_modbus.h +8 -0
  71. data/ext/digest/crc16_modbus/crc16_modbus_ext.c +32 -0
  72. data/ext/digest/crc16_modbus/extconf.rb +7 -0
  73. data/ext/digest/crc16_usb/3.3/crc16_usb_ext.so +0 -0
  74. data/ext/digest/crc16_usb/3.4/crc16_usb_ext.so +0 -0
  75. data/ext/digest/crc16_usb/4.0/crc16_usb_ext.so +0 -0
  76. data/ext/digest/crc16_usb/crc16_usb.c +70 -0
  77. data/ext/digest/crc16_usb/crc16_usb.h +8 -0
  78. data/ext/digest/crc16_usb/crc16_usb_ext.c +32 -0
  79. data/ext/digest/crc16_usb/extconf.rb +7 -0
  80. data/ext/digest/crc16_x_25/3.3/crc16_x_25_ext.so +0 -0
  81. data/ext/digest/crc16_x_25/3.4/crc16_x_25_ext.so +0 -0
  82. data/ext/digest/crc16_x_25/4.0/crc16_x_25_ext.so +0 -0
  83. data/ext/digest/crc16_x_25/crc16_x_25.c +70 -0
  84. data/ext/digest/crc16_x_25/crc16_x_25.h +8 -0
  85. data/ext/digest/crc16_x_25/crc16_x_25_ext.c +32 -0
  86. data/ext/digest/crc16_x_25/extconf.rb +7 -0
  87. data/ext/digest/crc16_xmodem/3.3/crc16_xmodem_ext.so +0 -0
  88. data/ext/digest/crc16_xmodem/3.4/crc16_xmodem_ext.so +0 -0
  89. data/ext/digest/crc16_xmodem/4.0/crc16_xmodem_ext.so +0 -0
  90. data/ext/digest/crc16_xmodem/crc16_xmodem.c +70 -0
  91. data/ext/digest/crc16_xmodem/crc16_xmodem.h +8 -0
  92. data/ext/digest/crc16_xmodem/crc16_xmodem_ext.c +33 -0
  93. data/ext/digest/crc16_xmodem/extconf.rb +7 -0
  94. data/ext/digest/crc16_zmodem/3.3/crc16_zmodem_ext.so +0 -0
  95. data/ext/digest/crc16_zmodem/3.4/crc16_zmodem_ext.so +0 -0
  96. data/ext/digest/crc16_zmodem/4.0/crc16_zmodem_ext.so +0 -0
  97. data/ext/digest/crc16_zmodem/crc16_zmodem.c +70 -0
  98. data/ext/digest/crc16_zmodem/crc16_zmodem.h +8 -0
  99. data/ext/digest/crc16_zmodem/crc16_zmodem_ext.c +33 -0
  100. data/ext/digest/crc16_zmodem/extconf.rb +7 -0
  101. data/ext/digest/crc24/3.3/crc24_ext.so +0 -0
  102. data/ext/digest/crc24/3.4/crc24_ext.so +0 -0
  103. data/ext/digest/crc24/4.0/crc24_ext.so +0 -0
  104. data/ext/digest/crc24/crc24.c +70 -0
  105. data/ext/digest/crc24/crc24.h +11 -0
  106. data/ext/digest/crc24/crc24_ext.c +32 -0
  107. data/ext/digest/crc24/extconf.rb +7 -0
  108. data/ext/digest/crc32/3.3/crc32_ext.so +0 -0
  109. data/ext/digest/crc32/3.4/crc32_ext.so +0 -0
  110. data/ext/digest/crc32/4.0/crc32_ext.so +0 -0
  111. data/ext/digest/crc32/crc32.c +69 -0
  112. data/ext/digest/crc32/crc32.h +11 -0
  113. data/ext/digest/crc32/crc32_ext.c +32 -0
  114. data/ext/digest/crc32/extconf.rb +7 -0
  115. data/ext/digest/crc32_bzip2/3.3/crc32_bzip2_ext.so +0 -0
  116. data/ext/digest/crc32_bzip2/3.4/crc32_bzip2_ext.so +0 -0
  117. data/ext/digest/crc32_bzip2/4.0/crc32_bzip2_ext.so +0 -0
  118. data/ext/digest/crc32_bzip2/crc32_bzip2.c +70 -0
  119. data/ext/digest/crc32_bzip2/crc32_bzip2.h +8 -0
  120. data/ext/digest/crc32_bzip2/crc32_bzip2_ext.c +32 -0
  121. data/ext/digest/crc32_bzip2/extconf.rb +7 -0
  122. data/ext/digest/crc32_jam/3.3/crc32_jam_ext.so +0 -0
  123. data/ext/digest/crc32_jam/3.4/crc32_jam_ext.so +0 -0
  124. data/ext/digest/crc32_jam/4.0/crc32_jam_ext.so +0 -0
  125. data/ext/digest/crc32_jam/crc32_jam.c +70 -0
  126. data/ext/digest/crc32_jam/crc32_jam.h +8 -0
  127. data/ext/digest/crc32_jam/crc32_jam_ext.c +31 -0
  128. data/ext/digest/crc32_jam/extconf.rb +7 -0
  129. data/ext/digest/crc32_mpeg/3.3/crc32_mpeg_ext.so +0 -0
  130. data/ext/digest/crc32_mpeg/3.4/crc32_mpeg_ext.so +0 -0
  131. data/ext/digest/crc32_mpeg/4.0/crc32_mpeg_ext.so +0 -0
  132. data/ext/digest/crc32_mpeg/crc32_mpeg.c +70 -0
  133. data/ext/digest/crc32_mpeg/crc32_mpeg.h +8 -0
  134. data/ext/digest/crc32_mpeg/crc32_mpeg_ext.c +32 -0
  135. data/ext/digest/crc32_mpeg/extconf.rb +7 -0
  136. data/ext/digest/crc32_posix/3.3/crc32_posix_ext.so +0 -0
  137. data/ext/digest/crc32_posix/3.4/crc32_posix_ext.so +0 -0
  138. data/ext/digest/crc32_posix/4.0/crc32_posix_ext.so +0 -0
  139. data/ext/digest/crc32_posix/crc32_posix.c +70 -0
  140. data/ext/digest/crc32_posix/crc32_posix.h +8 -0
  141. data/ext/digest/crc32_posix/crc32_posix_ext.c +32 -0
  142. data/ext/digest/crc32_posix/extconf.rb +7 -0
  143. data/ext/digest/crc32_xfer/3.3/crc32_xfer_ext.so +0 -0
  144. data/ext/digest/crc32_xfer/3.4/crc32_xfer_ext.so +0 -0
  145. data/ext/digest/crc32_xfer/4.0/crc32_xfer_ext.so +0 -0
  146. data/ext/digest/crc32_xfer/crc32_xfer.c +70 -0
  147. data/ext/digest/crc32_xfer/crc32_xfer.h +8 -0
  148. data/ext/digest/crc32_xfer/crc32_xfer_ext.c +32 -0
  149. data/ext/digest/crc32_xfer/extconf.rb +7 -0
  150. data/ext/digest/crc32c/3.3/crc32c_ext.so +0 -0
  151. data/ext/digest/crc32c/3.4/crc32c_ext.so +0 -0
  152. data/ext/digest/crc32c/4.0/crc32c_ext.so +0 -0
  153. data/ext/digest/crc32c/crc32c.c +70 -0
  154. data/ext/digest/crc32c/crc32c.h +8 -0
  155. data/ext/digest/crc32c/crc32c_ext.c +31 -0
  156. data/ext/digest/crc32c/extconf.rb +7 -0
  157. data/ext/digest/crc5/3.3/crc5_ext.so +0 -0
  158. data/ext/digest/crc5/3.4/crc5_ext.so +0 -0
  159. data/ext/digest/crc5/4.0/crc5_ext.so +0 -0
  160. data/ext/digest/crc5/crc5.c +54 -0
  161. data/ext/digest/crc5/crc5.h +11 -0
  162. data/ext/digest/crc5/crc5_ext.c +32 -0
  163. data/ext/digest/crc5/extconf.rb +7 -0
  164. data/ext/digest/crc64/3.3/crc64_ext.so +0 -0
  165. data/ext/digest/crc64/3.4/crc64_ext.so +0 -0
  166. data/ext/digest/crc64/4.0/crc64_ext.so +0 -0
  167. data/ext/digest/crc64/crc64.c +102 -0
  168. data/ext/digest/crc64/crc64.h +11 -0
  169. data/ext/digest/crc64/crc64_ext.c +32 -0
  170. data/ext/digest/crc64/extconf.rb +7 -0
  171. data/ext/digest/crc64_jones/3.3/crc64_jones_ext.so +0 -0
  172. data/ext/digest/crc64_jones/3.4/crc64_jones_ext.so +0 -0
  173. data/ext/digest/crc64_jones/4.0/crc64_jones_ext.so +0 -0
  174. data/ext/digest/crc64_jones/crc64_jones.c +102 -0
  175. data/ext/digest/crc64_jones/crc64_jones.h +8 -0
  176. data/ext/digest/crc64_jones/crc64_jones_ext.c +31 -0
  177. data/ext/digest/crc64_jones/extconf.rb +7 -0
  178. data/ext/digest/crc64_nvme/3.3/crc64_nvme_ext.so +0 -0
  179. data/ext/digest/crc64_nvme/3.4/crc64_nvme_ext.so +0 -0
  180. data/ext/digest/crc64_nvme/4.0/crc64_nvme_ext.so +0 -0
  181. data/ext/digest/crc64_nvme/crc64_nvme.c +102 -0
  182. data/ext/digest/crc64_nvme/crc64_nvme.h +8 -0
  183. data/ext/digest/crc64_nvme/crc64_nvme_ext.c +31 -0
  184. data/ext/digest/crc64_nvme/extconf.rb +7 -0
  185. data/ext/digest/crc64_xz/3.3/crc64_xz_ext.so +0 -0
  186. data/ext/digest/crc64_xz/3.4/crc64_xz_ext.so +0 -0
  187. data/ext/digest/crc64_xz/4.0/crc64_xz_ext.so +0 -0
  188. data/ext/digest/crc64_xz/crc64_xz.c +102 -0
  189. data/ext/digest/crc64_xz/crc64_xz.h +8 -0
  190. data/ext/digest/crc64_xz/crc64_xz_ext.c +31 -0
  191. data/ext/digest/crc64_xz/extconf.rb +7 -0
  192. data/ext/digest/crc8/3.3/crc8_ext.so +0 -0
  193. data/ext/digest/crc8/3.4/crc8_ext.so +0 -0
  194. data/ext/digest/crc8/4.0/crc8_ext.so +0 -0
  195. data/ext/digest/crc8/crc8.c +54 -0
  196. data/ext/digest/crc8/crc8.h +11 -0
  197. data/ext/digest/crc8/crc8_ext.c +32 -0
  198. data/ext/digest/crc8/extconf.rb +7 -0
  199. data/ext/digest/crc8_1wire/3.3/crc8_1wire_ext.so +0 -0
  200. data/ext/digest/crc8_1wire/3.4/crc8_1wire_ext.so +0 -0
  201. data/ext/digest/crc8_1wire/4.0/crc8_1wire_ext.so +0 -0
  202. data/ext/digest/crc8_1wire/crc8_1wire.c +54 -0
  203. data/ext/digest/crc8_1wire/crc8_1wire.h +8 -0
  204. data/ext/digest/crc8_1wire/crc8_1wire_ext.c +31 -0
  205. data/ext/digest/crc8_1wire/extconf.rb +7 -0
  206. data/gemspec.yml +25 -0
  207. data/lib/digest/crc.rb +211 -0
  208. data/lib/digest/crc1.rb +37 -0
  209. data/lib/digest/crc15.rb +45 -0
  210. data/lib/digest/crc16.rb +61 -0
  211. data/lib/digest/crc16_ccitt.rb +59 -0
  212. data/lib/digest/crc16_dnp.rb +62 -0
  213. data/lib/digest/crc16_genibus.rb +65 -0
  214. data/lib/digest/crc16_kermit.rb +59 -0
  215. data/lib/digest/crc16_modbus.rb +57 -0
  216. data/lib/digest/crc16_qt.rb +11 -0
  217. data/lib/digest/crc16_usb.rb +23 -0
  218. data/lib/digest/crc16_x_25.rb +63 -0
  219. data/lib/digest/crc16_xmodem.rb +57 -0
  220. data/lib/digest/crc16_zmodem.rb +57 -0
  221. data/lib/digest/crc24.rb +61 -0
  222. data/lib/digest/crc32.rb +95 -0
  223. data/lib/digest/crc32_bzip2.rb +57 -0
  224. data/lib/digest/crc32_jam.rb +16 -0
  225. data/lib/digest/crc32_mpeg.rb +94 -0
  226. data/lib/digest/crc32_posix.rb +58 -0
  227. data/lib/digest/crc32_xfer.rb +61 -0
  228. data/lib/digest/crc32c.rb +87 -0
  229. data/lib/digest/crc5.rb +58 -0
  230. data/lib/digest/crc64.rb +95 -0
  231. data/lib/digest/crc64_jones.rb +93 -0
  232. data/lib/digest/crc64_nvme.rb +95 -0
  233. data/lib/digest/crc64_xz.rb +95 -0
  234. data/lib/digest/crc8.rb +45 -0
  235. data/lib/digest/crc8_1wire.rb +42 -0
  236. metadata +322 -0
@@ -0,0 +1,70 @@
1
+ /*
2
+ * \file
3
+ * Functions and types for CRC checks.
4
+ *
5
+ * Generated on Sat Feb 29 02:33:07 2020
6
+ * by pycrc v0.9.2, https://pycrc.org
7
+ * using the configuration:
8
+ * - Width = 32
9
+ * - Poly = 0x04c11db7
10
+ * - XorIn = 0xffffffff
11
+ * - ReflectIn = True
12
+ * - XorOut = 0x00000000
13
+ * - ReflectOut = True
14
+ * - Algorithm = table-driven
15
+ */
16
+
17
+ #include "crc32_jam.h"
18
+
19
+ /**
20
+ * Static table used for the table_driven implementation.
21
+ */
22
+ static const crc32_t crc32_table[256] = {
23
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
24
+ 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
25
+ 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
26
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
27
+ 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
28
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
29
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
30
+ 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
31
+ 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
32
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
33
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
34
+ 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
35
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
36
+ 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
37
+ 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
38
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
39
+ 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
40
+ 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
41
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
42
+ 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
43
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
44
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
45
+ 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
46
+ 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
47
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
48
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
49
+ 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
50
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
51
+ 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
52
+ 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
53
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
54
+ 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
55
+ };
56
+
57
+ crc32_t crc32_jam_update(crc32_t crc, const void *data, size_t data_len)
58
+ {
59
+ const unsigned char *d = (const unsigned char *)data;
60
+ unsigned int tbl_idx;
61
+
62
+ while (data_len--)
63
+ {
64
+ tbl_idx = (crc ^ *d) & 0xff;
65
+ crc = (crc32_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff;
66
+ d++;
67
+ }
68
+
69
+ return crc & 0xffffffff;
70
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef _CRC32_JAM_H_
2
+ #define _CRC32_JAM_H_
3
+
4
+ #include "../crc32/crc32.h"
5
+
6
+ crc32_t crc32_jam_update(crc32_t crc, const void *data, size_t data_len);
7
+
8
+ #endif
@@ -0,0 +1,31 @@
1
+ #include "ruby.h"
2
+ #include "extconf.h"
3
+
4
+ #include "crc32_jam.h"
5
+
6
+ VALUE Digest_CRC32Jam_update(VALUE self, VALUE data)
7
+ {
8
+ VALUE crc_ivar_name = rb_intern("@crc");
9
+ VALUE crc_ivar = rb_ivar_get(self, crc_ivar_name);
10
+ crc32_t crc = NUM2UINT(crc_ivar);
11
+
12
+ const char *data_ptr = StringValuePtr(data);
13
+ size_t length = RSTRING_LEN(data);
14
+
15
+ crc = crc32_jam_update(crc,data_ptr,length);
16
+
17
+ rb_ivar_set(self, crc_ivar_name, UINT2NUM(crc));
18
+ return self;
19
+ }
20
+
21
+ void Init_crc32_jam_ext()
22
+ {
23
+ VALUE mDigest = rb_const_get(rb_cObject, rb_intern("Digest"));
24
+ VALUE cCRC32Jam = rb_const_get(mDigest, rb_intern("CRC32Jam"));
25
+
26
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
27
+ rb_ext_ractor_safe(true);
28
+ #endif
29
+
30
+ rb_define_method(cCRC32Jam, "update", Digest_CRC32Jam_update, 1);
31
+ }
@@ -0,0 +1,7 @@
1
+ require 'mkmf'
2
+
3
+ have_header("stdint.h")
4
+ have_header('stddef.h')
5
+
6
+ create_header
7
+ create_makefile "digest/crc32_jam/crc32_jam_ext"
@@ -0,0 +1,70 @@
1
+ /**
2
+ * \file
3
+ * Functions and types for CRC checks.
4
+ *
5
+ * Generated on Sat Feb 29 02:06:59 2020
6
+ * by pycrc v0.9.2, https://pycrc.org
7
+ * using the configuration:
8
+ * - Width = 32
9
+ * - Poly = 0x04c11db7
10
+ * - XorIn = 0xffffffff
11
+ * - ReflectIn = False
12
+ * - XorOut = 0x00000000
13
+ * - ReflectOut = False
14
+ * - Algorithm = table-driven
15
+ */
16
+
17
+ #include "crc32_mpeg.h"
18
+
19
+ /**
20
+ * Static table used for the table_driven implementation.
21
+ */
22
+ static const crc32_t crc32_mpeg_table[256] = {
23
+ 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
24
+ 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
25
+ 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
26
+ 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
27
+ 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
28
+ 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
29
+ 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
30
+ 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
31
+ 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
32
+ 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
33
+ 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
34
+ 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
35
+ 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
36
+ 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
37
+ 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
38
+ 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
39
+ 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
40
+ 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
41
+ 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
42
+ 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
43
+ 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
44
+ 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
45
+ 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
46
+ 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
47
+ 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
48
+ 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
49
+ 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
50
+ 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
51
+ 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
52
+ 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
53
+ 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
54
+ 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
55
+ };
56
+
57
+ crc32_t crc32_mpeg_update(crc32_t crc, const void *data, size_t data_len)
58
+ {
59
+ const unsigned char *d = (const unsigned char *)data;
60
+ unsigned int tbl_idx;
61
+
62
+ while (data_len--)
63
+ {
64
+ tbl_idx = ((crc >> 24) ^ *d) & 0xff;
65
+ crc = (crc32_mpeg_table[tbl_idx] ^ (crc << 8)) & 0xffffffff;
66
+ d++;
67
+ }
68
+
69
+ return crc & 0xffffffff;
70
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef _CRC32_MPEG_H_
2
+ #define _CRC32_MPEG_H_
3
+
4
+ #include "../crc32/crc32.h"
5
+
6
+ crc32_t crc32_mpeg_update(crc32_t crc, const void *data, size_t data_len);
7
+
8
+ #endif
@@ -0,0 +1,32 @@
1
+ #include "ruby.h"
2
+ #include "extconf.h"
3
+
4
+ #include "crc32_mpeg.h"
5
+
6
+ VALUE Digest_CRC32MPEG_update(VALUE self, VALUE data)
7
+ {
8
+ VALUE crc_ivar_name = rb_intern("@crc");
9
+ VALUE crc_ivar = rb_ivar_get(self, crc_ivar_name);
10
+ crc32_t crc = NUM2UINT(crc_ivar);
11
+
12
+ const char *data_ptr = StringValuePtr(data);
13
+ size_t length = RSTRING_LEN(data);
14
+
15
+ crc = crc32_mpeg_update(crc,data_ptr,length);
16
+
17
+ rb_ivar_set(self, crc_ivar_name, UINT2NUM(crc));
18
+ return self;
19
+ }
20
+
21
+ void Init_crc32_mpeg_ext()
22
+ {
23
+ VALUE mDigest = rb_const_get(rb_cObject, rb_intern("Digest"));
24
+ VALUE cCRC32MPEG = rb_const_get(mDigest, rb_intern("CRC32MPEG"));
25
+
26
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
27
+ rb_ext_ractor_safe(true);
28
+ #endif
29
+
30
+ rb_undef_method(cCRC32MPEG, "update");
31
+ rb_define_method(cCRC32MPEG, "update", Digest_CRC32MPEG_update, 1);
32
+ }
@@ -0,0 +1,7 @@
1
+ require 'mkmf'
2
+
3
+ have_header("stdint.h")
4
+ have_header('stddef.h')
5
+
6
+ create_header
7
+ create_makefile "digest/crc32_mpeg/crc32_mpeg_ext"
@@ -0,0 +1,70 @@
1
+ /**
2
+ * \file
3
+ * Functions and types for CRC checks.
4
+ *
5
+ * Generated on Sat Feb 29 02:32:59 2020
6
+ * by pycrc v0.9.2, https://pycrc.org
7
+ * using the configuration:
8
+ * - Width = 32
9
+ * - Poly = 0x04c11db7
10
+ * - XorIn = 0x00000000
11
+ * - ReflectIn = False
12
+ * - XorOut = 0xffffffff
13
+ * - ReflectOut = False
14
+ * - Algorithm = table-driven
15
+ */
16
+
17
+ #include "crc32_posix.h"
18
+
19
+ /**
20
+ * Static table used for the table_driven implementation.
21
+ */
22
+ static const crc32_t crc32_posix_table[256] = {
23
+ 0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
24
+ 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
25
+ 0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
26
+ 0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
27
+ 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039, 0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
28
+ 0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
29
+ 0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
30
+ 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
31
+ 0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
32
+ 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
33
+ 0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
34
+ 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
35
+ 0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
36
+ 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
37
+ 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
38
+ 0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
39
+ 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
40
+ 0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
41
+ 0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
42
+ 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff, 0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
43
+ 0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
44
+ 0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
45
+ 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
46
+ 0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
47
+ 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
48
+ 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
49
+ 0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
50
+ 0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
51
+ 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
52
+ 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
53
+ 0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
54
+ 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
55
+ };
56
+
57
+ crc32_t crc32_posix_update(crc32_t crc, const void *data, size_t data_len)
58
+ {
59
+ const unsigned char *d = (const unsigned char *)data;
60
+ unsigned int tbl_idx;
61
+
62
+ while (data_len--)
63
+ {
64
+ tbl_idx = ((crc >> 24) ^ *d) & 0xff;
65
+ crc = (crc32_posix_table[tbl_idx] ^ (crc << 8)) & 0xffffffff;
66
+ d++;
67
+ }
68
+
69
+ return crc & 0xffffffff;
70
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef _CRC32_POSIX_H_
2
+ #define _CRC32_POSIX_H_
3
+
4
+ #include "../crc32/crc32.h"
5
+
6
+ crc32_t crc32_posix_update(crc32_t crc, const void *data, size_t data_len);
7
+
8
+ #endif
@@ -0,0 +1,32 @@
1
+ #include "ruby.h"
2
+ #include "extconf.h"
3
+
4
+ #include "crc32_posix.h"
5
+
6
+ VALUE Digest_CRC32POSIX_update(VALUE self, VALUE data)
7
+ {
8
+ VALUE crc_ivar_name = rb_intern("@crc");
9
+ VALUE crc_ivar = rb_ivar_get(self, crc_ivar_name);
10
+ crc32_t crc = NUM2UINT(crc_ivar);
11
+
12
+ const char *data_ptr = StringValuePtr(data);
13
+ size_t length = RSTRING_LEN(data);
14
+
15
+ crc = crc32_posix_update(crc,data_ptr,length);
16
+
17
+ rb_ivar_set(self, crc_ivar_name, UINT2NUM(crc));
18
+ return self;
19
+ }
20
+
21
+ void Init_crc32_posix_ext()
22
+ {
23
+ VALUE mDigest = rb_const_get(rb_cObject, rb_intern("Digest"));
24
+ VALUE cCRC32POSIX = rb_const_get(mDigest, rb_intern("CRC32POSIX"));
25
+
26
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
27
+ rb_ext_ractor_safe(true);
28
+ #endif
29
+
30
+ rb_undef_method(cCRC32POSIX, "update");
31
+ rb_define_method(cCRC32POSIX, "update", Digest_CRC32POSIX_update, 1);
32
+ }
@@ -0,0 +1,7 @@
1
+ require 'mkmf'
2
+
3
+ have_header("stdint.h")
4
+ have_header('stddef.h')
5
+
6
+ create_header
7
+ create_makefile "digest/crc32_posix/crc32_posix_ext"
@@ -0,0 +1,70 @@
1
+ /**
2
+ * \file
3
+ * Functions and types for CRC checks.
4
+ *
5
+ * Generated on Sat Feb 29 02:33:18 2020
6
+ * by pycrc v0.9.2, https://pycrc.org
7
+ * using the configuration:
8
+ * - Width = 32
9
+ * - Poly = 0x000000af
10
+ * - XorIn = 0x00000000
11
+ * - ReflectIn = False
12
+ * - XorOut = 0x00000000
13
+ * - ReflectOut = False
14
+ * - Algorithm = table-driven
15
+ */
16
+
17
+ #include "crc32_xfer.h"
18
+
19
+ /**
20
+ * Static table used for the table_driven implementation.
21
+ */
22
+ static const crc32_t crc32_xfer_table[256] = {
23
+ 0x00000000, 0x000000af, 0x0000015e, 0x000001f1, 0x000002bc, 0x00000213, 0x000003e2, 0x0000034d,
24
+ 0x00000578, 0x000005d7, 0x00000426, 0x00000489, 0x000007c4, 0x0000076b, 0x0000069a, 0x00000635,
25
+ 0x00000af0, 0x00000a5f, 0x00000bae, 0x00000b01, 0x0000084c, 0x000008e3, 0x00000912, 0x000009bd,
26
+ 0x00000f88, 0x00000f27, 0x00000ed6, 0x00000e79, 0x00000d34, 0x00000d9b, 0x00000c6a, 0x00000cc5,
27
+ 0x000015e0, 0x0000154f, 0x000014be, 0x00001411, 0x0000175c, 0x000017f3, 0x00001602, 0x000016ad,
28
+ 0x00001098, 0x00001037, 0x000011c6, 0x00001169, 0x00001224, 0x0000128b, 0x0000137a, 0x000013d5,
29
+ 0x00001f10, 0x00001fbf, 0x00001e4e, 0x00001ee1, 0x00001dac, 0x00001d03, 0x00001cf2, 0x00001c5d,
30
+ 0x00001a68, 0x00001ac7, 0x00001b36, 0x00001b99, 0x000018d4, 0x0000187b, 0x0000198a, 0x00001925,
31
+ 0x00002bc0, 0x00002b6f, 0x00002a9e, 0x00002a31, 0x0000297c, 0x000029d3, 0x00002822, 0x0000288d,
32
+ 0x00002eb8, 0x00002e17, 0x00002fe6, 0x00002f49, 0x00002c04, 0x00002cab, 0x00002d5a, 0x00002df5,
33
+ 0x00002130, 0x0000219f, 0x0000206e, 0x000020c1, 0x0000238c, 0x00002323, 0x000022d2, 0x0000227d,
34
+ 0x00002448, 0x000024e7, 0x00002516, 0x000025b9, 0x000026f4, 0x0000265b, 0x000027aa, 0x00002705,
35
+ 0x00003e20, 0x00003e8f, 0x00003f7e, 0x00003fd1, 0x00003c9c, 0x00003c33, 0x00003dc2, 0x00003d6d,
36
+ 0x00003b58, 0x00003bf7, 0x00003a06, 0x00003aa9, 0x000039e4, 0x0000394b, 0x000038ba, 0x00003815,
37
+ 0x000034d0, 0x0000347f, 0x0000358e, 0x00003521, 0x0000366c, 0x000036c3, 0x00003732, 0x0000379d,
38
+ 0x000031a8, 0x00003107, 0x000030f6, 0x00003059, 0x00003314, 0x000033bb, 0x0000324a, 0x000032e5,
39
+ 0x00005780, 0x0000572f, 0x000056de, 0x00005671, 0x0000553c, 0x00005593, 0x00005462, 0x000054cd,
40
+ 0x000052f8, 0x00005257, 0x000053a6, 0x00005309, 0x00005044, 0x000050eb, 0x0000511a, 0x000051b5,
41
+ 0x00005d70, 0x00005ddf, 0x00005c2e, 0x00005c81, 0x00005fcc, 0x00005f63, 0x00005e92, 0x00005e3d,
42
+ 0x00005808, 0x000058a7, 0x00005956, 0x000059f9, 0x00005ab4, 0x00005a1b, 0x00005bea, 0x00005b45,
43
+ 0x00004260, 0x000042cf, 0x0000433e, 0x00004391, 0x000040dc, 0x00004073, 0x00004182, 0x0000412d,
44
+ 0x00004718, 0x000047b7, 0x00004646, 0x000046e9, 0x000045a4, 0x0000450b, 0x000044fa, 0x00004455,
45
+ 0x00004890, 0x0000483f, 0x000049ce, 0x00004961, 0x00004a2c, 0x00004a83, 0x00004b72, 0x00004bdd,
46
+ 0x00004de8, 0x00004d47, 0x00004cb6, 0x00004c19, 0x00004f54, 0x00004ffb, 0x00004e0a, 0x00004ea5,
47
+ 0x00007c40, 0x00007cef, 0x00007d1e, 0x00007db1, 0x00007efc, 0x00007e53, 0x00007fa2, 0x00007f0d,
48
+ 0x00007938, 0x00007997, 0x00007866, 0x000078c9, 0x00007b84, 0x00007b2b, 0x00007ada, 0x00007a75,
49
+ 0x000076b0, 0x0000761f, 0x000077ee, 0x00007741, 0x0000740c, 0x000074a3, 0x00007552, 0x000075fd,
50
+ 0x000073c8, 0x00007367, 0x00007296, 0x00007239, 0x00007174, 0x000071db, 0x0000702a, 0x00007085,
51
+ 0x000069a0, 0x0000690f, 0x000068fe, 0x00006851, 0x00006b1c, 0x00006bb3, 0x00006a42, 0x00006aed,
52
+ 0x00006cd8, 0x00006c77, 0x00006d86, 0x00006d29, 0x00006e64, 0x00006ecb, 0x00006f3a, 0x00006f95,
53
+ 0x00006350, 0x000063ff, 0x0000620e, 0x000062a1, 0x000061ec, 0x00006143, 0x000060b2, 0x0000601d,
54
+ 0x00006628, 0x00006687, 0x00006776, 0x000067d9, 0x00006494, 0x0000643b, 0x000065ca, 0x00006565
55
+ };
56
+
57
+ crc32_t crc32_xfer_update(crc32_t crc, const void *data, size_t data_len)
58
+ {
59
+ const unsigned char *d = (const unsigned char *)data;
60
+ unsigned int tbl_idx;
61
+
62
+ while (data_len--)
63
+ {
64
+ tbl_idx = ((crc >> 24) ^ *d) & 0xff;
65
+ crc = (crc32_xfer_table[tbl_idx] ^ (crc << 8)) & 0xffffffff;
66
+ d++;
67
+ }
68
+
69
+ return crc & 0xffffffff;
70
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef _CRC32_XFER_H_
2
+ #define _CRC32_XFER_H_
3
+
4
+ #include "../crc32/crc32.h"
5
+
6
+ crc32_t crc32_xfer_update(crc32_t crc, const void *data, size_t data_len);
7
+
8
+ #endif
@@ -0,0 +1,32 @@
1
+ #include "ruby.h"
2
+ #include "extconf.h"
3
+
4
+ #include "crc32_xfer.h"
5
+
6
+ VALUE Digest_CRC32XFER_update(VALUE self, VALUE data)
7
+ {
8
+ VALUE crc_ivar_name = rb_intern("@crc");
9
+ VALUE crc_ivar = rb_ivar_get(self, crc_ivar_name);
10
+ crc32_t crc = NUM2UINT(crc_ivar);
11
+
12
+ const char *data_ptr = StringValuePtr(data);
13
+ size_t length = RSTRING_LEN(data);
14
+
15
+ crc = crc32_xfer_update(crc,data_ptr,length);
16
+
17
+ rb_ivar_set(self, crc_ivar_name, UINT2NUM(crc));
18
+ return self;
19
+ }
20
+
21
+ void Init_crc32_xfer_ext()
22
+ {
23
+ VALUE mDigest = rb_const_get(rb_cObject, rb_intern("Digest"));
24
+ VALUE cCRC32XFER = rb_const_get(mDigest, rb_intern("CRC32XFER"));
25
+
26
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
27
+ rb_ext_ractor_safe(true);
28
+ #endif
29
+
30
+ rb_undef_method(cCRC32XFER, "update");
31
+ rb_define_method(cCRC32XFER, "update", Digest_CRC32XFER_update, 1);
32
+ }
@@ -0,0 +1,7 @@
1
+ require 'mkmf'
2
+
3
+ have_header("stdint.h")
4
+ have_header('stddef.h')
5
+
6
+ create_header
7
+ create_makefile "digest/crc32_xfer/crc32_xfer_ext"
Binary file
Binary file
Binary file
@@ -0,0 +1,70 @@
1
+ /**
2
+ * \file
3
+ * Functions and types for CRC checks.
4
+ *
5
+ * Generated on Sat Feb 29 02:07:24 2020
6
+ * by pycrc v0.9.2, https://pycrc.org
7
+ * using the configuration:
8
+ * - Width = 32
9
+ * - Poly = 0x1edc6f41
10
+ * - XorIn = 0xffffffff
11
+ * - ReflectIn = True
12
+ * - XorOut = 0xffffffff
13
+ * - ReflectOut = True
14
+ * - Algorithm = table-driven
15
+ */
16
+
17
+ #include "crc32c.h"
18
+
19
+ /**
20
+ * Static table used for the table_driven implementation.
21
+ */
22
+ static const crc32_t crc32c_table[256] = {
23
+ 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,
24
+ 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,
25
+ 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,
26
+ 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,
27
+ 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,
28
+ 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,
29
+ 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,
30
+ 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,
31
+ 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,
32
+ 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,
33
+ 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,
34
+ 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,
35
+ 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,
36
+ 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,
37
+ 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,
38
+ 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,
39
+ 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,
40
+ 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,
41
+ 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,
42
+ 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,
43
+ 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,
44
+ 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,
45
+ 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,
46
+ 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,
47
+ 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,
48
+ 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,
49
+ 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,
50
+ 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,
51
+ 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,
52
+ 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,
53
+ 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,
54
+ 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351
55
+ };
56
+
57
+ crc32_t crc32c_update(crc32_t crc, const void *data, size_t data_len)
58
+ {
59
+ const unsigned char *d = (const unsigned char *)data;
60
+ unsigned int tbl_idx;
61
+
62
+ while (data_len--)
63
+ {
64
+ tbl_idx = (crc ^ *d) & 0xff;
65
+ crc = (crc32c_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff;
66
+ d++;
67
+ }
68
+
69
+ return crc & 0xffffffff;
70
+ }
@@ -0,0 +1,8 @@
1
+ #ifndef _CRC32C_H_
2
+ #define _CRC32C_H_
3
+
4
+ #include "../crc32/crc32.h"
5
+
6
+ crc32_t crc32c_update(crc32_t crc, const void *data, size_t data_len);
7
+
8
+ #endif
@@ -0,0 +1,31 @@
1
+ #include "ruby.h"
2
+ #include "extconf.h"
3
+
4
+ #include "crc32c.h"
5
+
6
+ VALUE Digest_CRC32c_update(VALUE self, VALUE data)
7
+ {
8
+ VALUE crc_ivar_name = rb_intern("@crc");
9
+ VALUE crc_ivar = rb_ivar_get(self, crc_ivar_name);
10
+ crc32_t crc = NUM2UINT(crc_ivar);
11
+
12
+ const char *data_ptr = StringValuePtr(data);
13
+ size_t length = RSTRING_LEN(data);
14
+
15
+ crc = crc32c_update(crc,data_ptr,length);
16
+
17
+ rb_ivar_set(self, crc_ivar_name, UINT2NUM(crc));
18
+ return self;
19
+ }
20
+
21
+ void Init_crc32c_ext()
22
+ {
23
+ VALUE mDigest = rb_const_get(rb_cObject, rb_intern("Digest"));
24
+ VALUE cCRC32c = rb_const_get(mDigest, rb_intern("CRC32c"));
25
+
26
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
27
+ rb_ext_ractor_safe(true);
28
+ #endif
29
+
30
+ rb_define_method(cCRC32c, "update", Digest_CRC32c_update, 1);
31
+ }
@@ -0,0 +1,7 @@
1
+ require 'mkmf'
2
+
3
+ have_header("stdint.h")
4
+ have_header('stddef.h')
5
+
6
+ create_header
7
+ create_makefile "digest/crc32c/crc32c_ext"
Binary file
Binary file
Binary file