ruby_nacl 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 (499) hide show
  1. data/Changelog +0 -0
  2. data/README.md +49 -0
  3. data/ext/ruby_nacl/NaCl/MACROS +56 -0
  4. data/ext/ruby_nacl/NaCl/OPERATIONS +11 -0
  5. data/ext/ruby_nacl/NaCl/PROTOTYPES.c +26 -0
  6. data/ext/ruby_nacl/NaCl/PROTOTYPES.cpp +17 -0
  7. data/ext/ruby_nacl/NaCl/README +1 -0
  8. data/ext/ruby_nacl/NaCl/commandline/nacl-sha256.c +64 -0
  9. data/ext/ruby_nacl/NaCl/commandline/nacl-sha512.c +64 -0
  10. data/ext/ruby_nacl/NaCl/cpucycles/alpha.c +80 -0
  11. data/ext/ruby_nacl/NaCl/cpucycles/alpha.h +27 -0
  12. data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuinfo.c +16 -0
  13. data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuinfo.h +27 -0
  14. data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuspeed.c +25 -0
  15. data/ext/ruby_nacl/NaCl/cpucycles/amd64cpuspeed.h +27 -0
  16. data/ext/ruby_nacl/NaCl/cpucycles/amd64tscfreq.c +18 -0
  17. data/ext/ruby_nacl/NaCl/cpucycles/amd64tscfreq.h +27 -0
  18. data/ext/ruby_nacl/NaCl/cpucycles/celllinux.c +83 -0
  19. data/ext/ruby_nacl/NaCl/cpucycles/celllinux.h +27 -0
  20. data/ext/ruby_nacl/NaCl/cpucycles/cortex.c +73 -0
  21. data/ext/ruby_nacl/NaCl/cpucycles/cortex.h +27 -0
  22. data/ext/ruby_nacl/NaCl/cpucycles/dev4ns.c +62 -0
  23. data/ext/ruby_nacl/NaCl/cpucycles/dev4ns.h +27 -0
  24. data/ext/ruby_nacl/NaCl/cpucycles/do +105 -0
  25. data/ext/ruby_nacl/NaCl/cpucycles/gettimeofday.c +32 -0
  26. data/ext/ruby_nacl/NaCl/cpucycles/gettimeofday.h +27 -0
  27. data/ext/ruby_nacl/NaCl/cpucycles/hppapstat.c +26 -0
  28. data/ext/ruby_nacl/NaCl/cpucycles/hppapstat.h +27 -0
  29. data/ext/ruby_nacl/NaCl/cpucycles/ia64cpuinfo.c +15 -0
  30. data/ext/ruby_nacl/NaCl/cpucycles/ia64cpuinfo.h +27 -0
  31. data/ext/ruby_nacl/NaCl/cpucycles/mips.c +65 -0
  32. data/ext/ruby_nacl/NaCl/cpucycles/mips.h +27 -0
  33. data/ext/ruby_nacl/NaCl/cpucycles/monotonic.c +34 -0
  34. data/ext/ruby_nacl/NaCl/cpucycles/monotonic.h +27 -0
  35. data/ext/ruby_nacl/NaCl/cpucycles/monotoniccpuinfo.c +33 -0
  36. data/ext/ruby_nacl/NaCl/cpucycles/monotoniccpuinfo.h +27 -0
  37. data/ext/ruby_nacl/NaCl/cpucycles/osfreq.c +65 -0
  38. data/ext/ruby_nacl/NaCl/cpucycles/powerpccpuinfo.c +95 -0
  39. data/ext/ruby_nacl/NaCl/cpucycles/powerpccpuinfo.h +27 -0
  40. data/ext/ruby_nacl/NaCl/cpucycles/powerpcmacos.c +42 -0
  41. data/ext/ruby_nacl/NaCl/cpucycles/powerpcmacos.h +27 -0
  42. data/ext/ruby_nacl/NaCl/cpucycles/sgi.c +38 -0
  43. data/ext/ruby_nacl/NaCl/cpucycles/sgi.h +27 -0
  44. data/ext/ruby_nacl/NaCl/cpucycles/sparc32cpuinfo.c +16 -0
  45. data/ext/ruby_nacl/NaCl/cpucycles/sparc32cpuinfo.h +27 -0
  46. data/ext/ruby_nacl/NaCl/cpucycles/sparccpuinfo.c +15 -0
  47. data/ext/ruby_nacl/NaCl/cpucycles/sparccpuinfo.h +27 -0
  48. data/ext/ruby_nacl/NaCl/cpucycles/test.c +77 -0
  49. data/ext/ruby_nacl/NaCl/cpucycles/x86cpuinfo.c +15 -0
  50. data/ext/ruby_nacl/NaCl/cpucycles/x86cpuinfo.h +27 -0
  51. data/ext/ruby_nacl/NaCl/cpucycles/x86cpuspeed.c +24 -0
  52. data/ext/ruby_nacl/NaCl/cpucycles/x86cpuspeed.h +27 -0
  53. data/ext/ruby_nacl/NaCl/cpucycles/x86estimate.c +59 -0
  54. data/ext/ruby_nacl/NaCl/cpucycles/x86estimate.h +27 -0
  55. data/ext/ruby_nacl/NaCl/cpucycles/x86tscfreq.c +17 -0
  56. data/ext/ruby_nacl/NaCl/cpucycles/x86tscfreq.h +27 -0
  57. data/ext/ruby_nacl/NaCl/cpuid/cbytes.c +16 -0
  58. data/ext/ruby_nacl/NaCl/cpuid/cpuid.c +41 -0
  59. data/ext/ruby_nacl/NaCl/cpuid/do +37 -0
  60. data/ext/ruby_nacl/NaCl/cpuid/unknown.c +7 -0
  61. data/ext/ruby_nacl/NaCl/cpuid/x86.c +41 -0
  62. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/checksum +1 -0
  63. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/api.h +2 -0
  64. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/hmac.c +83 -0
  65. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/ref/verify.c +9 -0
  66. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha256/used +0 -0
  67. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/checksum +1 -0
  68. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/api.h +2 -0
  69. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/hmac.c +86 -0
  70. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/ref/verify.c +9 -0
  71. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/selected +0 -0
  72. data/ext/ruby_nacl/NaCl/crypto_auth/hmacsha512256/used +0 -0
  73. data/ext/ruby_nacl/NaCl/crypto_auth/measure.c +69 -0
  74. data/ext/ruby_nacl/NaCl/crypto_auth/try.c +119 -0
  75. data/ext/ruby_nacl/NaCl/crypto_auth/wrapper-auth.cpp +11 -0
  76. data/ext/ruby_nacl/NaCl/crypto_auth/wrapper-verify.cpp +14 -0
  77. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/checksum +1 -0
  78. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/after.c +22 -0
  79. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/api.h +6 -0
  80. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/before.c +17 -0
  81. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/box.c +27 -0
  82. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/ref/keypair.c +12 -0
  83. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/selected +0 -0
  84. data/ext/ruby_nacl/NaCl/crypto_box/curve25519xsalsa20poly1305/used +0 -0
  85. data/ext/ruby_nacl/NaCl/crypto_box/measure.c +137 -0
  86. data/ext/ruby_nacl/NaCl/crypto_box/try.c +195 -0
  87. data/ext/ruby_nacl/NaCl/crypto_box/wrapper-box.cpp +24 -0
  88. data/ext/ruby_nacl/NaCl/crypto_box/wrapper-keypair.cpp +12 -0
  89. data/ext/ruby_nacl/NaCl/crypto_box/wrapper-open.cpp +27 -0
  90. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/checksum +1 -0
  91. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/api.h +4 -0
  92. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/core.c +135 -0
  93. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref/implementors +1 -0
  94. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/api.h +4 -0
  95. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/core.c +108 -0
  96. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/ref2/implementors +1 -0
  97. data/ext/ruby_nacl/NaCl/crypto_core/hsalsa20/used +0 -0
  98. data/ext/ruby_nacl/NaCl/crypto_core/measure.c +18 -0
  99. data/ext/ruby_nacl/NaCl/crypto_core/salsa20/checksum +1 -0
  100. data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/api.h +4 -0
  101. data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/core.c +134 -0
  102. data/ext/ruby_nacl/NaCl/crypto_core/salsa20/ref/implementors +1 -0
  103. data/ext/ruby_nacl/NaCl/crypto_core/salsa20/used +0 -0
  104. data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/checksum +1 -0
  105. data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/api.h +4 -0
  106. data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/core.c +134 -0
  107. data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/ref/implementors +1 -0
  108. data/ext/ruby_nacl/NaCl/crypto_core/salsa2012/used +0 -0
  109. data/ext/ruby_nacl/NaCl/crypto_core/salsa208/checksum +1 -0
  110. data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/api.h +4 -0
  111. data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/core.c +134 -0
  112. data/ext/ruby_nacl/NaCl/crypto_core/salsa208/ref/implementors +1 -0
  113. data/ext/ruby_nacl/NaCl/crypto_core/salsa208/used +0 -0
  114. data/ext/ruby_nacl/NaCl/crypto_core/try.c +116 -0
  115. data/ext/ruby_nacl/NaCl/crypto_core/wrapper-empty.cpp +0 -0
  116. data/ext/ruby_nacl/NaCl/crypto_hash/measure.c +66 -0
  117. data/ext/ruby_nacl/NaCl/crypto_hash/sha256/checksum +1 -0
  118. data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/api.h +1 -0
  119. data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/hash.c +69 -0
  120. data/ext/ruby_nacl/NaCl/crypto_hash/sha256/ref/implementors +1 -0
  121. data/ext/ruby_nacl/NaCl/crypto_hash/sha256/used +0 -0
  122. data/ext/ruby_nacl/NaCl/crypto_hash/sha512/checksum +1 -0
  123. data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/api.h +1 -0
  124. data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/hash.c +71 -0
  125. data/ext/ruby_nacl/NaCl/crypto_hash/sha512/ref/implementors +1 -0
  126. data/ext/ruby_nacl/NaCl/crypto_hash/sha512/selected +0 -0
  127. data/ext/ruby_nacl/NaCl/crypto_hash/sha512/used +0 -0
  128. data/ext/ruby_nacl/NaCl/crypto_hash/try.c +77 -0
  129. data/ext/ruby_nacl/NaCl/crypto_hash/wrapper-hash.cpp +10 -0
  130. data/ext/ruby_nacl/NaCl/crypto_hashblocks/measure.c +18 -0
  131. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/checksum +1 -0
  132. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/api.h +2 -0
  133. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/blocks.c +228 -0
  134. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/inplace/implementors +1 -0
  135. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/api.h +2 -0
  136. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/blocks.c +212 -0
  137. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/ref/implementors +1 -0
  138. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha256/used +0 -0
  139. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/checksum +1 -0
  140. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/api.h +2 -0
  141. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/blocks.c +256 -0
  142. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/inplace/implementors +1 -0
  143. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/api.h +2 -0
  144. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/blocks.c +239 -0
  145. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/ref/implementors +1 -0
  146. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/selected +0 -0
  147. data/ext/ruby_nacl/NaCl/crypto_hashblocks/sha512/used +0 -0
  148. data/ext/ruby_nacl/NaCl/crypto_hashblocks/try.c +79 -0
  149. data/ext/ruby_nacl/NaCl/crypto_hashblocks/wrapper-empty.cpp +0 -0
  150. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/measure.c +69 -0
  151. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/api.h +2 -0
  152. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/auth.c +1616 -0
  153. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/53/verify.c +9 -0
  154. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/api.h +2 -0
  155. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/auth.s +2787 -0
  156. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/constants.s +85 -0
  157. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/amd64/verify.c +9 -0
  158. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/checksum +1 -0
  159. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/api.h +2 -0
  160. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/auth.c +104 -0
  161. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/ref/verify.c +9 -0
  162. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/selected +0 -0
  163. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/used +0 -0
  164. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/api.h +2 -0
  165. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/auth.s +2779 -0
  166. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/constants.s +85 -0
  167. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/poly1305/x86/verify.c +9 -0
  168. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/try.c +119 -0
  169. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/wrapper-auth.cpp +11 -0
  170. data/ext/ruby_nacl/NaCl/crypto_onetimeauth/wrapper-verify.cpp +14 -0
  171. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/api.h +2 -0
  172. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/base.c +8 -0
  173. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/const.s +114 -0
  174. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/fromdouble.s +195 -0
  175. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/implementors +1 -0
  176. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/init.s +13 -0
  177. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/mainloop.s +3990 -0
  178. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/mult.s +410 -0
  179. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/smult.c +91 -0
  180. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/square.s +298 -0
  181. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/athlon/todouble.s +144 -0
  182. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/checksum +1 -0
  183. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/api.h +2 -0
  184. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/base.c +8 -0
  185. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/implementors +1 -0
  186. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/donna_c64/smult.c +477 -0
  187. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/api.h +2 -0
  188. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/base.c +16 -0
  189. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/implementors +1 -0
  190. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/ref/smult.c +265 -0
  191. data/ext/ruby_nacl/NaCl/crypto_scalarmult/curve25519/used +0 -0
  192. data/ext/ruby_nacl/NaCl/crypto_scalarmult/measure.c +61 -0
  193. data/ext/ruby_nacl/NaCl/crypto_scalarmult/try.c +126 -0
  194. data/ext/ruby_nacl/NaCl/crypto_scalarmult/wrapper-base.cpp +11 -0
  195. data/ext/ruby_nacl/NaCl/crypto_scalarmult/wrapper-mult.cpp +12 -0
  196. data/ext/ruby_nacl/NaCl/crypto_secretbox/measure.c +75 -0
  197. data/ext/ruby_nacl/NaCl/crypto_secretbox/try.c +129 -0
  198. data/ext/ruby_nacl/NaCl/crypto_secretbox/wrapper-box.cpp +19 -0
  199. data/ext/ruby_nacl/NaCl/crypto_secretbox/wrapper-open.cpp +22 -0
  200. data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/checksum +1 -0
  201. data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/ref/api.h +4 -0
  202. data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/ref/box.c +35 -0
  203. data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/selected +0 -0
  204. data/ext/ruby_nacl/NaCl/crypto_secretbox/xsalsa20poly1305/used +0 -0
  205. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/api.h +3 -0
  206. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/fe25519.c +345 -0
  207. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/fe25519.h +54 -0
  208. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/ge25519.c +227 -0
  209. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/ge25519.h +34 -0
  210. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sc25519.c +146 -0
  211. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sc25519.h +51 -0
  212. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/ref/sign.c +103 -0
  213. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/selected +0 -0
  214. data/ext/ruby_nacl/NaCl/crypto_sign/edwards25519sha512batch/used +0 -0
  215. data/ext/ruby_nacl/NaCl/crypto_sign/measure.c +83 -0
  216. data/ext/ruby_nacl/NaCl/crypto_sign/try.c +86 -0
  217. data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-keypair.cpp +12 -0
  218. data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-sign-open.cpp +24 -0
  219. data/ext/ruby_nacl/NaCl/crypto_sign/wrapper-sign.cpp +23 -0
  220. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/checksum +1 -0
  221. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/afternm.s +12308 -0
  222. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/api.h +3 -0
  223. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/beforenm.s +13694 -0
  224. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/stream.c +14 -0
  225. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/xor.c +15 -0
  226. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/core2/xor_afternm.s +12407 -0
  227. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/afternm.c +158 -0
  228. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/api.h +3 -0
  229. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/beforenm.c +59 -0
  230. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/common.c +64 -0
  231. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/common.h +788 -0
  232. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/consts.c +14 -0
  233. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/consts.h +28 -0
  234. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/int128.c +128 -0
  235. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/int128.h +47 -0
  236. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/stream.c +28 -0
  237. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/types.h +10 -0
  238. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/portable/xor_afternm.c +180 -0
  239. data/ext/ruby_nacl/NaCl/crypto_stream/aes128ctr/used +0 -0
  240. data/ext/ruby_nacl/NaCl/crypto_stream/measure.c +73 -0
  241. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/api.h +2 -0
  242. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/implementors +1 -0
  243. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/amd64_xmm6/stream.s +4823 -0
  244. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/checksum +1 -0
  245. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/api.h +2 -0
  246. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/implementors +1 -0
  247. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/stream.c +49 -0
  248. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/ref/xor.c +52 -0
  249. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/used +0 -0
  250. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/api.h +2 -0
  251. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/implementors +1 -0
  252. data/ext/ruby_nacl/NaCl/crypto_stream/salsa20/x86_xmm5/stream.s +5078 -0
  253. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/api.h +2 -0
  254. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/implementors +1 -0
  255. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/amd64_xmm6/stream.s +4823 -0
  256. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/checksum +1 -0
  257. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/api.h +2 -0
  258. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/implementors +1 -0
  259. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/stream.c +49 -0
  260. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/ref/xor.c +52 -0
  261. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/used +0 -0
  262. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/api.h +2 -0
  263. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/implementors +1 -0
  264. data/ext/ruby_nacl/NaCl/crypto_stream/salsa2012/x86_xmm5/stream.s +5078 -0
  265. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/api.h +2 -0
  266. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/implementors +1 -0
  267. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/amd64_xmm6/stream.s +4823 -0
  268. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/checksum +1 -0
  269. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/api.h +2 -0
  270. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/implementors +1 -0
  271. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/stream.c +49 -0
  272. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/ref/xor.c +52 -0
  273. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/used +0 -0
  274. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/api.h +2 -0
  275. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/implementors +1 -0
  276. data/ext/ruby_nacl/NaCl/crypto_stream/salsa208/x86_xmm5/stream.s +5078 -0
  277. data/ext/ruby_nacl/NaCl/crypto_stream/try.c +124 -0
  278. data/ext/ruby_nacl/NaCl/crypto_stream/wrapper-stream.cpp +12 -0
  279. data/ext/ruby_nacl/NaCl/crypto_stream/wrapper-xor.cpp +17 -0
  280. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/checksum +1 -0
  281. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/api.h +2 -0
  282. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/implementors +1 -0
  283. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/stream.c +22 -0
  284. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/ref/xor.c +23 -0
  285. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/selected +0 -0
  286. data/ext/ruby_nacl/NaCl/crypto_stream/xsalsa20/used +0 -0
  287. data/ext/ruby_nacl/NaCl/crypto_stream.h +18 -0
  288. data/ext/ruby_nacl/NaCl/crypto_stream_aes128ctr.h +33 -0
  289. data/ext/ruby_nacl/NaCl/crypto_verify/16/checksum +1 -0
  290. data/ext/ruby_nacl/NaCl/crypto_verify/16/ref/api.h +1 -0
  291. data/ext/ruby_nacl/NaCl/crypto_verify/16/ref/verify.c +24 -0
  292. data/ext/ruby_nacl/NaCl/crypto_verify/16/used +0 -0
  293. data/ext/ruby_nacl/NaCl/crypto_verify/32/checksum +1 -0
  294. data/ext/ruby_nacl/NaCl/crypto_verify/32/ref/api.h +1 -0
  295. data/ext/ruby_nacl/NaCl/crypto_verify/32/ref/verify.c +40 -0
  296. data/ext/ruby_nacl/NaCl/crypto_verify/32/used +0 -0
  297. data/ext/ruby_nacl/NaCl/crypto_verify/measure.c +18 -0
  298. data/ext/ruby_nacl/NaCl/crypto_verify/try.c +75 -0
  299. data/ext/ruby_nacl/NaCl/crypto_verify/wrapper-empty.cpp +0 -0
  300. data/ext/ruby_nacl/NaCl/curvecp/LIBS +31 -0
  301. data/ext/ruby_nacl/NaCl/curvecp/README +10 -0
  302. data/ext/ruby_nacl/NaCl/curvecp/SOURCES +36 -0
  303. data/ext/ruby_nacl/NaCl/curvecp/TARGETS +5 -0
  304. data/ext/ruby_nacl/NaCl/curvecp/blocking.c +12 -0
  305. data/ext/ruby_nacl/NaCl/curvecp/blocking.h +7 -0
  306. data/ext/ruby_nacl/NaCl/curvecp/byte.h +8 -0
  307. data/ext/ruby_nacl/NaCl/curvecp/byte_copy.c +8 -0
  308. data/ext/ruby_nacl/NaCl/curvecp/byte_isequal.c +10 -0
  309. data/ext/ruby_nacl/NaCl/curvecp/byte_zero.c +7 -0
  310. data/ext/ruby_nacl/NaCl/curvecp/crypto_block.c +35 -0
  311. data/ext/ruby_nacl/NaCl/curvecp/crypto_block.h +4 -0
  312. data/ext/ruby_nacl/NaCl/curvecp/curvecpclient.c +476 -0
  313. data/ext/ruby_nacl/NaCl/curvecp/curvecpmakekey.c +57 -0
  314. data/ext/ruby_nacl/NaCl/curvecp/curvecpmessage.c +654 -0
  315. data/ext/ruby_nacl/NaCl/curvecp/curvecpprintkey.c +46 -0
  316. data/ext/ruby_nacl/NaCl/curvecp/curvecpserver.c +497 -0
  317. data/ext/ruby_nacl/NaCl/curvecp/die.c +42 -0
  318. data/ext/ruby_nacl/NaCl/curvecp/die.h +16 -0
  319. data/ext/ruby_nacl/NaCl/curvecp/e.c +106 -0
  320. data/ext/ruby_nacl/NaCl/curvecp/e.h +438 -0
  321. data/ext/ruby_nacl/NaCl/curvecp/hexparse.c +25 -0
  322. data/ext/ruby_nacl/NaCl/curvecp/hexparse.h +6 -0
  323. data/ext/ruby_nacl/NaCl/curvecp/load.c +33 -0
  324. data/ext/ruby_nacl/NaCl/curvecp/load.h +6 -0
  325. data/ext/ruby_nacl/NaCl/curvecp/nameparse.c +19 -0
  326. data/ext/ruby_nacl/NaCl/curvecp/nameparse.h +6 -0
  327. data/ext/ruby_nacl/NaCl/curvecp/nanoseconds.c +27 -0
  328. data/ext/ruby_nacl/NaCl/curvecp/nanoseconds.h +6 -0
  329. data/ext/ruby_nacl/NaCl/curvecp/open.h +10 -0
  330. data/ext/ruby_nacl/NaCl/curvecp/open_cwd.c +6 -0
  331. data/ext/ruby_nacl/NaCl/curvecp/open_lock.c +19 -0
  332. data/ext/ruby_nacl/NaCl/curvecp/open_pipe.c +15 -0
  333. data/ext/ruby_nacl/NaCl/curvecp/open_read.c +17 -0
  334. data/ext/ruby_nacl/NaCl/curvecp/open_write.c +17 -0
  335. data/ext/ruby_nacl/NaCl/curvecp/portparse.c +14 -0
  336. data/ext/ruby_nacl/NaCl/curvecp/portparse.h +6 -0
  337. data/ext/ruby_nacl/NaCl/curvecp/randommod.c +14 -0
  338. data/ext/ruby_nacl/NaCl/curvecp/randommod.h +6 -0
  339. data/ext/ruby_nacl/NaCl/curvecp/safenonce.c +74 -0
  340. data/ext/ruby_nacl/NaCl/curvecp/safenonce.h +6 -0
  341. data/ext/ruby_nacl/NaCl/curvecp/savesync.c +24 -0
  342. data/ext/ruby_nacl/NaCl/curvecp/savesync.h +6 -0
  343. data/ext/ruby_nacl/NaCl/curvecp/socket.h +9 -0
  344. data/ext/ruby_nacl/NaCl/curvecp/socket_bind.c +15 -0
  345. data/ext/ruby_nacl/NaCl/curvecp/socket_recv.c +23 -0
  346. data/ext/ruby_nacl/NaCl/curvecp/socket_send.c +19 -0
  347. data/ext/ruby_nacl/NaCl/curvecp/socket_udp.c +36 -0
  348. data/ext/ruby_nacl/NaCl/curvecp/uint16_pack.c +7 -0
  349. data/ext/ruby_nacl/NaCl/curvecp/uint16_pack.h +8 -0
  350. data/ext/ruby_nacl/NaCl/curvecp/uint16_unpack.c +9 -0
  351. data/ext/ruby_nacl/NaCl/curvecp/uint16_unpack.h +8 -0
  352. data/ext/ruby_nacl/NaCl/curvecp/uint32_pack.c +9 -0
  353. data/ext/ruby_nacl/NaCl/curvecp/uint32_pack.h +8 -0
  354. data/ext/ruby_nacl/NaCl/curvecp/uint32_unpack.c +11 -0
  355. data/ext/ruby_nacl/NaCl/curvecp/uint32_unpack.h +8 -0
  356. data/ext/ruby_nacl/NaCl/curvecp/uint64_pack.c +13 -0
  357. data/ext/ruby_nacl/NaCl/curvecp/uint64_pack.h +8 -0
  358. data/ext/ruby_nacl/NaCl/curvecp/uint64_unpack.c +15 -0
  359. data/ext/ruby_nacl/NaCl/curvecp/uint64_unpack.h +8 -0
  360. data/ext/ruby_nacl/NaCl/curvecp/writeall.c +27 -0
  361. data/ext/ruby_nacl/NaCl/curvecp/writeall.h +6 -0
  362. data/ext/ruby_nacl/NaCl/do +468 -0
  363. data/ext/ruby_nacl/NaCl/inttypes/crypto_int16.c +3 -0
  364. data/ext/ruby_nacl/NaCl/inttypes/crypto_int32.c +3 -0
  365. data/ext/ruby_nacl/NaCl/inttypes/crypto_int64.c +3 -0
  366. data/ext/ruby_nacl/NaCl/inttypes/crypto_int8.c +3 -0
  367. data/ext/ruby_nacl/NaCl/inttypes/crypto_uint16.c +3 -0
  368. data/ext/ruby_nacl/NaCl/inttypes/crypto_uint32.c +3 -0
  369. data/ext/ruby_nacl/NaCl/inttypes/crypto_uint64.c +3 -0
  370. data/ext/ruby_nacl/NaCl/inttypes/crypto_uint8.c +3 -0
  371. data/ext/ruby_nacl/NaCl/inttypes/do +47 -0
  372. data/ext/ruby_nacl/NaCl/inttypes/signed.h +17 -0
  373. data/ext/ruby_nacl/NaCl/inttypes/unsigned.h +17 -0
  374. data/ext/ruby_nacl/NaCl/measure-anything.c +225 -0
  375. data/ext/ruby_nacl/NaCl/okcompilers/abiname.c +45 -0
  376. data/ext/ruby_nacl/NaCl/okcompilers/archivers +2 -0
  377. data/ext/ruby_nacl/NaCl/okcompilers/c +8 -0
  378. data/ext/ruby_nacl/NaCl/okcompilers/cpp +8 -0
  379. data/ext/ruby_nacl/NaCl/okcompilers/do +196 -0
  380. data/ext/ruby_nacl/NaCl/okcompilers/lib.c +29 -0
  381. data/ext/ruby_nacl/NaCl/okcompilers/lib.cpp +19 -0
  382. data/ext/ruby_nacl/NaCl/okcompilers/main.c +25 -0
  383. data/ext/ruby_nacl/NaCl/okcompilers/main.cpp +22 -0
  384. data/ext/ruby_nacl/NaCl/randombytes/devurandom.c +34 -0
  385. data/ext/ruby_nacl/NaCl/randombytes/devurandom.h +24 -0
  386. data/ext/ruby_nacl/NaCl/randombytes/do +43 -0
  387. data/ext/ruby_nacl/NaCl/randombytes/test.c +15 -0
  388. data/ext/ruby_nacl/NaCl/tests/auth.c +19 -0
  389. data/ext/ruby_nacl/NaCl/tests/auth.out +4 -0
  390. data/ext/ruby_nacl/NaCl/tests/auth2.c +34 -0
  391. data/ext/ruby_nacl/NaCl/tests/auth2.out +4 -0
  392. data/ext/ruby_nacl/NaCl/tests/auth3.c +34 -0
  393. data/ext/ruby_nacl/NaCl/tests/auth3.out +1 -0
  394. data/ext/ruby_nacl/NaCl/tests/auth4.cpp +44 -0
  395. data/ext/ruby_nacl/NaCl/tests/auth4.out +1 -0
  396. data/ext/ruby_nacl/NaCl/tests/auth5.c +36 -0
  397. data/ext/ruby_nacl/NaCl/tests/auth5.out +0 -0
  398. data/ext/ruby_nacl/NaCl/tests/auth6.cpp +46 -0
  399. data/ext/ruby_nacl/NaCl/tests/auth6.out +0 -0
  400. data/ext/ruby_nacl/NaCl/tests/box.c +63 -0
  401. data/ext/ruby_nacl/NaCl/tests/box.out +19 -0
  402. data/ext/ruby_nacl/NaCl/tests/box2.c +64 -0
  403. data/ext/ruby_nacl/NaCl/tests/box2.out +17 -0
  404. data/ext/ruby_nacl/NaCl/tests/box3.cpp +60 -0
  405. data/ext/ruby_nacl/NaCl/tests/box3.out +19 -0
  406. data/ext/ruby_nacl/NaCl/tests/box4.cpp +66 -0
  407. data/ext/ruby_nacl/NaCl/tests/box4.out +17 -0
  408. data/ext/ruby_nacl/NaCl/tests/box5.cpp +30 -0
  409. data/ext/ruby_nacl/NaCl/tests/box5.out +0 -0
  410. data/ext/ruby_nacl/NaCl/tests/box6.cpp +43 -0
  411. data/ext/ruby_nacl/NaCl/tests/box6.out +0 -0
  412. data/ext/ruby_nacl/NaCl/tests/box7.c +36 -0
  413. data/ext/ruby_nacl/NaCl/tests/box7.out +0 -0
  414. data/ext/ruby_nacl/NaCl/tests/box8.c +41 -0
  415. data/ext/ruby_nacl/NaCl/tests/box8.out +0 -0
  416. data/ext/ruby_nacl/NaCl/tests/core1.c +30 -0
  417. data/ext/ruby_nacl/NaCl/tests/core1.out +4 -0
  418. data/ext/ruby_nacl/NaCl/tests/core2.c +33 -0
  419. data/ext/ruby_nacl/NaCl/tests/core2.out +4 -0
  420. data/ext/ruby_nacl/NaCl/tests/core3.c +41 -0
  421. data/ext/ruby_nacl/NaCl/tests/core3.out +1 -0
  422. data/ext/ruby_nacl/NaCl/tests/core4.c +33 -0
  423. data/ext/ruby_nacl/NaCl/tests/core4.out +8 -0
  424. data/ext/ruby_nacl/NaCl/tests/core5.c +32 -0
  425. data/ext/ruby_nacl/NaCl/tests/core5.out +4 -0
  426. data/ext/ruby_nacl/NaCl/tests/core6.c +47 -0
  427. data/ext/ruby_nacl/NaCl/tests/core6.out +4 -0
  428. data/ext/ruby_nacl/NaCl/tests/hash.c +14 -0
  429. data/ext/ruby_nacl/NaCl/tests/hash.out +1 -0
  430. data/ext/ruby_nacl/NaCl/tests/hash2.cpp +18 -0
  431. data/ext/ruby_nacl/NaCl/tests/hash2.out +1 -0
  432. data/ext/ruby_nacl/NaCl/tests/hash3.c +14 -0
  433. data/ext/ruby_nacl/NaCl/tests/hash3.out +1 -0
  434. data/ext/ruby_nacl/NaCl/tests/hash4.cpp +18 -0
  435. data/ext/ruby_nacl/NaCl/tests/hash4.out +1 -0
  436. data/ext/ruby_nacl/NaCl/tests/onetimeauth.c +42 -0
  437. data/ext/ruby_nacl/NaCl/tests/onetimeauth.out +2 -0
  438. data/ext/ruby_nacl/NaCl/tests/onetimeauth2.c +40 -0
  439. data/ext/ruby_nacl/NaCl/tests/onetimeauth2.out +1 -0
  440. data/ext/ruby_nacl/NaCl/tests/onetimeauth5.cpp +46 -0
  441. data/ext/ruby_nacl/NaCl/tests/onetimeauth5.out +2 -0
  442. data/ext/ruby_nacl/NaCl/tests/onetimeauth6.cpp +50 -0
  443. data/ext/ruby_nacl/NaCl/tests/onetimeauth6.out +1 -0
  444. data/ext/ruby_nacl/NaCl/tests/onetimeauth7.c +36 -0
  445. data/ext/ruby_nacl/NaCl/tests/onetimeauth7.out +0 -0
  446. data/ext/ruby_nacl/NaCl/tests/onetimeauth8.cpp +46 -0
  447. data/ext/ruby_nacl/NaCl/tests/onetimeauth8.out +0 -0
  448. data/ext/ruby_nacl/NaCl/tests/scalarmult.c +23 -0
  449. data/ext/ruby_nacl/NaCl/tests/scalarmult.out +4 -0
  450. data/ext/ruby_nacl/NaCl/tests/scalarmult2.c +23 -0
  451. data/ext/ruby_nacl/NaCl/tests/scalarmult2.out +4 -0
  452. data/ext/ruby_nacl/NaCl/tests/scalarmult3.cpp +31 -0
  453. data/ext/ruby_nacl/NaCl/tests/scalarmult3.out +4 -0
  454. data/ext/ruby_nacl/NaCl/tests/scalarmult4.cpp +31 -0
  455. data/ext/ruby_nacl/NaCl/tests/scalarmult4.out +4 -0
  456. data/ext/ruby_nacl/NaCl/tests/scalarmult5.c +30 -0
  457. data/ext/ruby_nacl/NaCl/tests/scalarmult5.out +4 -0
  458. data/ext/ruby_nacl/NaCl/tests/scalarmult6.c +30 -0
  459. data/ext/ruby_nacl/NaCl/tests/scalarmult6.out +4 -0
  460. data/ext/ruby_nacl/NaCl/tests/scalarmult7.cpp +32 -0
  461. data/ext/ruby_nacl/NaCl/tests/scalarmult7.out +4 -0
  462. data/ext/ruby_nacl/NaCl/tests/secretbox.c +56 -0
  463. data/ext/ruby_nacl/NaCl/tests/secretbox.out +19 -0
  464. data/ext/ruby_nacl/NaCl/tests/secretbox2.c +57 -0
  465. data/ext/ruby_nacl/NaCl/tests/secretbox2.out +17 -0
  466. data/ext/ruby_nacl/NaCl/tests/secretbox3.cpp +52 -0
  467. data/ext/ruby_nacl/NaCl/tests/secretbox3.out +19 -0
  468. data/ext/ruby_nacl/NaCl/tests/secretbox4.cpp +54 -0
  469. data/ext/ruby_nacl/NaCl/tests/secretbox4.out +17 -0
  470. data/ext/ruby_nacl/NaCl/tests/secretbox5.cpp +29 -0
  471. data/ext/ruby_nacl/NaCl/tests/secretbox5.out +0 -0
  472. data/ext/ruby_nacl/NaCl/tests/secretbox6.cpp +42 -0
  473. data/ext/ruby_nacl/NaCl/tests/secretbox6.out +0 -0
  474. data/ext/ruby_nacl/NaCl/tests/secretbox7.c +32 -0
  475. data/ext/ruby_nacl/NaCl/tests/secretbox7.out +0 -0
  476. data/ext/ruby_nacl/NaCl/tests/secretbox8.c +37 -0
  477. data/ext/ruby_nacl/NaCl/tests/secretbox8.out +0 -0
  478. data/ext/ruby_nacl/NaCl/tests/stream.c +29 -0
  479. data/ext/ruby_nacl/NaCl/tests/stream.out +1 -0
  480. data/ext/ruby_nacl/NaCl/tests/stream2.c +27 -0
  481. data/ext/ruby_nacl/NaCl/tests/stream2.out +1 -0
  482. data/ext/ruby_nacl/NaCl/tests/stream3.c +28 -0
  483. data/ext/ruby_nacl/NaCl/tests/stream3.out +4 -0
  484. data/ext/ruby_nacl/NaCl/tests/stream4.c +53 -0
  485. data/ext/ruby_nacl/NaCl/tests/stream4.out +17 -0
  486. data/ext/ruby_nacl/NaCl/tests/stream5.cpp +29 -0
  487. data/ext/ruby_nacl/NaCl/tests/stream5.out +1 -0
  488. data/ext/ruby_nacl/NaCl/tests/stream6.cpp +27 -0
  489. data/ext/ruby_nacl/NaCl/tests/stream6.out +1 -0
  490. data/ext/ruby_nacl/NaCl/tests/stream7.cpp +30 -0
  491. data/ext/ruby_nacl/NaCl/tests/stream7.out +4 -0
  492. data/ext/ruby_nacl/NaCl/tests/stream8.cpp +56 -0
  493. data/ext/ruby_nacl/NaCl/tests/stream8.out +17 -0
  494. data/ext/ruby_nacl/NaCl/try-anything.c +173 -0
  495. data/ext/ruby_nacl/NaCl/version +1 -0
  496. data/ext/ruby_nacl/extconf.rb +18 -0
  497. data/ext/ruby_nacl/ruby_nacl.cpp +147 -0
  498. data/ext/ruby_nacl/ruby_nacl.h +49 -0
  499. metadata +554 -0
@@ -0,0 +1,265 @@
1
+ /*
2
+ version 20081011
3
+ Matthew Dempsky
4
+ Public domain.
5
+ Derived from public domain code by D. J. Bernstein.
6
+ */
7
+
8
+ #include "crypto_scalarmult.h"
9
+
10
+ static void add(unsigned int out[32],const unsigned int a[32],const unsigned int b[32])
11
+ {
12
+ unsigned int j;
13
+ unsigned int u;
14
+ u = 0;
15
+ for (j = 0;j < 31;++j) { u += a[j] + b[j]; out[j] = u & 255; u >>= 8; }
16
+ u += a[31] + b[31]; out[31] = u;
17
+ }
18
+
19
+ static void sub(unsigned int out[32],const unsigned int a[32],const unsigned int b[32])
20
+ {
21
+ unsigned int j;
22
+ unsigned int u;
23
+ u = 218;
24
+ for (j = 0;j < 31;++j) {
25
+ u += a[j] + 65280 - b[j];
26
+ out[j] = u & 255;
27
+ u >>= 8;
28
+ }
29
+ u += a[31] - b[31];
30
+ out[31] = u;
31
+ }
32
+
33
+ static void squeeze(unsigned int a[32])
34
+ {
35
+ unsigned int j;
36
+ unsigned int u;
37
+ u = 0;
38
+ for (j = 0;j < 31;++j) { u += a[j]; a[j] = u & 255; u >>= 8; }
39
+ u += a[31]; a[31] = u & 127;
40
+ u = 19 * (u >> 7);
41
+ for (j = 0;j < 31;++j) { u += a[j]; a[j] = u & 255; u >>= 8; }
42
+ u += a[31]; a[31] = u;
43
+ }
44
+
45
+ static const unsigned int minusp[32] = {
46
+ 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128
47
+ } ;
48
+
49
+ static void freeze(unsigned int a[32])
50
+ {
51
+ unsigned int aorig[32];
52
+ unsigned int j;
53
+ unsigned int negative;
54
+
55
+ for (j = 0;j < 32;++j) aorig[j] = a[j];
56
+ add(a,a,minusp);
57
+ negative = -((a[31] >> 7) & 1);
58
+ for (j = 0;j < 32;++j) a[j] ^= negative & (aorig[j] ^ a[j]);
59
+ }
60
+
61
+ static void mult(unsigned int out[32],const unsigned int a[32],const unsigned int b[32])
62
+ {
63
+ unsigned int i;
64
+ unsigned int j;
65
+ unsigned int u;
66
+
67
+ for (i = 0;i < 32;++i) {
68
+ u = 0;
69
+ for (j = 0;j <= i;++j) u += a[j] * b[i - j];
70
+ for (j = i + 1;j < 32;++j) u += 38 * a[j] * b[i + 32 - j];
71
+ out[i] = u;
72
+ }
73
+ squeeze(out);
74
+ }
75
+
76
+ static void mult121665(unsigned int out[32],const unsigned int a[32])
77
+ {
78
+ unsigned int j;
79
+ unsigned int u;
80
+
81
+ u = 0;
82
+ for (j = 0;j < 31;++j) { u += 121665 * a[j]; out[j] = u & 255; u >>= 8; }
83
+ u += 121665 * a[31]; out[31] = u & 127;
84
+ u = 19 * (u >> 7);
85
+ for (j = 0;j < 31;++j) { u += out[j]; out[j] = u & 255; u >>= 8; }
86
+ u += out[j]; out[j] = u;
87
+ }
88
+
89
+ static void square(unsigned int out[32],const unsigned int a[32])
90
+ {
91
+ unsigned int i;
92
+ unsigned int j;
93
+ unsigned int u;
94
+
95
+ for (i = 0;i < 32;++i) {
96
+ u = 0;
97
+ for (j = 0;j < i - j;++j) u += a[j] * a[i - j];
98
+ for (j = i + 1;j < i + 32 - j;++j) u += 38 * a[j] * a[i + 32 - j];
99
+ u *= 2;
100
+ if ((i & 1) == 0) {
101
+ u += a[i / 2] * a[i / 2];
102
+ u += 38 * a[i / 2 + 16] * a[i / 2 + 16];
103
+ }
104
+ out[i] = u;
105
+ }
106
+ squeeze(out);
107
+ }
108
+
109
+ static void select(unsigned int p[64],unsigned int q[64],const unsigned int r[64],const unsigned int s[64],unsigned int b)
110
+ {
111
+ unsigned int j;
112
+ unsigned int t;
113
+ unsigned int bminus1;
114
+
115
+ bminus1 = b - 1;
116
+ for (j = 0;j < 64;++j) {
117
+ t = bminus1 & (r[j] ^ s[j]);
118
+ p[j] = s[j] ^ t;
119
+ q[j] = r[j] ^ t;
120
+ }
121
+ }
122
+
123
+ static void mainloop(unsigned int work[64],const unsigned char e[32])
124
+ {
125
+ unsigned int xzm1[64];
126
+ unsigned int xzm[64];
127
+ unsigned int xzmb[64];
128
+ unsigned int xzm1b[64];
129
+ unsigned int xznb[64];
130
+ unsigned int xzn1b[64];
131
+ unsigned int a0[64];
132
+ unsigned int a1[64];
133
+ unsigned int b0[64];
134
+ unsigned int b1[64];
135
+ unsigned int c1[64];
136
+ unsigned int r[32];
137
+ unsigned int s[32];
138
+ unsigned int t[32];
139
+ unsigned int u[32];
140
+ unsigned int i;
141
+ unsigned int j;
142
+ unsigned int b;
143
+ int pos;
144
+
145
+ for (j = 0;j < 32;++j) xzm1[j] = work[j];
146
+ xzm1[32] = 1;
147
+ for (j = 33;j < 64;++j) xzm1[j] = 0;
148
+
149
+ xzm[0] = 1;
150
+ for (j = 1;j < 64;++j) xzm[j] = 0;
151
+
152
+ for (pos = 254;pos >= 0;--pos) {
153
+ b = e[pos / 8] >> (pos & 7);
154
+ b &= 1;
155
+ select(xzmb,xzm1b,xzm,xzm1,b);
156
+ add(a0,xzmb,xzmb + 32);
157
+ sub(a0 + 32,xzmb,xzmb + 32);
158
+ add(a1,xzm1b,xzm1b + 32);
159
+ sub(a1 + 32,xzm1b,xzm1b + 32);
160
+ square(b0,a0);
161
+ square(b0 + 32,a0 + 32);
162
+ mult(b1,a1,a0 + 32);
163
+ mult(b1 + 32,a1 + 32,a0);
164
+ add(c1,b1,b1 + 32);
165
+ sub(c1 + 32,b1,b1 + 32);
166
+ square(r,c1 + 32);
167
+ sub(s,b0,b0 + 32);
168
+ mult121665(t,s);
169
+ add(u,t,b0);
170
+ mult(xznb,b0,b0 + 32);
171
+ mult(xznb + 32,s,u);
172
+ square(xzn1b,c1);
173
+ mult(xzn1b + 32,r,work);
174
+ select(xzm,xzm1,xznb,xzn1b,b);
175
+ }
176
+
177
+ for (j = 0;j < 64;++j) work[j] = xzm[j];
178
+ }
179
+
180
+ static void recip(unsigned int out[32],const unsigned int z[32])
181
+ {
182
+ unsigned int z2[32];
183
+ unsigned int z9[32];
184
+ unsigned int z11[32];
185
+ unsigned int z2_5_0[32];
186
+ unsigned int z2_10_0[32];
187
+ unsigned int z2_20_0[32];
188
+ unsigned int z2_50_0[32];
189
+ unsigned int z2_100_0[32];
190
+ unsigned int t0[32];
191
+ unsigned int t1[32];
192
+ int i;
193
+
194
+ /* 2 */ square(z2,z);
195
+ /* 4 */ square(t1,z2);
196
+ /* 8 */ square(t0,t1);
197
+ /* 9 */ mult(z9,t0,z);
198
+ /* 11 */ mult(z11,z9,z2);
199
+ /* 22 */ square(t0,z11);
200
+ /* 2^5 - 2^0 = 31 */ mult(z2_5_0,t0,z9);
201
+
202
+ /* 2^6 - 2^1 */ square(t0,z2_5_0);
203
+ /* 2^7 - 2^2 */ square(t1,t0);
204
+ /* 2^8 - 2^3 */ square(t0,t1);
205
+ /* 2^9 - 2^4 */ square(t1,t0);
206
+ /* 2^10 - 2^5 */ square(t0,t1);
207
+ /* 2^10 - 2^0 */ mult(z2_10_0,t0,z2_5_0);
208
+
209
+ /* 2^11 - 2^1 */ square(t0,z2_10_0);
210
+ /* 2^12 - 2^2 */ square(t1,t0);
211
+ /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { square(t0,t1); square(t1,t0); }
212
+ /* 2^20 - 2^0 */ mult(z2_20_0,t1,z2_10_0);
213
+
214
+ /* 2^21 - 2^1 */ square(t0,z2_20_0);
215
+ /* 2^22 - 2^2 */ square(t1,t0);
216
+ /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { square(t0,t1); square(t1,t0); }
217
+ /* 2^40 - 2^0 */ mult(t0,t1,z2_20_0);
218
+
219
+ /* 2^41 - 2^1 */ square(t1,t0);
220
+ /* 2^42 - 2^2 */ square(t0,t1);
221
+ /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { square(t1,t0); square(t0,t1); }
222
+ /* 2^50 - 2^0 */ mult(z2_50_0,t0,z2_10_0);
223
+
224
+ /* 2^51 - 2^1 */ square(t0,z2_50_0);
225
+ /* 2^52 - 2^2 */ square(t1,t0);
226
+ /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { square(t0,t1); square(t1,t0); }
227
+ /* 2^100 - 2^0 */ mult(z2_100_0,t1,z2_50_0);
228
+
229
+ /* 2^101 - 2^1 */ square(t1,z2_100_0);
230
+ /* 2^102 - 2^2 */ square(t0,t1);
231
+ /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { square(t1,t0); square(t0,t1); }
232
+ /* 2^200 - 2^0 */ mult(t1,t0,z2_100_0);
233
+
234
+ /* 2^201 - 2^1 */ square(t0,t1);
235
+ /* 2^202 - 2^2 */ square(t1,t0);
236
+ /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { square(t0,t1); square(t1,t0); }
237
+ /* 2^250 - 2^0 */ mult(t0,t1,z2_50_0);
238
+
239
+ /* 2^251 - 2^1 */ square(t1,t0);
240
+ /* 2^252 - 2^2 */ square(t0,t1);
241
+ /* 2^253 - 2^3 */ square(t1,t0);
242
+ /* 2^254 - 2^4 */ square(t0,t1);
243
+ /* 2^255 - 2^5 */ square(t1,t0);
244
+ /* 2^255 - 21 */ mult(out,t1,z11);
245
+ }
246
+
247
+ int crypto_scalarmult(unsigned char *q,
248
+ const unsigned char *n,
249
+ const unsigned char *p)
250
+ {
251
+ unsigned int work[96];
252
+ unsigned char e[32];
253
+ unsigned int i;
254
+ for (i = 0;i < 32;++i) e[i] = n[i];
255
+ e[0] &= 248;
256
+ e[31] &= 127;
257
+ e[31] |= 64;
258
+ for (i = 0;i < 32;++i) work[i] = p[i];
259
+ mainloop(work,e);
260
+ recip(work + 32,work + 32);
261
+ mult(work + 64,work,work + 32);
262
+ freeze(work + 64);
263
+ for (i = 0;i < 32;++i) q[i] = work[64 + i];
264
+ return 0;
265
+ }
@@ -0,0 +1,61 @@
1
+ #include <stdlib.h>
2
+ #include "randombytes.h"
3
+ #include "cpucycles.h"
4
+ #include "crypto_scalarmult.h"
5
+
6
+ extern void printentry(long long,const char *,long long *,long long);
7
+ extern unsigned char *alignedcalloc(unsigned long long);
8
+ extern const char *primitiveimplementation;
9
+ extern const char *implementationversion;
10
+ extern const char *sizenames[];
11
+ extern const long long sizes[];
12
+ extern void allocate(void);
13
+ extern void measure(void);
14
+
15
+ const char *primitiveimplementation = crypto_scalarmult_IMPLEMENTATION;
16
+ const char *implementationversion = crypto_scalarmult_VERSION;
17
+ const char *sizenames[] = { "outputbytes", "scalarbytes", 0 };
18
+ const long long sizes[] = { crypto_scalarmult_BYTES, crypto_scalarmult_SCALARBYTES };
19
+
20
+ static unsigned char *m;
21
+ static unsigned char *n;
22
+ static unsigned char *p;
23
+ static unsigned char *q;
24
+
25
+ void preallocate(void)
26
+ {
27
+ }
28
+
29
+ void allocate(void)
30
+ {
31
+ m = alignedcalloc(crypto_scalarmult_SCALARBYTES);
32
+ n = alignedcalloc(crypto_scalarmult_SCALARBYTES);
33
+ p = alignedcalloc(crypto_scalarmult_BYTES);
34
+ q = alignedcalloc(crypto_scalarmult_BYTES);
35
+ }
36
+
37
+ #define TIMINGS 63
38
+ static long long cycles[TIMINGS + 1];
39
+
40
+ void measure(void)
41
+ {
42
+ int i;
43
+ int loop;
44
+
45
+ for (loop = 0;loop < LOOPS;++loop) {
46
+ randombytes(m,crypto_scalarmult_SCALARBYTES);
47
+ randombytes(n,crypto_scalarmult_SCALARBYTES);
48
+ for (i = 0;i <= TIMINGS;++i) {
49
+ cycles[i] = cpucycles();
50
+ crypto_scalarmult_base(p,m);
51
+ }
52
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
53
+ printentry(-1,"base_cycles",cycles,TIMINGS);
54
+ for (i = 0;i <= TIMINGS;++i) {
55
+ cycles[i] = cpucycles();
56
+ crypto_scalarmult(q,n,p);
57
+ }
58
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
59
+ printentry(-1,"cycles",cycles,TIMINGS);
60
+ }
61
+ }
@@ -0,0 +1,126 @@
1
+ /*
2
+ * crypto_scalarmult/try.c version 20090118
3
+ * D. J. Bernstein
4
+ * Public domain.
5
+ */
6
+
7
+ #include <stdlib.h>
8
+ #include "crypto_scalarmult.h"
9
+
10
+ extern unsigned char *alignedcalloc(unsigned long long);
11
+
12
+ const char *primitiveimplementation = crypto_scalarmult_IMPLEMENTATION;
13
+
14
+ #define mlen crypto_scalarmult_SCALARBYTES
15
+ #define nlen crypto_scalarmult_SCALARBYTES
16
+ #define plen crypto_scalarmult_BYTES
17
+ #define qlen crypto_scalarmult_BYTES
18
+ #define rlen crypto_scalarmult_BYTES
19
+
20
+ static unsigned char *m;
21
+ static unsigned char *n;
22
+ static unsigned char *p;
23
+ static unsigned char *q;
24
+ static unsigned char *r;
25
+
26
+ static unsigned char *m2;
27
+ static unsigned char *n2;
28
+ static unsigned char *p2;
29
+ static unsigned char *q2;
30
+ static unsigned char *r2;
31
+
32
+ void preallocate(void)
33
+ {
34
+ }
35
+
36
+ void allocate(void)
37
+ {
38
+ m = alignedcalloc(mlen);
39
+ n = alignedcalloc(nlen);
40
+ p = alignedcalloc(plen);
41
+ q = alignedcalloc(qlen);
42
+ r = alignedcalloc(rlen);
43
+ m2 = alignedcalloc(mlen + crypto_scalarmult_BYTES);
44
+ n2 = alignedcalloc(nlen + crypto_scalarmult_BYTES);
45
+ p2 = alignedcalloc(plen + crypto_scalarmult_BYTES);
46
+ q2 = alignedcalloc(qlen + crypto_scalarmult_BYTES);
47
+ r2 = alignedcalloc(rlen + crypto_scalarmult_BYTES);
48
+ }
49
+
50
+ void predoit(void)
51
+ {
52
+ }
53
+
54
+ void doit(void)
55
+ {
56
+ crypto_scalarmult(q,n,p);
57
+ crypto_scalarmult_base(r,n);
58
+ }
59
+
60
+ char checksum[crypto_scalarmult_BYTES * 2 + 1];
61
+
62
+ const char *checksum_compute(void)
63
+ {
64
+ long long i;
65
+ long long j;
66
+ long long tests;
67
+
68
+ for (i = 0;i < mlen;++i) m[i] = i;
69
+ for (i = 0;i < nlen;++i) n[i] = i + 1;
70
+ for (i = 0;i < plen;++i) p[i] = i + 2;
71
+ for (i = 0;i < qlen;++i) q[i] = i + 3;
72
+ for (i = 0;i < rlen;++i) r[i] = i + 4;
73
+
74
+ for (i = -16;i < 0;++i) p[i] = random();
75
+ for (i = -16;i < 0;++i) n[i] = random();
76
+ for (i = plen;i < plen + 16;++i) p[i] = random();
77
+ for (i = nlen;i < nlen + 16;++i) n[i] = random();
78
+ for (i = -16;i < plen + 16;++i) p2[i] = p[i];
79
+ for (i = -16;i < nlen + 16;++i) n2[i] = n[i];
80
+
81
+ if (crypto_scalarmult_base(p,n) != 0) return "crypto_scalarmult_base returns nonzero";
82
+
83
+ for (i = -16;i < nlen + 16;++i) if (n2[i] != n[i]) return "crypto_scalarmult_base overwrites input";
84
+ for (i = -16;i < 0;++i) if (p2[i] != p[i]) return "crypto_scalarmult_base writes before output";
85
+ for (i = plen;i < plen + 16;++i) if (p2[i] != p[i]) return "crypto_scalarmult_base writes after output";
86
+
87
+ for (tests = 0;tests < 100;++tests) {
88
+ for (i = -16;i < 0;++i) q[i] = random();
89
+ for (i = -16;i < 0;++i) p[i] = random();
90
+ for (i = -16;i < 0;++i) m[i] = random();
91
+ for (i = qlen;i < qlen + 16;++i) q[i] = random();
92
+ for (i = plen;i < plen + 16;++i) p[i] = random();
93
+ for (i = mlen;i < mlen + 16;++i) m[i] = random();
94
+ for (i = -16;i < qlen + 16;++i) q2[i] = q[i];
95
+ for (i = -16;i < plen + 16;++i) p2[i] = p[i];
96
+ for (i = -16;i < mlen + 16;++i) m2[i] = m[i];
97
+
98
+ if (crypto_scalarmult(q,m,p) != 0) return "crypto_scalarmult returns nonzero";
99
+
100
+ for (i = -16;i < mlen + 16;++i) if (m2[i] != m[i]) return "crypto_scalarmult overwrites n input";
101
+ for (i = -16;i < plen + 16;++i) if (p2[i] != p[i]) return "crypto_scalarmult overwrites p input";
102
+ for (i = -16;i < 0;++i) if (q2[i] != q[i]) return "crypto_scalarmult writes before output";
103
+ for (i = qlen;i < qlen + 16;++i) if (q2[i] != q[i]) return "crypto_scalarmult writes after output";
104
+
105
+ if (crypto_scalarmult(m2,m2,p) != 0) return "crypto_scalarmult returns nonzero";
106
+ for (i = 0;i < qlen;++i) if (q[i] != m2[i]) return "crypto_scalarmult does not handle n overlap";
107
+ for (i = 0;i < qlen;++i) m2[i] = m[i];
108
+
109
+ if (crypto_scalarmult(p2,m2,p2) != 0) return "crypto_scalarmult returns nonzero";
110
+ for (i = 0;i < qlen;++i) if (q[i] != p2[i]) return "crypto_scalarmult does not handle p overlap";
111
+
112
+ if (crypto_scalarmult(r,n,q) != 0) return "crypto_scalarmult returns nonzero";
113
+ if (crypto_scalarmult(q,n,p) != 0) return "crypto_scalarmult returns nonzero";
114
+ if (crypto_scalarmult(p,m,q) != 0) return "crypto_scalarmult returns nonzero";
115
+ for (j = 0;j < plen;++j) if (p[j] != r[j]) return "crypto_scalarmult not associative";
116
+ for (j = 0;j < mlen;++j) m[j] ^= q[j % qlen];
117
+ for (j = 0;j < nlen;++j) n[j] ^= p[j % plen];
118
+ }
119
+
120
+ for (i = 0;i < crypto_scalarmult_BYTES;++i) {
121
+ checksum[2 * i] = "0123456789abcdef"[15 & (p[i] >> 4)];
122
+ checksum[2 * i + 1] = "0123456789abcdef"[15 & p[i]];
123
+ }
124
+ checksum[2 * i] = 0;
125
+ return 0;
126
+ }
@@ -0,0 +1,11 @@
1
+ #include <string>
2
+ using std::string;
3
+ #include "crypto_scalarmult.h"
4
+
5
+ string crypto_scalarmult_base(const string &n)
6
+ {
7
+ unsigned char q[crypto_scalarmult_BYTES];
8
+ if (n.size() != crypto_scalarmult_SCALARBYTES) throw "incorrect scalar length";
9
+ crypto_scalarmult_base(q,(const unsigned char *) n.c_str());
10
+ return string((char *) q,sizeof q);
11
+ }
@@ -0,0 +1,12 @@
1
+ #include <string>
2
+ using std::string;
3
+ #include "crypto_scalarmult.h"
4
+
5
+ string crypto_scalarmult(const string &n,const string &p)
6
+ {
7
+ unsigned char q[crypto_scalarmult_BYTES];
8
+ if (n.size() != crypto_scalarmult_SCALARBYTES) throw "incorrect scalar length";
9
+ if (p.size() != crypto_scalarmult_BYTES) throw "incorrect element length";
10
+ crypto_scalarmult(q,(const unsigned char *) n.c_str(),(const unsigned char *) p.c_str());
11
+ return string((char *) q,sizeof q);
12
+ }
@@ -0,0 +1,75 @@
1
+ #include <stdlib.h>
2
+ #include "randombytes.h"
3
+ #include "cpucycles.h"
4
+ #include "crypto_secretbox.h"
5
+
6
+ extern void printentry(long long,const char *,long long *,long long);
7
+ extern unsigned char *alignedcalloc(unsigned long long);
8
+ extern const char *primitiveimplementation;
9
+ extern const char *implementationversion;
10
+ extern const char *sizenames[];
11
+ extern const long long sizes[];
12
+ extern void allocate(void);
13
+ extern void measure(void);
14
+
15
+ const char *primitiveimplementation = crypto_secretbox_IMPLEMENTATION;
16
+ const char *implementationversion = crypto_secretbox_VERSION;
17
+ const char *sizenames[] = { "keybytes", "noncebytes", "zerobytes", "boxzerobytes", 0 };
18
+ const long long sizes[] = { crypto_secretbox_KEYBYTES, crypto_secretbox_NONCEBYTES, crypto_secretbox_ZEROBYTES, crypto_secretbox_BOXZEROBYTES };
19
+
20
+ #define MAXTEST_BYTES 4096
21
+
22
+ static unsigned char *k;
23
+ static unsigned char *n;
24
+ static unsigned char *m;
25
+ static unsigned char *c;
26
+
27
+ void preallocate(void)
28
+ {
29
+ }
30
+
31
+ void allocate(void)
32
+ {
33
+ k = alignedcalloc(crypto_secretbox_KEYBYTES);
34
+ n = alignedcalloc(crypto_secretbox_NONCEBYTES);
35
+ m = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
36
+ c = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
37
+ }
38
+
39
+ #define TIMINGS 15
40
+ static long long cycles[TIMINGS + 1];
41
+
42
+ void measure(void)
43
+ {
44
+ int i;
45
+ int loop;
46
+ int mlen;
47
+
48
+ for (loop = 0;loop < LOOPS;++loop) {
49
+ for (mlen = 0;mlen <= MAXTEST_BYTES;mlen += 1 + mlen / 8) {
50
+ randombytes(k,crypto_secretbox_KEYBYTES);
51
+ randombytes(n,crypto_secretbox_NONCEBYTES);
52
+ randombytes(m + crypto_secretbox_ZEROBYTES,mlen);
53
+ randombytes(c,mlen + crypto_secretbox_ZEROBYTES);
54
+ for (i = 0;i <= TIMINGS;++i) {
55
+ cycles[i] = cpucycles();
56
+ crypto_secretbox(c,m,mlen + crypto_secretbox_ZEROBYTES,n,k);
57
+ }
58
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
59
+ printentry(mlen,"cycles",cycles,TIMINGS);
60
+ for (i = 0;i <= TIMINGS;++i) {
61
+ cycles[i] = cpucycles();
62
+ crypto_secretbox_open(m,c,mlen + crypto_secretbox_ZEROBYTES,n,k);
63
+ }
64
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
65
+ printentry(mlen,"open_cycles",cycles,TIMINGS);
66
+ ++c[crypto_secretbox_ZEROBYTES];
67
+ for (i = 0;i <= TIMINGS;++i) {
68
+ cycles[i] = cpucycles();
69
+ crypto_secretbox_open(m,c,mlen + crypto_secretbox_ZEROBYTES,n,k);
70
+ }
71
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
72
+ printentry(mlen,"forgery_open_cycles",cycles,TIMINGS);
73
+ }
74
+ }
75
+ }
@@ -0,0 +1,129 @@
1
+ /*
2
+ * crypto_secretbox/try.c version 20090118
3
+ * D. J. Bernstein
4
+ * Public domain.
5
+ */
6
+
7
+ #include "crypto_secretbox.h"
8
+
9
+ extern unsigned char *alignedcalloc(unsigned long long);
10
+
11
+ const char *primitiveimplementation = crypto_secretbox_IMPLEMENTATION;
12
+
13
+ #define MAXTEST_BYTES 10000
14
+ #define CHECKSUM_BYTES 4096
15
+ #define TUNE_BYTES 1536
16
+
17
+ static unsigned char *k;
18
+ static unsigned char *n;
19
+ static unsigned char *m;
20
+ static unsigned char *c;
21
+ static unsigned char *t;
22
+ static unsigned char *k2;
23
+ static unsigned char *n2;
24
+ static unsigned char *m2;
25
+ static unsigned char *c2;
26
+ static unsigned char *t2;
27
+
28
+ #define klen crypto_secretbox_KEYBYTES
29
+ #define nlen crypto_secretbox_NONCEBYTES
30
+
31
+ void preallocate(void)
32
+ {
33
+ }
34
+
35
+ void allocate(void)
36
+ {
37
+ k = alignedcalloc(klen);
38
+ n = alignedcalloc(nlen);
39
+ m = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
40
+ c = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
41
+ t = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
42
+ k2 = alignedcalloc(klen);
43
+ n2 = alignedcalloc(nlen);
44
+ m2 = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
45
+ c2 = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
46
+ t2 = alignedcalloc(MAXTEST_BYTES + crypto_secretbox_ZEROBYTES);
47
+ }
48
+
49
+ void predoit(void)
50
+ {
51
+ }
52
+
53
+ void doit(void)
54
+ {
55
+ crypto_secretbox(c,m,TUNE_BYTES + crypto_secretbox_ZEROBYTES,n,k);
56
+ crypto_secretbox_open(t,c,TUNE_BYTES + crypto_secretbox_ZEROBYTES,n,k);
57
+ }
58
+
59
+ char checksum[klen * 2 + 1];
60
+
61
+ const char *checksum_compute(void)
62
+ {
63
+ long long i;
64
+ long long j;
65
+
66
+ for (j = 0;j < crypto_secretbox_ZEROBYTES;++j) m[j] = 0;
67
+
68
+ for (i = 0;i < CHECKSUM_BYTES;++i) {
69
+ long long mlen = i + crypto_secretbox_ZEROBYTES;
70
+ long long tlen = i + crypto_secretbox_ZEROBYTES;
71
+ long long clen = i + crypto_secretbox_ZEROBYTES;
72
+
73
+ for (j = -16;j < 0;++j) k[j] = random();
74
+ for (j = -16;j < 0;++j) n[j] = random();
75
+ for (j = -16;j < 0;++j) m[j] = random();
76
+ for (j = klen;j < klen + 16;++j) k[j] = random();
77
+ for (j = nlen;j < nlen + 16;++j) n[j] = random();
78
+ for (j = mlen;j < mlen + 16;++j) m[j] = random();
79
+ for (j = -16;j < klen + 16;++j) k2[j] = k[j];
80
+ for (j = -16;j < nlen + 16;++j) n2[j] = n[j];
81
+ for (j = -16;j < mlen + 16;++j) m2[j] = m[j];
82
+ for (j = -16;j < clen + 16;++j) c2[j] = c[j] = random();
83
+
84
+ if (crypto_secretbox(c,m,mlen,n,k) != 0) return "crypto_secretbox returns nonzero";
85
+
86
+ for (j = -16;j < mlen + 16;++j) if (m2[j] != m[j]) return "crypto_secretbox overwrites m";
87
+ for (j = -16;j < nlen + 16;++j) if (n2[j] != n[j]) return "crypto_secretbox overwrites n";
88
+ for (j = -16;j < klen + 16;++j) if (k2[j] != k[j]) return "crypto_secretbox overwrites k";
89
+ for (j = -16;j < 0;++j) if (c2[j] != c[j]) return "crypto_secretbox writes before output";
90
+ for (j = clen;j < clen + 16;++j) if (c2[j] != c[j]) return "crypto_secretbox writes after output";
91
+ for (j = 0;j < crypto_secretbox_BOXZEROBYTES;++j)
92
+ if (c[j] != 0) return "crypto_secretbox does not clear extra bytes";
93
+
94
+ for (j = -16;j < 0;++j) c[j] = random();
95
+ for (j = clen;j < clen + 16;++j) c[j] = random();
96
+ for (j = -16;j < clen + 16;++j) c2[j] = c[j];
97
+ for (j = -16;j < tlen + 16;++j) t2[j] = t[j] = random();
98
+
99
+ if (crypto_secretbox_open(t,c,clen,n,k) != 0) return "crypto_secretbox_open returns nonzero";
100
+
101
+ for (j = -16;j < clen + 16;++j) if (c2[j] != c[j]) return "crypto_secretbox_open overwrites c";
102
+ for (j = -16;j < nlen + 16;++j) if (n2[j] != n[j]) return "crypto_secretbox_open overwrites n";
103
+ for (j = -16;j < klen + 16;++j) if (k2[j] != k[j]) return "crypto_secretbox_open overwrites k";
104
+ for (j = -16;j < 0;++j) if (t2[j] != t[j]) return "crypto_secretbox_open writes before output";
105
+ for (j = tlen;j < tlen + 16;++j) if (t2[j] != t[j]) return "crypto_secretbox_open writes after output";
106
+ for (j = 0;j < crypto_secretbox_ZEROBYTES;++j)
107
+ if (t[j] != 0) return "crypto_secretbox_open does not clear extra bytes";
108
+
109
+ for (j = 0;j < i;++j) if (t[j] != m[j]) return "plaintext does not match";
110
+
111
+ for (j = 0;j < i;++j)
112
+ k[j % klen] ^= c[j + crypto_secretbox_BOXZEROBYTES];
113
+ crypto_secretbox(c,m,mlen,n,k);
114
+ for (j = 0;j < i;++j)
115
+ n[j % nlen] ^= c[j + crypto_secretbox_BOXZEROBYTES];
116
+ crypto_secretbox(c,m,mlen,n,k);
117
+ if (i == 0) m[crypto_secretbox_ZEROBYTES + 0] = 0;
118
+ m[crypto_secretbox_ZEROBYTES + i] = m[crypto_secretbox_ZEROBYTES + 0];
119
+ for (j = 0;j < i;++j)
120
+ m[j + crypto_secretbox_ZEROBYTES] ^= c[j + crypto_secretbox_BOXZEROBYTES];
121
+ }
122
+
123
+ for (i = 0;i < klen;++i) {
124
+ checksum[2 * i] = "0123456789abcdef"[15 & (k[i] >> 4)];
125
+ checksum[2 * i + 1] = "0123456789abcdef"[15 & k[i]];
126
+ }
127
+ checksum[2 * i] = 0;
128
+ return 0;
129
+ }
@@ -0,0 +1,19 @@
1
+ #include <string>
2
+ using std::string;
3
+ #include "crypto_secretbox.h"
4
+
5
+ string crypto_secretbox(const string &m,const string &n,const string &k)
6
+ {
7
+ if (k.size() != crypto_secretbox_KEYBYTES) throw "incorrect key length";
8
+ if (n.size() != crypto_secretbox_NONCEBYTES) throw "incorrect nonce length";
9
+ size_t mlen = m.size() + crypto_secretbox_ZEROBYTES;
10
+ unsigned char mpad[mlen];
11
+ for (int i = 0;i < crypto_secretbox_ZEROBYTES;++i) mpad[i] = 0;
12
+ for (int i = crypto_secretbox_ZEROBYTES;i < mlen;++i) mpad[i] = m[i - crypto_secretbox_ZEROBYTES];
13
+ unsigned char cpad[mlen];
14
+ crypto_secretbox(cpad,mpad,mlen,(const unsigned char *) n.c_str(),(const unsigned char *) k.c_str());
15
+ return string(
16
+ (char *) cpad + crypto_secretbox_BOXZEROBYTES,
17
+ mlen - crypto_secretbox_BOXZEROBYTES
18
+ );
19
+ }