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,497 @@
1
+ #include <signal.h>
2
+ #include <stdlib.h>
3
+ #include <sys/types.h>
4
+ #include <sys/stat.h>
5
+ #include <fcntl.h>
6
+ #include <unistd.h>
7
+ #include <poll.h>
8
+ #include "e.h"
9
+ #include "die.h"
10
+ #include "byte.h"
11
+ #include "open.h"
12
+ #include "load.h"
13
+ #include "socket.h"
14
+ #include "uint64_pack.h"
15
+ #include "uint64_unpack.h"
16
+ #include "writeall.h"
17
+ #include "nanoseconds.h"
18
+ #include "safenonce.h"
19
+ #include "nameparse.h"
20
+ #include "hexparse.h"
21
+ #include "portparse.h"
22
+ #include "randommod.h"
23
+
24
+ #include "randombytes.h"
25
+ #include "crypto_box.h"
26
+ #include "crypto_secretbox.h"
27
+ #if crypto_box_PUBLICKEYBYTES != 32
28
+ error!
29
+ #endif
30
+ #if crypto_box_NONCEBYTES != 24
31
+ error!
32
+ #endif
33
+ #if crypto_box_BOXZEROBYTES != 16
34
+ error!
35
+ #endif
36
+ #if crypto_box_ZEROBYTES != 32
37
+ error!
38
+ #endif
39
+ #if crypto_box_BEFORENMBYTES != 32
40
+ error!
41
+ #endif
42
+ #if crypto_secretbox_KEYBYTES != 32
43
+ error!
44
+ #endif
45
+ #if crypto_secretbox_NONCEBYTES != 24
46
+ error!
47
+ #endif
48
+ #if crypto_secretbox_BOXZEROBYTES != 16
49
+ error!
50
+ #endif
51
+ #if crypto_secretbox_ZEROBYTES != 32
52
+ error!
53
+ #endif
54
+
55
+ int flagverbose;
56
+
57
+ #define USAGE "\
58
+ curvecpserver: how to use:\n\
59
+ curvecpserver: -q (optional): no error messages\n\
60
+ curvecpserver: -Q (optional): print error messages (default)\n\
61
+ curvecpserver: -v (optional): print extra information\n\
62
+ curvecpserver: -c n (optional): allow at most n clients at once (default 100)\n\
63
+ curvecpserver: sname: server's name\n\
64
+ curvecpserver: keydir: use this public-key directory\n\
65
+ curvecpserver: ip: server's IP address\n\
66
+ curvecpserver: port: server's UDP port\n\
67
+ curvecpserver: ext: server's extension\n\
68
+ curvecpserver: prog: run this server\n\
69
+ "
70
+
71
+ void die_usage(const char *s)
72
+ {
73
+ if (s) die_4(100,USAGE,"curvecpserver: fatal: ",s,"\n");
74
+ die_1(100,USAGE);
75
+ }
76
+
77
+ void die_fatal(const char *trouble,const char *d,const char *fn)
78
+ {
79
+ if (!flagverbose) die_0(111);
80
+ if (d) {
81
+ if (fn) die_9(111,"curvecpserver: fatal: ",trouble," ",d,"/",fn,": ",e_str(errno),"\n");
82
+ die_7(111,"curvecpserver: fatal: ",trouble," ",d,": ",e_str(errno),"\n");
83
+ }
84
+ die_5(111,"curvecpserver: fatal: ",trouble,": ",e_str(errno),"\n");
85
+ }
86
+
87
+ int ipparse(unsigned char *y,const char *x)
88
+ {
89
+ long long j;
90
+ long long k;
91
+ long long d;
92
+
93
+ for (k = 0;k < 4;++k) y[k] = 0;
94
+ for (k = 0;k < 4;++k) {
95
+ d = 0;
96
+ for (j = 0;j < 3 && x[j] >= '0' && x[j] <= '9';++j) d = d * 10 + (x[j] - '0');
97
+ if (j == 0) return 0;
98
+ x += j;
99
+ if (k >= 0 && k < 4) y[k] = d;
100
+ if (k < 3) {
101
+ if (*x != '.') return 0;
102
+ ++x;
103
+ }
104
+ }
105
+ if (*x) return 0;
106
+ return 1;
107
+ }
108
+
109
+ int maxparse(long long *y,const char *x)
110
+ {
111
+ long long d;
112
+ long long j;
113
+
114
+ d = 0;
115
+ for (j = 0;j < 9 && x[j] >= '0' && x[j] <= '9';++j) d = d * 10 + (x[j] - '0');
116
+ if (x[j]) return 0;
117
+ if (d < 1) return 0;
118
+ if (d > 65535) return 0;
119
+ *y = d;
120
+ return 1;
121
+ }
122
+
123
+ /* cookies: */
124
+ long long nextminute;
125
+ unsigned char minutekey[32];
126
+ unsigned char lastminutekey[32];
127
+
128
+ /* routing to the server: */
129
+ unsigned char serverip[4];
130
+ unsigned char serverport[2];
131
+ unsigned char serverextension[16];
132
+ int udpfd = -1;
133
+
134
+ /* server security: */
135
+ char *keydir = 0;
136
+ unsigned char servername[256];
137
+ unsigned char serverlongtermsk[32];
138
+ unsigned char servershorttermpk[32];
139
+ unsigned char servershorttermsk[32];
140
+
141
+ /* routing to the client: */
142
+ unsigned char clientextension[16];
143
+
144
+ /* client security: */
145
+ unsigned char clientlongtermpk[32];
146
+ unsigned char clientshorttermpk[32];
147
+
148
+ /* shared secrets: */
149
+ unsigned char clientshortserverlong[32];
150
+ unsigned char clientshortservershort[32];
151
+ unsigned char clientlongserverlong[32];
152
+
153
+ unsigned char allzero[128] = {0};
154
+
155
+ unsigned char nonce[24];
156
+ unsigned char text[2048];
157
+
158
+ unsigned char packetip[4];
159
+ unsigned char packetport[2];
160
+ unsigned char packet[4096];
161
+ crypto_uint64 packetnonce;
162
+
163
+ #define MESSAGELEN 1104
164
+
165
+ struct activeclient {
166
+ unsigned char clientshorttermpk[32];
167
+ unsigned char clientshortservershort[32];
168
+ crypto_uint64 receivednonce;
169
+ crypto_uint64 sentnonce;
170
+ long long messagelen;
171
+ pid_t child;
172
+ int tochild;
173
+ int fromchild;
174
+ unsigned char clientextension[16];
175
+ unsigned char clientip[4];
176
+ unsigned char clientport[2];
177
+ unsigned char message[MESSAGELEN];
178
+ } ;
179
+
180
+ const char *strmaxactiveclients = "100";
181
+ long long maxactiveclients = 0;
182
+ long long numactiveclients = 0;
183
+ struct activeclient *activeclients = 0;
184
+ struct pollfd *p;
185
+
186
+ int fdwd = -1;
187
+
188
+ int pi0[2];
189
+ int pi1[2];
190
+
191
+ unsigned char childbuf[4096];
192
+ long long childbuflen = 0;
193
+ unsigned char childmessage[2048];
194
+ long long childmessagelen = 0;
195
+
196
+ int main(int argc,char **argv)
197
+ {
198
+ long long r;
199
+ long long i;
200
+ long long k;
201
+
202
+ signal(SIGPIPE,SIG_IGN);
203
+ signal(SIGCHLD,SIG_IGN);
204
+
205
+ if (!argv[0]) die_usage(0);
206
+ for (;;) {
207
+ char *x;
208
+ if (!argv[1]) break;
209
+ if (argv[1][0] != '-') break;
210
+ x = *++argv;
211
+ if (x[0] == '-' && x[1] == 0) break;
212
+ if (x[0] == '-' && x[1] == '-' && x[2] == 0) break;
213
+ while (*++x) {
214
+ if (*x == 'q') { flagverbose = 0; continue; }
215
+ if (*x == 'Q') { flagverbose = 1; continue; }
216
+ if (*x == 'v') { if (flagverbose == 2) flagverbose = 3; else flagverbose = 2; continue; }
217
+ if (*x == 'c') {
218
+ if (x[1]) { strmaxactiveclients = x + 1; break; }
219
+ if (argv[1]) { strmaxactiveclients = *++argv; break; }
220
+ }
221
+ die_usage(0);
222
+ }
223
+ }
224
+ if (!maxparse(&maxactiveclients,strmaxactiveclients)) die_usage("concurrency must be between 1 and 65535");
225
+ if (!nameparse(servername,*++argv)) die_usage("sname must be at most 255 bytes, at most 63 bytes between dots");
226
+ keydir = *++argv; if (!keydir) die_usage("missing keydir");
227
+ if (!ipparse(serverip,*++argv)) die_usage("ip must be an IPv4 address");
228
+ if (!portparse(serverport,*++argv)) die_usage("port must be an integer between 0 and 65535");
229
+ if (!hexparse(serverextension,16,*++argv)) die_usage("ext must be exactly 32 hex characters");
230
+ if (!*++argv) die_usage("missing prog");
231
+
232
+ for (;;) {
233
+ r = open_read("/dev/null");
234
+ if (r == -1) die_fatal("unable to open /dev/null",0,0);
235
+ if (r > 9) { close(r); break; }
236
+ }
237
+
238
+ activeclients = malloc(maxactiveclients * sizeof(struct activeclient));
239
+ if (!activeclients) die_fatal("unable to create activeclients array",0,0);
240
+ randombytes((void *) activeclients,maxactiveclients * sizeof(struct activeclient));
241
+ for (i = 0;i < maxactiveclients;++i) {
242
+ activeclients[i].child = -1;
243
+ activeclients[i].tochild = -1;
244
+ activeclients[i].fromchild = -1;
245
+ activeclients[i].receivednonce = 0;
246
+ activeclients[i].sentnonce = randommod(281474976710656LL);
247
+ }
248
+
249
+ p = malloc((1 + maxactiveclients) * sizeof(struct pollfd));
250
+ if (!p) die_fatal("unable to create poll array",0,0);
251
+
252
+ fdwd = open_cwd();
253
+ if (fdwd == -1) die_fatal("unable to open current directory",0,0);
254
+
255
+ if (chdir(keydir) == -1) die_fatal("unable to chdir to",keydir,0);
256
+ if (load(".expertsonly/secretkey",serverlongtermsk,sizeof serverlongtermsk) == -1) die_fatal("unable to read secret key from",keydir,0);
257
+
258
+ udpfd = socket_udp();
259
+ if (udpfd == -1) die_fatal("unable to create socket",0,0);
260
+ if (socket_bind(udpfd,serverip,serverport) == -1) die_fatal("unable to bind socket",0,0);
261
+
262
+ randombytes(minutekey,sizeof minutekey);
263
+ randombytes(lastminutekey,sizeof lastminutekey);
264
+ nextminute = nanoseconds() + 60000000000ULL;
265
+
266
+ for (;;) {
267
+ long long timeout = nextminute - nanoseconds();
268
+ if (timeout <= 0) {
269
+ timeout = 60000000000ULL;
270
+ byte_copy(lastminutekey,sizeof lastminutekey,minutekey);
271
+ randombytes(minutekey,sizeof minutekey);
272
+ nextminute = nanoseconds() + timeout;
273
+ randombytes(packet,sizeof packet);
274
+ randombytes(packetip,sizeof packetip);
275
+ randombytes(packetport,sizeof packetport);
276
+ randombytes(clientshorttermpk,sizeof clientshorttermpk);
277
+ randombytes(clientshortserverlong,sizeof clientshortserverlong);
278
+ randombytes(nonce,sizeof nonce);
279
+ randombytes(text,sizeof text);
280
+ randombytes(childbuf,sizeof childbuf);
281
+ randombytes(childmessage,sizeof childmessage);
282
+ randombytes(servershorttermpk,sizeof servershorttermpk);
283
+ randombytes(servershorttermsk,sizeof servershorttermsk);
284
+ }
285
+
286
+ for (i = 0;i < numactiveclients;++i) {
287
+ p[i].fd = activeclients[i].fromchild;
288
+ p[i].events = POLLIN;
289
+ }
290
+ p[numactiveclients].fd = udpfd;
291
+ p[numactiveclients].events = POLLIN;
292
+ if (poll(p,1 + numactiveclients,timeout / 1000000 + 1) < 0) continue;
293
+
294
+ do { /* try receiving a packet: */
295
+ if (!p[numactiveclients].revents) break;
296
+ r = socket_recv(udpfd,packet,sizeof packet,packetip,packetport);
297
+ if (r < 80) break;
298
+ if (r > 1184) break;
299
+ if (r & 15) break;
300
+ if (!(byte_isequal(packet,7,"QvnQ5Xl") & byte_isequal(packet + 8,16,serverextension))) break;
301
+ byte_copy(clientextension,16,packet + 24);
302
+ if (packet[7] == 'H') { /* Hello packet: */
303
+ if (r != 224) break;
304
+ byte_copy(clientshorttermpk,32,packet + 40);
305
+ crypto_box_beforenm(clientshortserverlong,clientshorttermpk,serverlongtermsk);
306
+ byte_copy(nonce,16,"CurveCP-client-H");
307
+ byte_copy(nonce + 16,8,packet + 136);
308
+ byte_zero(text,16);
309
+ byte_copy(text + 16,80,packet + 144);
310
+ if (crypto_box_open_afternm(text,text,96,nonce,clientshortserverlong)) break;
311
+
312
+ /* send Cookie packet: */
313
+
314
+ crypto_box_keypair(servershorttermpk,servershorttermsk);
315
+ byte_zero(text + 64,32);
316
+ byte_copy(text + 96,32,clientshorttermpk);
317
+ byte_copy(text + 128,32,servershorttermsk);
318
+ byte_copy(nonce,8,"minute-k");
319
+ if (safenonce(nonce + 8,1) == -1) die_fatal("nonce-generation disaster",0,0);
320
+ crypto_secretbox(text + 64,text + 64,96,nonce,minutekey);
321
+ byte_copy(text + 64,16,nonce + 8);
322
+
323
+ byte_zero(text,32);
324
+ byte_copy(text + 32,32,servershorttermpk);
325
+ byte_copy(nonce,8,"CurveCPK"); /* reusing the other 16 bytes */
326
+ crypto_box_afternm(text,text,160,nonce,clientshortserverlong);
327
+
328
+ byte_copy(packet,8,"RL3aNMXK");
329
+ byte_copy(packet + 8,16,clientextension);
330
+ byte_copy(packet + 24,16,serverextension);
331
+ byte_copy(packet + 40,16,nonce + 8);
332
+ byte_copy(packet + 56,144,text + 16);
333
+
334
+ socket_send(udpfd,packet,200,packetip,packetport);
335
+ }
336
+ if (packet[7] == 'I') { /* Initiate packet: */
337
+ if (r < 560) break;
338
+ for (i = 0;i < numactiveclients;++i) /* XXX use better data structure */
339
+ if (byte_isequal(activeclients[i].clientshorttermpk,32,packet + 40))
340
+ break;
341
+ if (i < numactiveclients) {
342
+ packetnonce = uint64_unpack(packet + 168);
343
+ if (packetnonce <= activeclients[i].receivednonce) break;
344
+ byte_copy(nonce,16,"CurveCP-client-I");
345
+ byte_copy(nonce + 16,8,packet + 168);
346
+ byte_zero(text,16);
347
+ byte_copy(text + 16,r - 176,packet + 176);
348
+ if (crypto_box_open_afternm(text,text,r - 160,nonce,activeclients[i].clientshortservershort)) break;
349
+
350
+ /* XXX: update clientip, clientextension; but not if client has spoken recently */
351
+ activeclients[i].receivednonce = packetnonce;
352
+ text[383] = (r - 544) >> 4;
353
+ if (writeall(activeclients[i].tochild,text + 383,r - 543) == -1)
354
+ ; /* child is gone; will see eof later */
355
+ break;
356
+ }
357
+ if (i == maxactiveclients) break;
358
+
359
+ byte_copy(nonce,8,"minute-k");
360
+ byte_copy(nonce + 8,16,packet + 72);
361
+ byte_zero(text,16);
362
+ byte_copy(text + 16,80,packet + 88);
363
+ if (crypto_secretbox_open(text,text,96,nonce,minutekey)) {
364
+ byte_zero(text,16);
365
+ byte_copy(text + 16,80,packet + 88);
366
+ if (crypto_secretbox_open(text,text,96,nonce,lastminutekey)) break;
367
+ }
368
+ if (!byte_isequal(packet + 40,32,text + 32)) break;
369
+ byte_copy(servershorttermsk,32,text + 64);
370
+ byte_copy(clientshorttermpk,32,packet + 40);
371
+ crypto_box_beforenm(clientshortservershort,clientshorttermpk,servershorttermsk);
372
+
373
+ byte_copy(nonce,16,"CurveCP-client-I");
374
+ byte_copy(nonce + 16,8,packet + 168);
375
+ byte_zero(text,16);
376
+ byte_copy(text + 16,r - 176,packet + 176);
377
+ if (crypto_box_open_afternm(text,text,r - 160,nonce,clientshortservershort)) break;
378
+
379
+ if (!byte_isequal(text + 128,256,servername)) break;
380
+
381
+ /* XXX skip if client authentication is not desired: */
382
+ byte_copy(clientlongtermpk,32,text + 32);
383
+ /* XXX impose policy limitations on clients: known, maxconn */
384
+ /* XXX for known clients, retrieve shared secret from cache: */
385
+ crypto_box_beforenm(clientlongserverlong,clientlongtermpk,serverlongtermsk);
386
+ byte_copy(nonce,8,"CurveCPV");
387
+ byte_copy(nonce + 8,16,text + 64);
388
+ byte_zero(text + 64,16);
389
+ if (crypto_box_open_afternm(text + 64,text + 64,64,nonce,clientlongserverlong)) break;
390
+ if (!byte_isequal(text + 96,32,clientshorttermpk)) break;
391
+
392
+ if (open_pipe(pi0) == -1) break; /* XXX: error message */
393
+ if (open_pipe(pi1) == -1) { close(pi0[0]); close(pi0[1]); break; } /* XXX: error message */
394
+
395
+ activeclients[i].child = fork();
396
+ if (activeclients[i].child == -1) {
397
+ close(pi0[0]); close(pi0[1]);
398
+ close(pi1[0]); close(pi1[1]);
399
+ break; /* XXX: error message */
400
+ }
401
+ if (activeclients[i].child == 0) {
402
+ if (fchdir(fdwd) == -1) die_fatal("unable to chdir to original directory",0,0);
403
+ close(8);
404
+ if (dup(pi0[0]) != 8) die_fatal("unable to dup",0,0);
405
+ close(9);
406
+ if (dup(pi1[1]) != 9) die_fatal("unable to dup",0,0);
407
+ /* XXX: set up environment variables */
408
+ signal(SIGPIPE,SIG_DFL);
409
+ signal(SIGCHLD,SIG_DFL);
410
+ execvp(*argv,argv);
411
+ die_fatal("unable to run",*argv,0);
412
+ }
413
+
414
+ activeclients[i].tochild = pi0[1]; close(pi0[0]);
415
+ activeclients[i].fromchild = pi1[0]; close(pi1[1]);
416
+ activeclients[i].messagelen = 0;
417
+ byte_copy(activeclients[i].clientshorttermpk,32,clientshorttermpk);
418
+ byte_copy(activeclients[i].clientshortservershort,32,clientshortservershort);
419
+ activeclients[i].receivednonce = uint64_unpack(packet + 168);
420
+ byte_copy(activeclients[i].clientextension,16,clientextension);
421
+ byte_copy(activeclients[i].clientip,4,packetip);
422
+ byte_copy(activeclients[i].clientport,2,packetport);
423
+ ++numactiveclients;
424
+
425
+ text[383] = (r - 544) >> 4;
426
+ if (writeall(activeclients[i].tochild,text + 383,r - 543) == -1)
427
+ ; /* child is gone; will see eof later */
428
+ }
429
+ if (packet[7] == 'M') { /* Message packet: */
430
+ if (r < 112) break;
431
+ for (i = 0;i < numactiveclients;++i) /* XXX use better data structure */
432
+ if (byte_isequal(activeclients[i].clientshorttermpk,32,packet + 40))
433
+ break;
434
+ if (i < numactiveclients) {
435
+ packetnonce = uint64_unpack(packet + 72);
436
+ if (packetnonce <= activeclients[i].receivednonce) break;
437
+ byte_copy(nonce,16,"CurveCP-client-M");
438
+ byte_copy(nonce + 16,8,packet + 72);
439
+ byte_zero(text,16);
440
+ byte_copy(text + 16,r - 80,packet + 80);
441
+ if (crypto_box_open_afternm(text,text,r - 64,nonce,activeclients[i].clientshortservershort)) break;
442
+
443
+ /* XXX: update clientip, clientextension */
444
+ activeclients[i].receivednonce = packetnonce;
445
+ text[31] = (r - 96) >> 4;
446
+ if (writeall(activeclients[i].tochild,text + 31,r - 95) == -1)
447
+ ; /* child is gone; will see eof later */
448
+ break;
449
+ }
450
+ }
451
+ } while (0);
452
+
453
+ for (i = numactiveclients - 1;i >= 0;--i) {
454
+ do {
455
+ if (!p[i].revents) break;
456
+ r = read(activeclients[i].fromchild,childbuf,sizeof childbuf);
457
+ if (r == -1) if (errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN) break;
458
+ if (r <= 0) goto endconnection;
459
+ childbuflen = r;
460
+ for (k = 0;k < childbuflen;++k) {
461
+ r = activeclients[i].messagelen;
462
+ if (r < 0) goto endconnection;
463
+ if (r >= MESSAGELEN) goto endconnection;
464
+ activeclients[i].message[r] = childbuf[k];
465
+ if (r == 0) if (childbuf[k] & 128) goto endconnection;
466
+ activeclients[i].messagelen = r + 1;
467
+ if (r == 16 * (unsigned long long) activeclients[i].message[0]) {
468
+ if (r < 16) goto endconnection;
469
+ if (r > 1088) goto endconnection;
470
+ byte_copy(nonce,16,"CurveCP-server-M");
471
+ uint64_pack(nonce + 16,++activeclients[i].sentnonce);
472
+ byte_zero(text,32);
473
+ byte_copy(text + 32,r,activeclients[i].message + 1);
474
+ crypto_box_afternm(text,text,r + 32,nonce,activeclients[i].clientshortservershort);
475
+ byte_copy(packet,8,"RL3aNMXM");
476
+ byte_copy(packet + 8,16,clientextension);
477
+ byte_copy(packet + 24,16,serverextension);
478
+ byte_copy(packet + 40,8,nonce + 16);
479
+ byte_copy(packet + 48,r + 16,text + 16);
480
+ socket_send(udpfd,packet,r + 64,activeclients[i].clientip,activeclients[i].clientport);
481
+ activeclients[i].messagelen = 0;
482
+ }
483
+ }
484
+ break;
485
+
486
+ endconnection:
487
+
488
+ /* XXX: cache cookie if it's recent */
489
+ close(activeclients[i].fromchild); activeclients[i].fromchild = -1;
490
+ close(activeclients[i].tochild); activeclients[i].tochild = -1;
491
+ --numactiveclients;
492
+ activeclients[i] = activeclients[numactiveclients];
493
+ randombytes((void *) &activeclients[numactiveclients],sizeof(struct activeclient));
494
+ } while (0);
495
+ }
496
+ }
497
+ }
@@ -0,0 +1,42 @@
1
+ #include <unistd.h>
2
+ #include "writeall.h"
3
+ #include "die.h"
4
+
5
+ void die_9(int e
6
+ ,const char *s0
7
+ ,const char *s1
8
+ ,const char *s2
9
+ ,const char *s3
10
+ ,const char *s4
11
+ ,const char *s5
12
+ ,const char *s6
13
+ ,const char *s7
14
+ ,const char *s8
15
+ )
16
+ {
17
+ const char *s[9];
18
+ const char *x;
19
+ char buf[1024];
20
+ int buflen = 0;
21
+ int i;
22
+
23
+ s[0] = s0;
24
+ s[1] = s1;
25
+ s[2] = s2;
26
+ s[3] = s3;
27
+ s[4] = s4;
28
+ s[5] = s5;
29
+ s[6] = s6;
30
+ s[7] = s7;
31
+ s[8] = s8;
32
+ for (i = 0;i < 9;++i) {
33
+ x = s[i];
34
+ if (!x) continue;
35
+ while (*x) {
36
+ if (buflen == sizeof buf) { writeall(2,buf,buflen); buflen = 0; }
37
+ buf[buflen++] = *x++;
38
+ }
39
+ }
40
+ writeall(2,buf,buflen);
41
+ _exit(e);
42
+ }
@@ -0,0 +1,16 @@
1
+ #ifndef DIE_H
2
+ #define DIE_H
3
+
4
+ extern void die_9(int,const char *,const char *,const char *,const char *,const char *,const char *,const char *,const char *,const char *);
5
+
6
+ #define die_8(x,a,b,c,d,e,f,g,h) die_9(x,a,b,c,d,e,f,g,h,0)
7
+ #define die_7(x,a,b,c,d,e,f,g) die_8(x,a,b,c,d,e,f,g,0)
8
+ #define die_6(x,a,b,c,d,e,f) die_7(x,a,b,c,d,e,f,0)
9
+ #define die_5(x,a,b,c,d,e) die_6(x,a,b,c,d,e,0)
10
+ #define die_4(x,a,b,c,d) die_5(x,a,b,c,d,0)
11
+ #define die_3(x,a,b,c) die_4(x,a,b,c,0)
12
+ #define die_2(x,a,b) die_3(x,a,b,0)
13
+ #define die_1(x,a) die_2(x,a,0)
14
+ #define die_0(x) die_1(x,0)
15
+
16
+ #endif
@@ -0,0 +1,106 @@
1
+ #include "e.h"
2
+
3
+ #define X(e,s) if (i == e) return s;
4
+
5
+ const char *e_str(int i)
6
+ {
7
+ X(0,"no error");
8
+ X(EINTR,"interrupted system call")
9
+ X(ENOMEM,"out of memory")
10
+ X(ENOENT,"file does not exist")
11
+ X(ETXTBSY,"text busy")
12
+ X(EIO,"input/output error")
13
+ X(EEXIST,"file already exists")
14
+ X(ETIMEDOUT,"timed out")
15
+ X(EINPROGRESS,"operation in progress")
16
+ X(EAGAIN,"temporary failure")
17
+ X(EWOULDBLOCK,"input/output would block")
18
+ X(EPIPE,"broken pipe")
19
+ X(EPERM,"permission denied")
20
+ X(EACCES,"access denied")
21
+ X(ENODEV,"device not configured")
22
+ X(EPROTO,"protocol error")
23
+ X(EISDIR,"is a directory")
24
+ X(ESRCH,"no such process")
25
+ X(E2BIG,"argument list too long")
26
+ X(ENOEXEC,"exec format error")
27
+ X(EBADF,"file descriptor not open")
28
+ X(ECHILD,"no child processes")
29
+ X(EDEADLK,"operation would cause deadlock")
30
+ X(EFAULT,"bad address")
31
+ X(ENOTBLK,"not a block device")
32
+ X(EBUSY,"device busy")
33
+ X(EXDEV,"cross-device link")
34
+ X(ENODEV,"device does not support operation")
35
+ X(ENOTDIR,"not a directory")
36
+ X(EINVAL,"invalid argument")
37
+ X(ENFILE,"system cannot open more files")
38
+ X(EMFILE,"process cannot open more files")
39
+ X(ENOTTY,"not a tty")
40
+ X(EFBIG,"file too big")
41
+ X(ENOSPC,"out of disk space")
42
+ X(ESPIPE,"unseekable descriptor")
43
+ X(EROFS,"read-only file system")
44
+ X(EMLINK,"too many links")
45
+ X(EDOM,"input out of range")
46
+ X(ERANGE,"output out of range")
47
+ X(EALREADY,"operation already in progress")
48
+ X(ENOTSOCK,"not a socket")
49
+ X(EDESTADDRREQ,"destination address required")
50
+ X(EMSGSIZE,"message too long")
51
+ X(EPROTOTYPE,"incorrect protocol type")
52
+ X(ENOPROTOOPT,"protocol not available")
53
+ X(EPROTONOSUPPORT,"protocol not supported")
54
+ X(ESOCKTNOSUPPORT,"socket type not supported")
55
+ X(EOPNOTSUPP,"operation not supported")
56
+ X(EPFNOSUPPORT,"protocol family not supported")
57
+ X(EAFNOSUPPORT,"address family not supported")
58
+ X(EADDRINUSE,"address already used")
59
+ X(EADDRNOTAVAIL,"address not available")
60
+ X(ENETDOWN,"network down")
61
+ X(ENETUNREACH,"network unreachable")
62
+ X(ENETRESET,"network reset")
63
+ X(ECONNABORTED,"connection aborted")
64
+ X(ECONNRESET,"connection reset")
65
+ X(ENOBUFS,"out of buffer space")
66
+ X(EISCONN,"already connected")
67
+ X(ENOTCONN,"not connected")
68
+ X(ESHUTDOWN,"socket shut down")
69
+ X(ETOOMANYREFS,"too many references")
70
+ X(ECONNREFUSED,"connection refused")
71
+ X(ELOOP,"symbolic link loop")
72
+ X(ENAMETOOLONG,"file name too long")
73
+ X(EHOSTDOWN,"host down")
74
+ X(EHOSTUNREACH,"host unreachable")
75
+ X(ENOTEMPTY,"directory not empty")
76
+ X(EPROCLIM,"too many processes")
77
+ X(EUSERS,"too many users")
78
+ X(EDQUOT,"disk quota exceeded")
79
+ X(ESTALE,"stale NFS file handle")
80
+ X(EREMOTE,"too many levels of remote in path")
81
+ X(EBADRPC,"RPC structure is bad")
82
+ X(ERPCMISMATCH,"RPC version mismatch")
83
+ X(EPROGUNAVAIL,"RPC program unavailable")
84
+ X(EPROGMISMATCH,"program version mismatch")
85
+ X(EPROCUNAVAIL,"bad procedure for program")
86
+ X(ENOLCK,"no locks available")
87
+ X(ENOSYS,"system call not available")
88
+ X(EFTYPE,"bad file type")
89
+ X(EAUTH,"authentication error")
90
+ X(ENEEDAUTH,"not authenticated")
91
+ X(ENOSTR,"not a stream device")
92
+ X(ETIME,"timer expired")
93
+ X(ENOSR,"out of stream resources")
94
+ X(ENOMSG,"no message of desired type")
95
+ X(EBADMSG,"bad message type")
96
+ X(EIDRM,"identifier removed")
97
+ X(ENONET,"machine not on network")
98
+ X(EREMOTE,"object not local")
99
+ X(ENOLINK,"link severed")
100
+ X(EADV,"advertise error")
101
+ X(ESRMNT,"srmount error")
102
+ X(ECOMM,"communication error")
103
+ X(EMULTIHOP,"multihop attempted")
104
+ X(EREMCHG,"remote address changed")
105
+ return "unknown error";
106
+ }