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,34 @@
1
+ #ifndef GE25519_H
2
+ #define GE25519_H
3
+
4
+ #include "fe25519.h"
5
+ #include "sc25519.h"
6
+
7
+ #define ge25519 crypto_sign_edwards25519sha512batch_ge25519
8
+ #define ge25519_unpack_vartime crypto_sign_edwards25519sha512batch_ge25519_unpack_vartime
9
+ #define ge25519_pack crypto_sign_edwards25519sha512batch_ge25519_pack
10
+ #define ge25519_add crypto_sign_edwards25519sha512batch_ge25519_add
11
+ #define ge25519_double crypto_sign_edwards25519sha512batch_ge25519_double
12
+ #define ge25519_scalarmult crypto_sign_edwards25519sha512batch_ge25519_scalarmult
13
+ #define ge25519_scalarmult_base crypto_sign_edwards25519sha512batch_ge25519_scalarmult_base
14
+
15
+ typedef struct {
16
+ fe25519 x;
17
+ fe25519 y;
18
+ fe25519 z;
19
+ fe25519 t;
20
+ } ge25519;
21
+
22
+ int ge25519_unpack_vartime(ge25519 *r, const unsigned char p[32]);
23
+
24
+ void ge25519_pack(unsigned char r[32], const ge25519 *p);
25
+
26
+ void ge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q);
27
+
28
+ void ge25519_double(ge25519 *r, const ge25519 *p);
29
+
30
+ void ge25519_scalarmult(ge25519 *r, const ge25519 *p, const sc25519 *s);
31
+
32
+ void ge25519_scalarmult_base(ge25519 *r, const sc25519 *s);
33
+
34
+ #endif
@@ -0,0 +1,146 @@
1
+ #include "sc25519.h"
2
+
3
+ /*Arithmetic modulo the group order n = 2^252 + 27742317777372353535851937790883648493 = 7237005577332262213973186563042994240857116359379907606001950938285454250989 */
4
+
5
+ static const crypto_uint32 m[32] = {0xED, 0xD3, 0xF5, 0x5C, 0x1A, 0x63, 0x12, 0x58, 0xD6, 0x9C, 0xF7, 0xA2, 0xDE, 0xF9, 0xDE, 0x14,
6
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10};
7
+
8
+ static const crypto_uint32 mu[33] = {0x1B, 0x13, 0x2C, 0x0A, 0xA3, 0xE5, 0x9C, 0xED, 0xA7, 0x29, 0x63, 0x08, 0x5D, 0x21, 0x06, 0x21,
9
+ 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F};
10
+
11
+ /* Reduce coefficients of r before calling reduce_add_sub */
12
+ static void reduce_add_sub(sc25519 *r)
13
+ {
14
+ int i, b, pb=0, nb;
15
+ unsigned char t[32];
16
+
17
+ for(i=0;i<32;i++)
18
+ {
19
+ b = (r->v[i]<pb+m[i]);
20
+ t[i] = r->v[i]-pb-m[i]+b*256;
21
+ pb = b;
22
+ }
23
+ nb = 1-b;
24
+ for(i=0;i<32;i++)
25
+ r->v[i] = r->v[i]*b + t[i]*nb;
26
+ }
27
+
28
+ /* Reduce coefficients of x before calling barrett_reduce */
29
+ static void barrett_reduce(sc25519 *r, const crypto_uint32 x[64])
30
+ {
31
+ /* See HAC, Alg. 14.42 */
32
+ int i,j;
33
+ crypto_uint32 q2[66] = {0};
34
+ crypto_uint32 *q3 = q2 + 33;
35
+ crypto_uint32 r1[33];
36
+ crypto_uint32 r2[33] = {0};
37
+ crypto_uint32 carry;
38
+ int b, pb=0;
39
+
40
+ for(i=0;i<33;i++)
41
+ for(j=0;j<33;j++)
42
+ if(i+j >= 31) q2[i+j] += mu[i]*x[j+31];
43
+ carry = q2[31] >> 8;
44
+ q2[32] += carry;
45
+ carry = q2[32] >> 8;
46
+ q2[33] += carry;
47
+
48
+ for(i=0;i<33;i++)r1[i] = x[i];
49
+ for(i=0;i<32;i++)
50
+ for(j=0;j<33;j++)
51
+ if(i+j < 33) r2[i+j] += m[i]*q3[j];
52
+
53
+ for(i=0;i<32;i++)
54
+ {
55
+ carry = r2[i] >> 8;
56
+ r2[i+1] += carry;
57
+ r2[i] &= 0xff;
58
+ }
59
+
60
+ for(i=0;i<32;i++)
61
+ {
62
+ b = (r1[i]<pb+r2[i]);
63
+ r->v[i] = r1[i]-pb-r2[i]+b*256;
64
+ pb = b;
65
+ }
66
+
67
+ /* XXX: Can it really happen that r<0?, See HAC, Alg 14.42, Step 3
68
+ * If so: Handle it here!
69
+ */
70
+
71
+ reduce_add_sub(r);
72
+ reduce_add_sub(r);
73
+ }
74
+
75
+ /*
76
+ static int iszero(const sc25519 *x)
77
+ {
78
+ // Implement
79
+ return 0;
80
+ }
81
+ */
82
+
83
+ void sc25519_from32bytes(sc25519 *r, const unsigned char x[32])
84
+ {
85
+ int i;
86
+ crypto_uint32 t[64] = {0};
87
+ for(i=0;i<32;i++) t[i] = x[i];
88
+ barrett_reduce(r, t);
89
+ }
90
+
91
+ void sc25519_from64bytes(sc25519 *r, const unsigned char x[64])
92
+ {
93
+ int i;
94
+ crypto_uint32 t[64] = {0};
95
+ for(i=0;i<64;i++) t[i] = x[i];
96
+ barrett_reduce(r, t);
97
+ }
98
+
99
+ /* XXX: What we actually want for crypto_group is probably just something like
100
+ * void sc25519_frombytes(sc25519 *r, const unsigned char *x, size_t xlen)
101
+ */
102
+
103
+ void sc25519_to32bytes(unsigned char r[32], const sc25519 *x)
104
+ {
105
+ int i;
106
+ for(i=0;i<32;i++) r[i] = x->v[i];
107
+ }
108
+
109
+ void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y)
110
+ {
111
+ int i, carry;
112
+ for(i=0;i<32;i++) r->v[i] = x->v[i] + y->v[i];
113
+ for(i=0;i<31;i++)
114
+ {
115
+ carry = r->v[i] >> 8;
116
+ r->v[i+1] += carry;
117
+ r->v[i] &= 0xff;
118
+ }
119
+ reduce_add_sub(r);
120
+ }
121
+
122
+ void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y)
123
+ {
124
+ int i,j,carry;
125
+ crypto_uint32 t[64];
126
+ for(i=0;i<64;i++)t[i] = 0;
127
+
128
+ for(i=0;i<32;i++)
129
+ for(j=0;j<32;j++)
130
+ t[i+j] += x->v[i] * y->v[j];
131
+
132
+ /* Reduce coefficients */
133
+ for(i=0;i<63;i++)
134
+ {
135
+ carry = t[i] >> 8;
136
+ t[i+1] += carry;
137
+ t[i] &= 0xff;
138
+ }
139
+
140
+ barrett_reduce(r, t);
141
+ }
142
+
143
+ void sc25519_square(sc25519 *r, const sc25519 *x)
144
+ {
145
+ sc25519_mul(r, x, x);
146
+ }
@@ -0,0 +1,51 @@
1
+ #ifndef SC25519_H
2
+ #define SC25519_H
3
+
4
+ #define sc25519 crypto_sign_edwards25519sha512batch_sc25519
5
+ #define sc25519_from32bytes crypto_sign_edwards25519sha512batch_sc25519_from32bytes
6
+ #define sc25519_from64bytes crypto_sign_edwards25519sha512batch_sc25519_from64bytes
7
+ #define sc25519_to32bytes crypto_sign_edwards25519sha512batch_sc25519_to32bytes
8
+ #define sc25519_pack crypto_sign_edwards25519sha512batch_sc25519_pack
9
+ #define sc25519_getparity crypto_sign_edwards25519sha512batch_sc25519_getparity
10
+ #define sc25519_setone crypto_sign_edwards25519sha512batch_sc25519_setone
11
+ #define sc25519_setzero crypto_sign_edwards25519sha512batch_sc25519_setzero
12
+ #define sc25519_neg crypto_sign_edwards25519sha512batch_sc25519_neg
13
+ #define sc25519_add crypto_sign_edwards25519sha512batch_sc25519_add
14
+ #define sc25519_sub crypto_sign_edwards25519sha512batch_sc25519_sub
15
+ #define sc25519_mul crypto_sign_edwards25519sha512batch_sc25519_mul
16
+ #define sc25519_square crypto_sign_edwards25519sha512batch_sc25519_square
17
+ #define sc25519_invert crypto_sign_edwards25519sha512batch_sc25519_invert
18
+
19
+ #include "crypto_uint32.h"
20
+
21
+ typedef struct {
22
+ crypto_uint32 v[32];
23
+ } sc25519;
24
+
25
+ void sc25519_from32bytes(sc25519 *r, const unsigned char x[32]);
26
+
27
+ void sc25519_from64bytes(sc25519 *r, const unsigned char x[64]);
28
+
29
+ void sc25519_to32bytes(unsigned char r[32], const sc25519 *x);
30
+
31
+ void sc25519_pack(unsigned char r[32], const sc25519 *x);
32
+
33
+ unsigned char sc25519_getparity(const sc25519 *x);
34
+
35
+ void sc25519_setone(sc25519 *r);
36
+
37
+ void sc25519_setzero(sc25519 *r);
38
+
39
+ void sc25519_neg(sc25519 *r, const sc25519 *x);
40
+
41
+ void sc25519_add(sc25519 *r, const sc25519 *x, const sc25519 *y);
42
+
43
+ void sc25519_sub(sc25519 *r, const sc25519 *x, const sc25519 *y);
44
+
45
+ void sc25519_mul(sc25519 *r, const sc25519 *x, const sc25519 *y);
46
+
47
+ void sc25519_square(sc25519 *r, const sc25519 *x);
48
+
49
+ void sc25519_invert(sc25519 *r, const sc25519 *x);
50
+
51
+ #endif
@@ -0,0 +1,103 @@
1
+ #include "api.h"
2
+ #include "crypto_sign.h"
3
+ #include "crypto_hash_sha512.h"
4
+ #include "randombytes.h"
5
+ #include "crypto_verify_32.h"
6
+
7
+ #include "ge25519.h"
8
+
9
+ int crypto_sign_keypair(
10
+ unsigned char *pk,
11
+ unsigned char *sk
12
+ )
13
+ {
14
+ sc25519 scsk;
15
+ ge25519 gepk;
16
+
17
+ randombytes(sk, 32);
18
+ crypto_hash_sha512(sk, sk, 32);
19
+ sk[0] &= 248;
20
+ sk[31] &= 127;
21
+ sk[31] |= 64;
22
+
23
+ sc25519_from32bytes(&scsk,sk);
24
+
25
+ ge25519_scalarmult_base(&gepk, &scsk);
26
+ ge25519_pack(pk, &gepk);
27
+ return 0;
28
+ }
29
+
30
+ int crypto_sign(
31
+ unsigned char *sm,unsigned long long *smlen,
32
+ const unsigned char *m,unsigned long long mlen,
33
+ const unsigned char *sk
34
+ )
35
+ {
36
+ sc25519 sck, scs, scsk;
37
+ ge25519 ger;
38
+ unsigned char r[32];
39
+ unsigned char s[32];
40
+ unsigned long long i;
41
+ unsigned char hmg[crypto_hash_sha512_BYTES];
42
+ unsigned char hmr[crypto_hash_sha512_BYTES];
43
+
44
+ *smlen = mlen+64;
45
+ for(i=0;i<mlen;i++)
46
+ sm[32 + i] = m[i];
47
+ for(i=0;i<32;i++)
48
+ sm[i] = sk[32+i];
49
+ crypto_hash_sha512(hmg, sm, mlen+32); /* Generate k as h(m,sk[32],...,sk[63]) */
50
+
51
+ sc25519_from64bytes(&sck, hmg);
52
+ ge25519_scalarmult_base(&ger, &sck);
53
+ ge25519_pack(r, &ger);
54
+
55
+ for(i=0;i<32;i++)
56
+ sm[i] = r[i];
57
+
58
+ crypto_hash_sha512(hmr, sm, mlen+32); /* Compute h(m,r) */
59
+ sc25519_from64bytes(&scs, hmr);
60
+ sc25519_mul(&scs, &scs, &sck);
61
+
62
+ sc25519_from32bytes(&scsk, sk);
63
+ sc25519_add(&scs, &scs, &scsk);
64
+
65
+ sc25519_to32bytes(s,&scs); /* cat s */
66
+ for(i=0;i<32;i++)
67
+ sm[mlen+32+i] = s[i];
68
+
69
+ return 0;
70
+ }
71
+
72
+ int crypto_sign_open(
73
+ unsigned char *m,unsigned long long *mlen,
74
+ const unsigned char *sm,unsigned long long smlen,
75
+ const unsigned char *pk
76
+ )
77
+ {
78
+ int i;
79
+ unsigned char t1[32], t2[32];
80
+ ge25519 get1, get2, gepk;
81
+ sc25519 schmr, scs;
82
+ unsigned char hmr[crypto_hash_sha512_BYTES];
83
+
84
+ if (ge25519_unpack_vartime(&get1, sm)) return -1;
85
+ if (ge25519_unpack_vartime(&gepk, pk)) return -1;
86
+
87
+ crypto_hash_sha512(hmr,sm,smlen-32);
88
+
89
+ sc25519_from64bytes(&schmr, hmr);
90
+ ge25519_scalarmult(&get1, &get1, &schmr);
91
+ ge25519_add(&get1, &get1, &gepk);
92
+ ge25519_pack(t1, &get1);
93
+
94
+ sc25519_from32bytes(&scs, &sm[smlen-32]);
95
+ ge25519_scalarmult_base(&get2, &scs);
96
+ ge25519_pack(t2, &get2);
97
+
98
+ for(i=0;i<smlen-64;i++)
99
+ m[i] = sm[i + 32];
100
+ *mlen = smlen-64;
101
+
102
+ return crypto_verify_32(t1, t2);
103
+ }
@@ -0,0 +1,83 @@
1
+ #include <stdlib.h>
2
+ #include "randombytes.h"
3
+ #include "cpucycles.h"
4
+ #include "crypto_sign.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_sign_IMPLEMENTATION;
16
+ const char *implementationversion = crypto_sign_VERSION;
17
+ const char *sizenames[] = { "outputbytes", "publickeybytes", "secretkeybytes", 0 };
18
+ const long long sizes[] = { crypto_sign_BYTES, crypto_sign_PUBLICKEYBYTES, crypto_sign_SECRETKEYBYTES };
19
+
20
+ #define MAXTEST_BYTES 100000
21
+
22
+ static unsigned char *pk;
23
+ static unsigned char *sk;
24
+ static unsigned char *m; unsigned long long mlen;
25
+ static unsigned char *sm; unsigned long long smlen;
26
+ static unsigned char *t; unsigned long long tlen;
27
+
28
+ void preallocate(void)
29
+ {
30
+ #ifdef RAND_R_PRNG_NOT_SEEDED
31
+ RAND_status();
32
+ #endif
33
+ }
34
+
35
+ void allocate(void)
36
+ {
37
+ pk = alignedcalloc(crypto_sign_PUBLICKEYBYTES);
38
+ sk = alignedcalloc(crypto_sign_SECRETKEYBYTES);
39
+ m = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
40
+ sm = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
41
+ t = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
42
+ }
43
+
44
+ #define TIMINGS 31
45
+ static long long cycles[TIMINGS + 1];
46
+ static long long bytes[TIMINGS + 1];
47
+
48
+ void measure(void)
49
+ {
50
+ int i;
51
+ int loop;
52
+
53
+ for (loop = 0;loop < LOOPS;++loop) {
54
+ for (i = 0;i <= TIMINGS;++i) {
55
+ cycles[i] = cpucycles();
56
+ crypto_sign_keypair(pk,sk);
57
+ }
58
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
59
+ printentry(-1,"keypair_cycles",cycles,TIMINGS);
60
+
61
+ for (mlen = 0;mlen <= MAXTEST_BYTES;mlen += 1 + mlen / 4) {
62
+ randombytes(m,mlen);
63
+
64
+ for (i = 0;i <= TIMINGS;++i) {
65
+ cycles[i] = cpucycles();
66
+ bytes[i] = crypto_sign(sm,&smlen,m,mlen,sk);
67
+ if (bytes[i] == 0) bytes[i] = smlen;
68
+ }
69
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
70
+ printentry(mlen,"cycles",cycles,TIMINGS);
71
+ printentry(mlen,"bytes",bytes,TIMINGS);
72
+
73
+ for (i = 0;i <= TIMINGS;++i) {
74
+ cycles[i] = cpucycles();
75
+ bytes[i] = crypto_sign_open(t,&tlen,sm,smlen,pk);
76
+ if (bytes[i] == 0) bytes[i] = tlen;
77
+ }
78
+ for (i = 0;i < TIMINGS;++i) cycles[i] = cycles[i + 1] - cycles[i];
79
+ printentry(mlen,"open_cycles",cycles,TIMINGS);
80
+ printentry(mlen,"open_bytes",bytes,TIMINGS);
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,86 @@
1
+ /*
2
+ * crypto_sign/try.c version 20090118
3
+ * D. J. Bernstein
4
+ * Public domain.
5
+ */
6
+
7
+ #include <stdlib.h>
8
+ #include "randombytes.h"
9
+ #include "crypto_sign.h"
10
+
11
+ #define MAXTEST_BYTES 10000
12
+ #define TUNE_BYTES 1536
13
+
14
+ extern unsigned char *alignedcalloc(unsigned long long);
15
+
16
+ const char *primitiveimplementation = crypto_sign_IMPLEMENTATION;
17
+
18
+ static unsigned char *pk;
19
+ static unsigned char *sk;
20
+ static unsigned char *m; unsigned long long mlen;
21
+ static unsigned char *sm; unsigned long long smlen;
22
+ static unsigned char *t; unsigned long long tlen;
23
+
24
+ void preallocate(void)
25
+ {
26
+ #ifdef RAND_R_PRNG_NOT_SEEDED
27
+ RAND_status();
28
+ #endif
29
+ }
30
+
31
+ void allocate(void)
32
+ {
33
+ pk = alignedcalloc(crypto_sign_PUBLICKEYBYTES);
34
+ sk = alignedcalloc(crypto_sign_SECRETKEYBYTES);
35
+ m = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
36
+ sm = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
37
+ t = alignedcalloc(MAXTEST_BYTES + crypto_sign_BYTES);
38
+ }
39
+
40
+ void predoit(void)
41
+ {
42
+ crypto_sign_keypair(pk,sk);
43
+ mlen = TUNE_BYTES;
44
+ smlen = 0;
45
+ randombytes(m,mlen);
46
+ crypto_sign(sm,&smlen,m,mlen,sk);
47
+ }
48
+
49
+ void doit(void)
50
+ {
51
+ crypto_sign_open(t,&tlen,sm,smlen,pk);
52
+ }
53
+
54
+ char checksum[crypto_sign_BYTES * 2 + 1];
55
+
56
+ const char *checksum_compute(void)
57
+ {
58
+ long long mlen;
59
+ long long i;
60
+ long long j;
61
+
62
+ if (crypto_sign_keypair(pk,sk) != 0) return "crypto_sign_keypair returns nonzero";
63
+ for (mlen = 0;mlen < MAXTEST_BYTES;mlen += 1 + (mlen / 16)) {
64
+ if (crypto_sign(sm,&smlen,m,mlen,sk) != 0) return "crypto_sign returns nonzero";
65
+ if (crypto_sign_open(t,&tlen,sm,smlen,pk) != 0) return "crypto_sign_open returns nonzero";
66
+ if (tlen != mlen) return "crypto_sign_open does not match length";
67
+ for (i = 0;i < tlen;++i)
68
+ if (t[i] != m[i])
69
+ return "crypto_sign_open does not match contents";
70
+
71
+ j = random() % smlen;
72
+ sm[j] ^= 1;
73
+ if (crypto_sign_open(t,&tlen,sm,smlen,pk) == 0) {
74
+ if (tlen != mlen) return "crypto_sign_open allows trivial forgery of length";
75
+ for (i = 0;i < tlen;++i)
76
+ if (t[i] != m[i])
77
+ return "crypto_sign_open allows trivial forgery of contents";
78
+ }
79
+ sm[j] ^= 1;
80
+
81
+ }
82
+
83
+ /* do some long-term checksum */
84
+ checksum[0] = 0;
85
+ return 0;
86
+ }
@@ -0,0 +1,12 @@
1
+ #include <string>
2
+ using std::string;
3
+ #include "crypto_sign.h"
4
+
5
+ string crypto_sign_keypair(string *sk_string)
6
+ {
7
+ unsigned char pk[crypto_sign_PUBLICKEYBYTES];
8
+ unsigned char sk[crypto_sign_SECRETKEYBYTES];
9
+ crypto_sign_keypair(pk,sk);
10
+ *sk_string = string((char *) sk,sizeof sk);
11
+ return string((char *) pk,sizeof pk);
12
+ }
@@ -0,0 +1,24 @@
1
+ #include <string>
2
+ using std::string;
3
+ #include "crypto_sign.h"
4
+
5
+ string crypto_sign_open(const string &sm_string, const string &pk_string)
6
+ {
7
+ if (pk_string.size() != crypto_sign_PUBLICKEYBYTES) throw "incorrect public-key length";
8
+ size_t smlen = sm_string.size();
9
+ unsigned char m[smlen];
10
+ unsigned long long mlen;
11
+ for (int i = 0;i < smlen;++i) m[i] = sm_string[i];
12
+ if (crypto_sign_open(
13
+ m,
14
+ &mlen,
15
+ m,
16
+ smlen,
17
+ (const unsigned char *) pk_string.c_str()
18
+ ) != 0)
19
+ throw "ciphertext fails verification";
20
+ return string(
21
+ (char *) m,
22
+ mlen
23
+ );
24
+ }
@@ -0,0 +1,23 @@
1
+ #include <string>
2
+ using std::string;
3
+ #include "crypto_sign.h"
4
+
5
+ string crypto_sign(const string &m_string, const string &sk_string)
6
+ {
7
+ if (sk_string.size() != crypto_sign_SECRETKEYBYTES) throw "incorrect secret-key length";
8
+ size_t mlen = m_string.size();
9
+ unsigned char m[mlen+crypto_sign_BYTES];
10
+ unsigned long long smlen;
11
+ for (int i = 0;i < mlen;++i) m[i] = m_string[i];
12
+ crypto_sign(
13
+ m,
14
+ &smlen,
15
+ m,
16
+ mlen,
17
+ (const unsigned char *) sk_string.c_str()
18
+ );
19
+ return string(
20
+ (char *) m,
21
+ smlen
22
+ );
23
+ }
@@ -0,0 +1 @@
1
+ 6e9966897837aae181e93261ae88fdf0