rbnacl-libsodium 0.4.5a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (409) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +35 -0
  3. data/.gitmodules +3 -0
  4. data/CHANGES.md +3 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE +21 -0
  7. data/README.md +23 -0
  8. data/Rakefile +1 -0
  9. data/ext/rbnacl/extconf.rb +30 -0
  10. data/lib/rbnacl/libsodium.rb +11 -0
  11. data/lib/rbnacl/libsodium/version.rb +5 -0
  12. data/rbnacl-libsodium.gemspec +25 -0
  13. data/vendor/libsodium/AUTHORS +101 -0
  14. data/vendor/libsodium/ChangeLog +68 -0
  15. data/vendor/libsodium/LICENSE +16 -0
  16. data/vendor/libsodium/Makefile.am +20 -0
  17. data/vendor/libsodium/README +1 -0
  18. data/vendor/libsodium/README.markdown +246 -0
  19. data/vendor/libsodium/THANKS +17 -0
  20. data/vendor/libsodium/autogen.sh +16 -0
  21. data/vendor/libsodium/configure.ac +405 -0
  22. data/vendor/libsodium/dist-build/android.sh +48 -0
  23. data/vendor/libsodium/dist-build/iphone.sh +16 -0
  24. data/vendor/libsodium/dist-build/msys.sh +9 -0
  25. data/vendor/libsodium/libsodium.pc.in +11 -0
  26. data/vendor/libsodium/libsodium.sln +38 -0
  27. data/vendor/libsodium/libsodium.vcxproj +508 -0
  28. data/vendor/libsodium/libsodium.vcxproj.filters +569 -0
  29. data/vendor/libsodium/logo.png +0 -0
  30. data/vendor/libsodium/m4/ax_check_compile_flag.m4 +73 -0
  31. data/vendor/libsodium/m4/ax_check_gnu_make.m4 +78 -0
  32. data/vendor/libsodium/m4/ax_check_link_flag.m4 +72 -0
  33. data/vendor/libsodium/m4/ld-output-def.m4 +29 -0
  34. data/vendor/libsodium/m4/pkg.m4 +214 -0
  35. data/vendor/libsodium/msvc-scripts/Makefile.am +4 -0
  36. data/vendor/libsodium/msvc-scripts/process.bat +8 -0
  37. data/vendor/libsodium/msvc-scripts/rep.vbs +12 -0
  38. data/vendor/libsodium/msvc-scripts/sodium.props +25 -0
  39. data/vendor/libsodium/src/Makefile.am +3 -0
  40. data/vendor/libsodium/src/libsodium/Makefile.am +232 -0
  41. data/vendor/libsodium/src/libsodium/crypto_auth/crypto_auth.c +34 -0
  42. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256_api.c +16 -0
  43. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/checksum +1 -0
  44. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/api.h +10 -0
  45. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/hmac_hmacsha256.c +83 -0
  46. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/ref/verify_hmacsha256.c +9 -0
  47. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/auth_hmacsha512256_api.c +16 -0
  48. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/checksum +1 -0
  49. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/api.h +10 -0
  50. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/hmac_hmacsha512256.c +86 -0
  51. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/ref/verify_hmacsha512256.c +9 -0
  52. data/vendor/libsodium/src/libsodium/crypto_auth/try.c +119 -0
  53. data/vendor/libsodium/src/libsodium/crypto_box/crypto_box.c +95 -0
  54. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/box_curve25519xsalsa20poly1305_api.c +41 -0
  55. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/checksum +1 -0
  56. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c +22 -0
  57. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/api.h +19 -0
  58. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c +19 -0
  59. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c +27 -0
  60. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c +12 -0
  61. data/vendor/libsodium/src/libsodium/crypto_box/try.c +195 -0
  62. data/vendor/libsodium/src/libsodium/crypto_core/hsalsa20/checksum +1 -0
  63. data/vendor/libsodium/src/libsodium/crypto_core/hsalsa20/core_hsalsa20_api.c +26 -0
  64. data/vendor/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/api.h +11 -0
  65. data/vendor/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20.c +108 -0
  66. data/vendor/libsodium/src/libsodium/crypto_core/salsa20/checksum +1 -0
  67. data/vendor/libsodium/src/libsodium/crypto_core/salsa20/core_salsa20_api.c +26 -0
  68. data/vendor/libsodium/src/libsodium/crypto_core/salsa20/ref/api.h +11 -0
  69. data/vendor/libsodium/src/libsodium/crypto_core/salsa20/ref/core_salsa20.c +134 -0
  70. data/vendor/libsodium/src/libsodium/crypto_core/salsa2012/checksum +1 -0
  71. data/vendor/libsodium/src/libsodium/crypto_core/salsa2012/core_salsa2012_api.c +26 -0
  72. data/vendor/libsodium/src/libsodium/crypto_core/salsa2012/ref/api.h +11 -0
  73. data/vendor/libsodium/src/libsodium/crypto_core/salsa2012/ref/core_salsa2012.c +134 -0
  74. data/vendor/libsodium/src/libsodium/crypto_core/salsa208/checksum +1 -0
  75. data/vendor/libsodium/src/libsodium/crypto_core/salsa208/core_salsa208_api.c +26 -0
  76. data/vendor/libsodium/src/libsodium/crypto_core/salsa208/ref/api.h +11 -0
  77. data/vendor/libsodium/src/libsodium/crypto_core/salsa208/ref/core_salsa208.c +134 -0
  78. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/generichash_blake2_api.c +31 -0
  79. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/api.h +4 -0
  80. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2-impl.h +132 -0
  81. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2.h +169 -0
  82. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c +364 -0
  83. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2s-ref.c +355 -0
  84. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/generichash_blake2b.c +61 -0
  85. data/vendor/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c +84 -0
  86. data/vendor/libsodium/src/libsodium/crypto_hash/crypto_hash.c +9 -0
  87. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/checksum +1 -0
  88. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/hash_sha256_api.c +11 -0
  89. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/ref/api.h +8 -0
  90. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/ref/hash_sha256.c +69 -0
  91. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/checksum +1 -0
  92. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/hash_sha512_api.c +11 -0
  93. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/ref/api.h +8 -0
  94. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/ref/hash_sha512.c +71 -0
  95. data/vendor/libsodium/src/libsodium/crypto_hash/try.c +76 -0
  96. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha256/checksum +1 -0
  97. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha256/hashblocks_sha256_api.c +16 -0
  98. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/api.h +9 -0
  99. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha256/ref/blocks_sha256.c +212 -0
  100. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha512/checksum +1 -0
  101. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha512/hashblocks_sha512_api.c +16 -0
  102. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/api.h +9 -0
  103. data/vendor/libsodium/src/libsodium/crypto_hashblocks/sha512/ref/blocks_sha512.c +239 -0
  104. data/vendor/libsodium/src/libsodium/crypto_hashblocks/try.c +78 -0
  105. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/crypto_onetimeauth.c +34 -0
  106. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/api.h +8 -0
  107. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/auth_poly1305_53.c +1661 -0
  108. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/53/verify_poly1305_53.c +10 -0
  109. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/api.h +8 -0
  110. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/auth_poly1305_donna.c +151 -0
  111. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/portable-jane.h +772 -0
  112. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/verify_poly1305_donna.c +10 -0
  113. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c +36 -0
  114. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_api.c +16 -0
  115. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305_try.c +152 -0
  116. data/vendor/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c +34 -0
  117. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/checksum +1 -0
  118. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/api.h +9 -0
  119. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c +13 -0
  120. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/smult_curve25519_donna_c64.c +426 -0
  121. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/api.h +8 -0
  122. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/base_curve25519_ref.c +20 -0
  123. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref/smult_curve25519_ref.c +268 -0
  124. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519_api.c +14 -0
  125. data/vendor/libsodium/src/libsodium/crypto_scalarmult/try.c +125 -0
  126. data/vendor/libsodium/src/libsodium/crypto_secretbox/crypto_secretbox.c +48 -0
  127. data/vendor/libsodium/src/libsodium/crypto_secretbox/try.c +129 -0
  128. data/vendor/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/checksum +1 -0
  129. data/vendor/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h +12 -0
  130. data/vendor/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c +35 -0
  131. data/vendor/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c +26 -0
  132. data/vendor/libsodium/src/libsodium/crypto_shorthash/crypto_shorthash.c +27 -0
  133. data/vendor/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/api.h +8 -0
  134. data/vendor/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c +91 -0
  135. data/vendor/libsodium/src/libsodium/crypto_shorthash/siphash24/shorthash_siphash24_api.c +11 -0
  136. data/vendor/libsodium/src/libsodium/crypto_sign/crypto_sign.c +61 -0
  137. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/description +1 -0
  138. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/api.h +14 -0
  139. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base.h +1344 -0
  140. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/base2.h +40 -0
  141. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d.h +1 -0
  142. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/d2.h +1 -0
  143. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe.h +56 -0
  144. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_0.c +19 -0
  145. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_1.c +19 -0
  146. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_add.c +57 -0
  147. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_cmov.c +63 -0
  148. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_copy.c +29 -0
  149. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_frombytes.c +73 -0
  150. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_invert.c +14 -0
  151. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnegative.c +16 -0
  152. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_isnonzero.c +19 -0
  153. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_mul.c +253 -0
  154. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_neg.c +45 -0
  155. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_pow22523.c +13 -0
  156. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq.c +149 -0
  157. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sq2.c +160 -0
  158. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_sub.c +57 -0
  159. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/fe_tobytes.c +119 -0
  160. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge.h +95 -0
  161. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.c +11 -0
  162. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_add.h +97 -0
  163. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_double_scalarmult.c +96 -0
  164. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_frombytes.c +50 -0
  165. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.c +11 -0
  166. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_madd.h +88 -0
  167. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.c +11 -0
  168. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_msub.h +88 -0
  169. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p2.c +12 -0
  170. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p1p1_to_p3.c +13 -0
  171. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_0.c +8 -0
  172. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.c +11 -0
  173. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p2_dbl.h +73 -0
  174. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_0.c +9 -0
  175. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_dbl.c +12 -0
  176. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_cached.c +17 -0
  177. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_to_p2.c +12 -0
  178. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_p3_tobytes.c +14 -0
  179. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_precomp_0.c +8 -0
  180. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_scalarmult_base.c +105 -0
  181. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.c +11 -0
  182. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_sub.h +97 -0
  183. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_tobytes.c +14 -0
  184. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c +31 -0
  185. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c +40 -0
  186. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow22523.h +160 -0
  187. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/pow225521.h +160 -0
  188. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc.h +15 -0
  189. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_muladd.c +368 -0
  190. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sc_reduce.c +275 -0
  191. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c +38 -0
  192. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sqrtm1.h +1 -0
  193. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/sign_ed25519_api.c +26 -0
  194. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/api.h +13 -0
  195. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519.h +54 -0
  196. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c +348 -0
  197. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519.h +34 -0
  198. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c +230 -0
  199. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519.h +51 -0
  200. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c +146 -0
  201. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c +102 -0
  202. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c +21 -0
  203. data/vendor/libsodium/src/libsodium/crypto_sign/try.c +87 -0
  204. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/checksum +1 -0
  205. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/afternm_aes128ctr.c +159 -0
  206. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/api.h +14 -0
  207. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c +59 -0
  208. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common.h +788 -0
  209. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/common_aes128ctr.c +64 -0
  210. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts.h +28 -0
  211. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/consts_aes128ctr.c +14 -0
  212. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128.h +47 -0
  213. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/int128_aes128ctr.c +131 -0
  214. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/stream_aes128ctr.c +28 -0
  215. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/types.h +10 -0
  216. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c +181 -0
  217. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/stream_aes128ctr_api.c +21 -0
  218. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table-be.h +274 -0
  219. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table-le.h +274 -0
  220. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes-table.h +56 -0
  221. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256-ctr.c +238 -0
  222. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/aes256.h +171 -0
  223. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/api.h +14 -0
  224. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/hongjun/ecrypt-sync.h +27 -0
  225. data/vendor/libsodium/src/libsodium/crypto_stream/aes256estream/stream_aes256estream_api.c +21 -0
  226. data/vendor/libsodium/src/libsodium/crypto_stream/crypto_stream.c +36 -0
  227. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/api.h +1 -0
  228. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +950 -0
  229. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/checksum +1 -0
  230. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/ref/api.h +8 -0
  231. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/ref/stream_salsa20_ref.c +55 -0
  232. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/ref/xor_salsa20_ref.c +58 -0
  233. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/stream_salsa20_api.c +16 -0
  234. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/checksum +1 -0
  235. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/ref/api.h +11 -0
  236. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012.c +51 -0
  237. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/ref/xor_salsa2012.c +54 -0
  238. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/stream_salsa2012_api.c +16 -0
  239. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/checksum +1 -0
  240. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/ref/api.h +10 -0
  241. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208.c +51 -0
  242. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/ref/xor_salsa208.c +54 -0
  243. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/stream_salsa208_api.c +16 -0
  244. data/vendor/libsodium/src/libsodium/crypto_stream/try.c +122 -0
  245. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/checksum +1 -0
  246. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/api.h +11 -0
  247. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/stream_xsalsa20.c +24 -0
  248. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c +25 -0
  249. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/stream_xsalsa20_api.c +16 -0
  250. data/vendor/libsodium/src/libsodium/crypto_verify/16/checksum +1 -0
  251. data/vendor/libsodium/src/libsodium/crypto_verify/16/ref/api.h +2 -0
  252. data/vendor/libsodium/src/libsodium/crypto_verify/16/ref/verify_16.c +24 -0
  253. data/vendor/libsodium/src/libsodium/crypto_verify/16/verify_16_api.c +6 -0
  254. data/vendor/libsodium/src/libsodium/crypto_verify/32/checksum +1 -0
  255. data/vendor/libsodium/src/libsodium/crypto_verify/32/ref/api.h +2 -0
  256. data/vendor/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c +40 -0
  257. data/vendor/libsodium/src/libsodium/crypto_verify/32/verify_32_api.c +6 -0
  258. data/vendor/libsodium/src/libsodium/crypto_verify/try.c +76 -0
  259. data/vendor/libsodium/src/libsodium/include/Makefile.am +63 -0
  260. data/vendor/libsodium/src/libsodium/include/sodium.h +48 -0
  261. data/vendor/libsodium/src/libsodium/include/sodium/core.h +18 -0
  262. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth.h +36 -0
  263. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h +36 -0
  264. data/vendor/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h +36 -0
  265. data/vendor/libsodium/src/libsodium/include/sodium/crypto_box.h +83 -0
  266. data/vendor/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h +72 -0
  267. data/vendor/libsodium/src/libsodium/include/sodium/crypto_core_hsalsa20.h +40 -0
  268. data/vendor/libsodium/src/libsodium/include/sodium/crypto_core_salsa20.h +40 -0
  269. data/vendor/libsodium/src/libsodium/include/sodium/crypto_core_salsa2012.h +40 -0
  270. data/vendor/libsodium/src/libsodium/include/sodium/crypto_core_salsa208.h +40 -0
  271. data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash.h +70 -0
  272. data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h +87 -0
  273. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash.h +23 -0
  274. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h +29 -0
  275. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h +29 -0
  276. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha256.h +32 -0
  277. data/vendor/libsodium/src/libsodium/include/sodium/crypto_hashblocks_sha512.h +32 -0
  278. data/vendor/libsodium/src/libsodium/include/sodium/crypto_int32.h +8 -0
  279. data/vendor/libsodium/src/libsodium/include/sodium/crypto_int64.h +8 -0
  280. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth.h +37 -0
  281. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h +65 -0
  282. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_53.h +34 -0
  283. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305_donna.h +34 -0
  284. data/vendor/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h +36 -0
  285. data/vendor/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h.in +44 -0
  286. data/vendor/libsodium/src/libsodium/include/sodium/crypto_secretbox.h +47 -0
  287. data/vendor/libsodium/src/libsodium/include/sodium/crypto_secretbox_xsalsa20poly1305.h +44 -0
  288. data/vendor/libsodium/src/libsodium/include/sodium/crypto_shorthash.h +33 -0
  289. data/vendor/libsodium/src/libsodium/include/sodium/crypto_shorthash_siphash24.h +29 -0
  290. data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign.h +61 -0
  291. data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign_ed25519.h +52 -0
  292. data/vendor/libsodium/src/libsodium/include/sodium/crypto_sign_edwards25519sha512batch.h +44 -0
  293. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream.h +46 -0
  294. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_aes128ctr.h +60 -0
  295. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_aes256estream.h +61 -0
  296. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa20.h.in +54 -0
  297. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa2012.h +43 -0
  298. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_salsa208.h +43 -0
  299. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_xsalsa20.h +44 -0
  300. data/vendor/libsodium/src/libsodium/include/sodium/crypto_uint16.h +8 -0
  301. data/vendor/libsodium/src/libsodium/include/sodium/crypto_uint32.h +8 -0
  302. data/vendor/libsodium/src/libsodium/include/sodium/crypto_uint64.h +8 -0
  303. data/vendor/libsodium/src/libsodium/include/sodium/crypto_uint8.h +8 -0
  304. data/vendor/libsodium/src/libsodium/include/sodium/crypto_verify_16.h +25 -0
  305. data/vendor/libsodium/src/libsodium/include/sodium/crypto_verify_32.h +25 -0
  306. data/vendor/libsodium/src/libsodium/include/sodium/export.h +32 -0
  307. data/vendor/libsodium/src/libsodium/include/sodium/randombytes.h +53 -0
  308. data/vendor/libsodium/src/libsodium/include/sodium/randombytes_salsa20_random.h +45 -0
  309. data/vendor/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h +45 -0
  310. data/vendor/libsodium/src/libsodium/include/sodium/utils.h +36 -0
  311. data/vendor/libsodium/src/libsodium/include/sodium/version.h.in +29 -0
  312. data/vendor/libsodium/src/libsodium/randombytes/randombytes.c +63 -0
  313. data/vendor/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c +317 -0
  314. data/vendor/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c +212 -0
  315. data/vendor/libsodium/src/libsodium/sodium/compat.c +248 -0
  316. data/vendor/libsodium/src/libsodium/sodium/core.c +21 -0
  317. data/vendor/libsodium/src/libsodium/sodium/utils.c +94 -0
  318. data/vendor/libsodium/src/libsodium/sodium/version.c +20 -0
  319. data/vendor/libsodium/test/Makefile.am +5 -0
  320. data/vendor/libsodium/test/default/Makefile.am +277 -0
  321. data/vendor/libsodium/test/default/auth.c +21 -0
  322. data/vendor/libsodium/test/default/auth.exp +4 -0
  323. data/vendor/libsodium/test/default/auth2.c +36 -0
  324. data/vendor/libsodium/test/default/auth2.exp +4 -0
  325. data/vendor/libsodium/test/default/auth3.c +36 -0
  326. data/vendor/libsodium/test/default/auth3.exp +1 -0
  327. data/vendor/libsodium/test/default/auth5.c +37 -0
  328. data/vendor/libsodium/test/default/auth5.exp +0 -0
  329. data/vendor/libsodium/test/default/box.c +65 -0
  330. data/vendor/libsodium/test/default/box.exp +19 -0
  331. data/vendor/libsodium/test/default/box2.c +66 -0
  332. data/vendor/libsodium/test/default/box2.exp +17 -0
  333. data/vendor/libsodium/test/default/box7.c +37 -0
  334. data/vendor/libsodium/test/default/box7.exp +0 -0
  335. data/vendor/libsodium/test/default/box8.c +44 -0
  336. data/vendor/libsodium/test/default/box8.exp +0 -0
  337. data/vendor/libsodium/test/default/cmptest.h +51 -0
  338. data/vendor/libsodium/test/default/core1.c +32 -0
  339. data/vendor/libsodium/test/default/core1.exp +4 -0
  340. data/vendor/libsodium/test/default/core2.c +35 -0
  341. data/vendor/libsodium/test/default/core2.exp +4 -0
  342. data/vendor/libsodium/test/default/core3.c +42 -0
  343. data/vendor/libsodium/test/default/core3.exp +1 -0
  344. data/vendor/libsodium/test/default/core4.c +35 -0
  345. data/vendor/libsodium/test/default/core4.exp +8 -0
  346. data/vendor/libsodium/test/default/core5.c +34 -0
  347. data/vendor/libsodium/test/default/core5.exp +4 -0
  348. data/vendor/libsodium/test/default/core6.c +49 -0
  349. data/vendor/libsodium/test/default/core6.exp +4 -0
  350. data/vendor/libsodium/test/default/generichash.c +27 -0
  351. data/vendor/libsodium/test/default/generichash.exp +64 -0
  352. data/vendor/libsodium/test/default/generichash2.c +31 -0
  353. data/vendor/libsodium/test/default/generichash2.exp +64 -0
  354. data/vendor/libsodium/test/default/hash.c +16 -0
  355. data/vendor/libsodium/test/default/hash.exp +1 -0
  356. data/vendor/libsodium/test/default/hash2.exp +1 -0
  357. data/vendor/libsodium/test/default/hash3.c +16 -0
  358. data/vendor/libsodium/test/default/hash3.exp +1 -0
  359. data/vendor/libsodium/test/default/onetimeauth.c +44 -0
  360. data/vendor/libsodium/test/default/onetimeauth.exp +2 -0
  361. data/vendor/libsodium/test/default/onetimeauth2.c +42 -0
  362. data/vendor/libsodium/test/default/onetimeauth2.exp +1 -0
  363. data/vendor/libsodium/test/default/onetimeauth7.c +37 -0
  364. data/vendor/libsodium/test/default/onetimeauth7.exp +0 -0
  365. data/vendor/libsodium/test/default/pre.js +33 -0
  366. data/vendor/libsodium/test/default/randombytes.c +16 -0
  367. data/vendor/libsodium/test/default/scalarmult.c +25 -0
  368. data/vendor/libsodium/test/default/scalarmult.exp +4 -0
  369. data/vendor/libsodium/test/default/scalarmult2.c +25 -0
  370. data/vendor/libsodium/test/default/scalarmult2.exp +4 -0
  371. data/vendor/libsodium/test/default/scalarmult5.c +32 -0
  372. data/vendor/libsodium/test/default/scalarmult5.exp +4 -0
  373. data/vendor/libsodium/test/default/scalarmult6.c +32 -0
  374. data/vendor/libsodium/test/default/scalarmult6.exp +4 -0
  375. data/vendor/libsodium/test/default/scalarmult7.c +34 -0
  376. data/vendor/libsodium/test/default/scalarmult7.exp +1 -0
  377. data/vendor/libsodium/test/default/scalarmult8.c +34 -0
  378. data/vendor/libsodium/test/default/scalarmult8.exp +1 -0
  379. data/vendor/libsodium/test/default/secretbox.c +58 -0
  380. data/vendor/libsodium/test/default/secretbox.exp +19 -0
  381. data/vendor/libsodium/test/default/secretbox2.c +59 -0
  382. data/vendor/libsodium/test/default/secretbox2.exp +17 -0
  383. data/vendor/libsodium/test/default/secretbox7.c +33 -0
  384. data/vendor/libsodium/test/default/secretbox7.exp +0 -0
  385. data/vendor/libsodium/test/default/secretbox8.c +40 -0
  386. data/vendor/libsodium/test/default/secretbox8.exp +0 -0
  387. data/vendor/libsodium/test/default/shorthash.c +23 -0
  388. data/vendor/libsodium/test/default/shorthash.exp +64 -0
  389. data/vendor/libsodium/test/default/sodium_core.c +11 -0
  390. data/vendor/libsodium/test/default/sodium_core.exp +1 -0
  391. data/vendor/libsodium/test/default/sodium_utils.c +27 -0
  392. data/vendor/libsodium/test/default/sodium_utils.exp +6 -0
  393. data/vendor/libsodium/test/default/sodium_version.c +13 -0
  394. data/vendor/libsodium/test/default/sodium_version.exp +3 -0
  395. data/vendor/libsodium/test/default/stream.c +30 -0
  396. data/vendor/libsodium/test/default/stream.exp +1 -0
  397. data/vendor/libsodium/test/default/stream2.c +28 -0
  398. data/vendor/libsodium/test/default/stream2.exp +1 -0
  399. data/vendor/libsodium/test/default/stream3.c +30 -0
  400. data/vendor/libsodium/test/default/stream3.exp +4 -0
  401. data/vendor/libsodium/test/default/stream4.c +55 -0
  402. data/vendor/libsodium/test/default/stream4.exp +17 -0
  403. data/vendor/libsodium/test/default/stream5.c +29 -0
  404. data/vendor/libsodium/test/default/stream5.exp +1 -0
  405. data/vendor/libsodium/test/default/stream6.c +54 -0
  406. data/vendor/libsodium/test/default/stream6.exp +17 -0
  407. data/vendor/libsodium/test/default/wintest.bat +56 -0
  408. data/vendor/libsodium/test/quirks/windows/windows-quirks.h +18 -0
  409. metadata +500 -0
@@ -0,0 +1,45 @@
1
+ #include "fe.h"
2
+
3
+ /*
4
+ h = -f
5
+
6
+ Preconditions:
7
+ |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
8
+
9
+ Postconditions:
10
+ |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
11
+ */
12
+
13
+ void fe_neg(fe h,const fe f)
14
+ {
15
+ crypto_int32 f0 = f[0];
16
+ crypto_int32 f1 = f[1];
17
+ crypto_int32 f2 = f[2];
18
+ crypto_int32 f3 = f[3];
19
+ crypto_int32 f4 = f[4];
20
+ crypto_int32 f5 = f[5];
21
+ crypto_int32 f6 = f[6];
22
+ crypto_int32 f7 = f[7];
23
+ crypto_int32 f8 = f[8];
24
+ crypto_int32 f9 = f[9];
25
+ crypto_int32 h0 = -f0;
26
+ crypto_int32 h1 = -f1;
27
+ crypto_int32 h2 = -f2;
28
+ crypto_int32 h3 = -f3;
29
+ crypto_int32 h4 = -f4;
30
+ crypto_int32 h5 = -f5;
31
+ crypto_int32 h6 = -f6;
32
+ crypto_int32 h7 = -f7;
33
+ crypto_int32 h8 = -f8;
34
+ crypto_int32 h9 = -f9;
35
+ h[0] = h0;
36
+ h[1] = h1;
37
+ h[2] = h2;
38
+ h[3] = h3;
39
+ h[4] = h4;
40
+ h[5] = h5;
41
+ h[6] = h6;
42
+ h[7] = h7;
43
+ h[8] = h8;
44
+ h[9] = h9;
45
+ }
@@ -0,0 +1,13 @@
1
+ #include "fe.h"
2
+
3
+ void fe_pow22523(fe out,const fe z)
4
+ {
5
+ fe t0;
6
+ fe t1;
7
+ fe t2;
8
+ int i;
9
+
10
+ #include "pow22523.h"
11
+
12
+ return;
13
+ }
@@ -0,0 +1,149 @@
1
+ #include "fe.h"
2
+ #include "crypto_int64.h"
3
+
4
+ /*
5
+ h = f * f
6
+ Can overlap h with f.
7
+
8
+ Preconditions:
9
+ |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
10
+
11
+ Postconditions:
12
+ |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
13
+ */
14
+
15
+ /*
16
+ See fe_mul.c for discussion of implementation strategy.
17
+ */
18
+
19
+ void fe_sq(fe h,const fe f)
20
+ {
21
+ crypto_int32 f0 = f[0];
22
+ crypto_int32 f1 = f[1];
23
+ crypto_int32 f2 = f[2];
24
+ crypto_int32 f3 = f[3];
25
+ crypto_int32 f4 = f[4];
26
+ crypto_int32 f5 = f[5];
27
+ crypto_int32 f6 = f[6];
28
+ crypto_int32 f7 = f[7];
29
+ crypto_int32 f8 = f[8];
30
+ crypto_int32 f9 = f[9];
31
+ crypto_int32 f0_2 = 2 * f0;
32
+ crypto_int32 f1_2 = 2 * f1;
33
+ crypto_int32 f2_2 = 2 * f2;
34
+ crypto_int32 f3_2 = 2 * f3;
35
+ crypto_int32 f4_2 = 2 * f4;
36
+ crypto_int32 f5_2 = 2 * f5;
37
+ crypto_int32 f6_2 = 2 * f6;
38
+ crypto_int32 f7_2 = 2 * f7;
39
+ crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */
40
+ crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */
41
+ crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */
42
+ crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */
43
+ crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */
44
+ crypto_int64 f0f0 = f0 * (crypto_int64) f0;
45
+ crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1;
46
+ crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2;
47
+ crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3;
48
+ crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4;
49
+ crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5;
50
+ crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6;
51
+ crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7;
52
+ crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8;
53
+ crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9;
54
+ crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1;
55
+ crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2;
56
+ crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2;
57
+ crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4;
58
+ crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2;
59
+ crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6;
60
+ crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2;
61
+ crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8;
62
+ crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;
63
+ crypto_int64 f2f2 = f2 * (crypto_int64) f2;
64
+ crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3;
65
+ crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4;
66
+ crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5;
67
+ crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6;
68
+ crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7;
69
+ crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;
70
+ crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38;
71
+ crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3;
72
+ crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4;
73
+ crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2;
74
+ crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6;
75
+ crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;
76
+ crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19;
77
+ crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38;
78
+ crypto_int64 f4f4 = f4 * (crypto_int64) f4;
79
+ crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5;
80
+ crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;
81
+ crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38;
82
+ crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19;
83
+ crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38;
84
+ crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38;
85
+ crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19;
86
+ crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38;
87
+ crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19;
88
+ crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38;
89
+ crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19;
90
+ crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38;
91
+ crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19;
92
+ crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38;
93
+ crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38;
94
+ crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19;
95
+ crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38;
96
+ crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19;
97
+ crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38;
98
+ crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38;
99
+ crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
100
+ crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
101
+ crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
102
+ crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
103
+ crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38;
104
+ crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
105
+ crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
106
+ crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
107
+ crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38;
108
+ crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
109
+ crypto_int64 carry0;
110
+ crypto_int64 carry1;
111
+ crypto_int64 carry2;
112
+ crypto_int64 carry3;
113
+ crypto_int64 carry4;
114
+ crypto_int64 carry5;
115
+ crypto_int64 carry6;
116
+ crypto_int64 carry7;
117
+ crypto_int64 carry8;
118
+ crypto_int64 carry9;
119
+
120
+ carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
121
+ carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
122
+
123
+ carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
124
+ carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
125
+
126
+ carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
127
+ carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
128
+
129
+ carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
130
+ carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
131
+
132
+ carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
133
+ carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
134
+
135
+ carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
136
+
137
+ carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
138
+
139
+ h[0] = h0;
140
+ h[1] = h1;
141
+ h[2] = h2;
142
+ h[3] = h3;
143
+ h[4] = h4;
144
+ h[5] = h5;
145
+ h[6] = h6;
146
+ h[7] = h7;
147
+ h[8] = h8;
148
+ h[9] = h9;
149
+ }
@@ -0,0 +1,160 @@
1
+ #include "fe.h"
2
+ #include "crypto_int64.h"
3
+
4
+ /*
5
+ h = 2 * f * f
6
+ Can overlap h with f.
7
+
8
+ Preconditions:
9
+ |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.
10
+
11
+ Postconditions:
12
+ |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.
13
+ */
14
+
15
+ /*
16
+ See fe_mul.c for discussion of implementation strategy.
17
+ */
18
+
19
+ void fe_sq2(fe h,const fe f)
20
+ {
21
+ crypto_int32 f0 = f[0];
22
+ crypto_int32 f1 = f[1];
23
+ crypto_int32 f2 = f[2];
24
+ crypto_int32 f3 = f[3];
25
+ crypto_int32 f4 = f[4];
26
+ crypto_int32 f5 = f[5];
27
+ crypto_int32 f6 = f[6];
28
+ crypto_int32 f7 = f[7];
29
+ crypto_int32 f8 = f[8];
30
+ crypto_int32 f9 = f[9];
31
+ crypto_int32 f0_2 = 2 * f0;
32
+ crypto_int32 f1_2 = 2 * f1;
33
+ crypto_int32 f2_2 = 2 * f2;
34
+ crypto_int32 f3_2 = 2 * f3;
35
+ crypto_int32 f4_2 = 2 * f4;
36
+ crypto_int32 f5_2 = 2 * f5;
37
+ crypto_int32 f6_2 = 2 * f6;
38
+ crypto_int32 f7_2 = 2 * f7;
39
+ crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */
40
+ crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */
41
+ crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */
42
+ crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */
43
+ crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */
44
+ crypto_int64 f0f0 = f0 * (crypto_int64) f0;
45
+ crypto_int64 f0f1_2 = f0_2 * (crypto_int64) f1;
46
+ crypto_int64 f0f2_2 = f0_2 * (crypto_int64) f2;
47
+ crypto_int64 f0f3_2 = f0_2 * (crypto_int64) f3;
48
+ crypto_int64 f0f4_2 = f0_2 * (crypto_int64) f4;
49
+ crypto_int64 f0f5_2 = f0_2 * (crypto_int64) f5;
50
+ crypto_int64 f0f6_2 = f0_2 * (crypto_int64) f6;
51
+ crypto_int64 f0f7_2 = f0_2 * (crypto_int64) f7;
52
+ crypto_int64 f0f8_2 = f0_2 * (crypto_int64) f8;
53
+ crypto_int64 f0f9_2 = f0_2 * (crypto_int64) f9;
54
+ crypto_int64 f1f1_2 = f1_2 * (crypto_int64) f1;
55
+ crypto_int64 f1f2_2 = f1_2 * (crypto_int64) f2;
56
+ crypto_int64 f1f3_4 = f1_2 * (crypto_int64) f3_2;
57
+ crypto_int64 f1f4_2 = f1_2 * (crypto_int64) f4;
58
+ crypto_int64 f1f5_4 = f1_2 * (crypto_int64) f5_2;
59
+ crypto_int64 f1f6_2 = f1_2 * (crypto_int64) f6;
60
+ crypto_int64 f1f7_4 = f1_2 * (crypto_int64) f7_2;
61
+ crypto_int64 f1f8_2 = f1_2 * (crypto_int64) f8;
62
+ crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;
63
+ crypto_int64 f2f2 = f2 * (crypto_int64) f2;
64
+ crypto_int64 f2f3_2 = f2_2 * (crypto_int64) f3;
65
+ crypto_int64 f2f4_2 = f2_2 * (crypto_int64) f4;
66
+ crypto_int64 f2f5_2 = f2_2 * (crypto_int64) f5;
67
+ crypto_int64 f2f6_2 = f2_2 * (crypto_int64) f6;
68
+ crypto_int64 f2f7_2 = f2_2 * (crypto_int64) f7;
69
+ crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;
70
+ crypto_int64 f2f9_38 = f2 * (crypto_int64) f9_38;
71
+ crypto_int64 f3f3_2 = f3_2 * (crypto_int64) f3;
72
+ crypto_int64 f3f4_2 = f3_2 * (crypto_int64) f4;
73
+ crypto_int64 f3f5_4 = f3_2 * (crypto_int64) f5_2;
74
+ crypto_int64 f3f6_2 = f3_2 * (crypto_int64) f6;
75
+ crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;
76
+ crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19;
77
+ crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38;
78
+ crypto_int64 f4f4 = f4 * (crypto_int64) f4;
79
+ crypto_int64 f4f5_2 = f4_2 * (crypto_int64) f5;
80
+ crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;
81
+ crypto_int64 f4f7_38 = f4 * (crypto_int64) f7_38;
82
+ crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19;
83
+ crypto_int64 f4f9_38 = f4 * (crypto_int64) f9_38;
84
+ crypto_int64 f5f5_38 = f5 * (crypto_int64) f5_38;
85
+ crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19;
86
+ crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38;
87
+ crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19;
88
+ crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38;
89
+ crypto_int64 f6f6_19 = f6 * (crypto_int64) f6_19;
90
+ crypto_int64 f6f7_38 = f6 * (crypto_int64) f7_38;
91
+ crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19;
92
+ crypto_int64 f6f9_38 = f6 * (crypto_int64) f9_38;
93
+ crypto_int64 f7f7_38 = f7 * (crypto_int64) f7_38;
94
+ crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19;
95
+ crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38;
96
+ crypto_int64 f8f8_19 = f8 * (crypto_int64) f8_19;
97
+ crypto_int64 f8f9_38 = f8 * (crypto_int64) f9_38;
98
+ crypto_int64 f9f9_38 = f9 * (crypto_int64) f9_38;
99
+ crypto_int64 h0 = f0f0 +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;
100
+ crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;
101
+ crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;
102
+ crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;
103
+ crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2 +f5f9_76+f6f8_38+f7f7_38;
104
+ crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;
105
+ crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;
106
+ crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;
107
+ crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4 +f9f9_38;
108
+ crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;
109
+ crypto_int64 carry0;
110
+ crypto_int64 carry1;
111
+ crypto_int64 carry2;
112
+ crypto_int64 carry3;
113
+ crypto_int64 carry4;
114
+ crypto_int64 carry5;
115
+ crypto_int64 carry6;
116
+ crypto_int64 carry7;
117
+ crypto_int64 carry8;
118
+ crypto_int64 carry9;
119
+
120
+ h0 += h0;
121
+ h1 += h1;
122
+ h2 += h2;
123
+ h3 += h3;
124
+ h4 += h4;
125
+ h5 += h5;
126
+ h6 += h6;
127
+ h7 += h7;
128
+ h8 += h8;
129
+ h9 += h9;
130
+
131
+ carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
132
+ carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
133
+
134
+ carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;
135
+ carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;
136
+
137
+ carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;
138
+ carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;
139
+
140
+ carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;
141
+ carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;
142
+
143
+ carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;
144
+ carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;
145
+
146
+ carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;
147
+
148
+ carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;
149
+
150
+ h[0] = h0;
151
+ h[1] = h1;
152
+ h[2] = h2;
153
+ h[3] = h3;
154
+ h[4] = h4;
155
+ h[5] = h5;
156
+ h[6] = h6;
157
+ h[7] = h7;
158
+ h[8] = h8;
159
+ h[9] = h9;
160
+ }
@@ -0,0 +1,57 @@
1
+ #include "fe.h"
2
+
3
+ /*
4
+ h = f - g
5
+ Can overlap h with f or g.
6
+
7
+ Preconditions:
8
+ |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
9
+ |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.
10
+
11
+ Postconditions:
12
+ |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
13
+ */
14
+
15
+ void fe_sub(fe h,const fe f,const fe g)
16
+ {
17
+ crypto_int32 f0 = f[0];
18
+ crypto_int32 f1 = f[1];
19
+ crypto_int32 f2 = f[2];
20
+ crypto_int32 f3 = f[3];
21
+ crypto_int32 f4 = f[4];
22
+ crypto_int32 f5 = f[5];
23
+ crypto_int32 f6 = f[6];
24
+ crypto_int32 f7 = f[7];
25
+ crypto_int32 f8 = f[8];
26
+ crypto_int32 f9 = f[9];
27
+ crypto_int32 g0 = g[0];
28
+ crypto_int32 g1 = g[1];
29
+ crypto_int32 g2 = g[2];
30
+ crypto_int32 g3 = g[3];
31
+ crypto_int32 g4 = g[4];
32
+ crypto_int32 g5 = g[5];
33
+ crypto_int32 g6 = g[6];
34
+ crypto_int32 g7 = g[7];
35
+ crypto_int32 g8 = g[8];
36
+ crypto_int32 g9 = g[9];
37
+ crypto_int32 h0 = f0 - g0;
38
+ crypto_int32 h1 = f1 - g1;
39
+ crypto_int32 h2 = f2 - g2;
40
+ crypto_int32 h3 = f3 - g3;
41
+ crypto_int32 h4 = f4 - g4;
42
+ crypto_int32 h5 = f5 - g5;
43
+ crypto_int32 h6 = f6 - g6;
44
+ crypto_int32 h7 = f7 - g7;
45
+ crypto_int32 h8 = f8 - g8;
46
+ crypto_int32 h9 = f9 - g9;
47
+ h[0] = h0;
48
+ h[1] = h1;
49
+ h[2] = h2;
50
+ h[3] = h3;
51
+ h[4] = h4;
52
+ h[5] = h5;
53
+ h[6] = h6;
54
+ h[7] = h7;
55
+ h[8] = h8;
56
+ h[9] = h9;
57
+ }
@@ -0,0 +1,119 @@
1
+ #include "fe.h"
2
+
3
+ /*
4
+ Preconditions:
5
+ |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.
6
+
7
+ Write p=2^255-19; q=floor(h/p).
8
+ Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).
9
+
10
+ Proof:
11
+ Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.
12
+ Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4.
13
+
14
+ Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).
15
+ Then 0<y<1.
16
+
17
+ Write r=h-pq.
18
+ Have 0<=r<=p-1=2^255-20.
19
+ Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1.
20
+
21
+ Write x=r+19(2^-255)r+y.
22
+ Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q.
23
+
24
+ Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1))
25
+ so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q.
26
+ */
27
+
28
+ void fe_tobytes(unsigned char *s,const fe h)
29
+ {
30
+ crypto_int32 h0 = h[0];
31
+ crypto_int32 h1 = h[1];
32
+ crypto_int32 h2 = h[2];
33
+ crypto_int32 h3 = h[3];
34
+ crypto_int32 h4 = h[4];
35
+ crypto_int32 h5 = h[5];
36
+ crypto_int32 h6 = h[6];
37
+ crypto_int32 h7 = h[7];
38
+ crypto_int32 h8 = h[8];
39
+ crypto_int32 h9 = h[9];
40
+ crypto_int32 q;
41
+ crypto_int32 carry0;
42
+ crypto_int32 carry1;
43
+ crypto_int32 carry2;
44
+ crypto_int32 carry3;
45
+ crypto_int32 carry4;
46
+ crypto_int32 carry5;
47
+ crypto_int32 carry6;
48
+ crypto_int32 carry7;
49
+ crypto_int32 carry8;
50
+ crypto_int32 carry9;
51
+
52
+ q = (19 * h9 + (((crypto_int32) 1) << 24)) >> 25;
53
+ q = (h0 + q) >> 26;
54
+ q = (h1 + q) >> 25;
55
+ q = (h2 + q) >> 26;
56
+ q = (h3 + q) >> 25;
57
+ q = (h4 + q) >> 26;
58
+ q = (h5 + q) >> 25;
59
+ q = (h6 + q) >> 26;
60
+ q = (h7 + q) >> 25;
61
+ q = (h8 + q) >> 26;
62
+ q = (h9 + q) >> 25;
63
+
64
+ /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */
65
+ h0 += 19 * q;
66
+ /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */
67
+
68
+ carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26;
69
+ carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25;
70
+ carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26;
71
+ carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25;
72
+ carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26;
73
+ carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25;
74
+ carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26;
75
+ carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25;
76
+ carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26;
77
+ carry9 = h9 >> 25; h9 -= carry9 << 25;
78
+ /* h10 = carry9 */
79
+
80
+ /*
81
+ Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.
82
+ Have h0+...+2^230 h9 between 0 and 2^255-1;
83
+ evidently 2^255 h10-2^255 q = 0.
84
+ Goal: Output h0+...+2^230 h9.
85
+ */
86
+
87
+ s[0] = h0 >> 0;
88
+ s[1] = h0 >> 8;
89
+ s[2] = h0 >> 16;
90
+ s[3] = (h0 >> 24) | (h1 << 2);
91
+ s[4] = h1 >> 6;
92
+ s[5] = h1 >> 14;
93
+ s[6] = (h1 >> 22) | (h2 << 3);
94
+ s[7] = h2 >> 5;
95
+ s[8] = h2 >> 13;
96
+ s[9] = (h2 >> 21) | (h3 << 5);
97
+ s[10] = h3 >> 3;
98
+ s[11] = h3 >> 11;
99
+ s[12] = (h3 >> 19) | (h4 << 6);
100
+ s[13] = h4 >> 2;
101
+ s[14] = h4 >> 10;
102
+ s[15] = h4 >> 18;
103
+ s[16] = h5 >> 0;
104
+ s[17] = h5 >> 8;
105
+ s[18] = h5 >> 16;
106
+ s[19] = (h5 >> 24) | (h6 << 1);
107
+ s[20] = h6 >> 7;
108
+ s[21] = h6 >> 15;
109
+ s[22] = (h6 >> 23) | (h7 << 3);
110
+ s[23] = h7 >> 5;
111
+ s[24] = h7 >> 13;
112
+ s[25] = (h7 >> 21) | (h8 << 4);
113
+ s[26] = h8 >> 4;
114
+ s[27] = h8 >> 12;
115
+ s[28] = (h8 >> 20) | (h9 << 6);
116
+ s[29] = h9 >> 2;
117
+ s[30] = h9 >> 10;
118
+ s[31] = h9 >> 18;
119
+ }