rbnacl-libsodium 1.0.6 → 1.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (243) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +4 -0
  3. data/lib/rbnacl/libsodium/version.rb +1 -1
  4. data/vendor/libsodium/AUTHORS +10 -3
  5. data/vendor/libsodium/ChangeLog +19 -1
  6. data/vendor/libsodium/Makefile.in +1 -0
  7. data/vendor/libsodium/README.markdown +1 -1
  8. data/vendor/libsodium/THANKS +1 -0
  9. data/vendor/libsodium/autogen.sh +24 -4
  10. data/vendor/libsodium/autom4te.cache/output.1 +208 -24
  11. data/vendor/libsodium/autom4te.cache/output.5 +208 -24
  12. data/vendor/libsodium/autom4te.cache/requests +869 -869
  13. data/vendor/libsodium/autom4te.cache/traces.1 +426 -406
  14. data/vendor/libsodium/autom4te.cache/traces.5 +255 -245
  15. data/vendor/libsodium/builds/msvc/version.h +2 -2
  16. data/vendor/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj +14 -44
  17. data/vendor/libsodium/builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters +36 -132
  18. data/vendor/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj +14 -44
  19. data/vendor/libsodium/builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters +36 -132
  20. data/vendor/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj +14 -44
  21. data/vendor/libsodium/builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters +36 -132
  22. data/vendor/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj +14 -44
  23. data/vendor/libsodium/builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters +62 -158
  24. data/vendor/libsodium/configure +208 -24
  25. data/vendor/libsodium/configure.ac +70 -15
  26. data/vendor/libsodium/dist-build/Makefile.in +1 -0
  27. data/vendor/libsodium/dist-build/emscripten.sh +52 -19
  28. data/vendor/libsodium/dist-build/ios.sh +8 -8
  29. data/vendor/libsodium/dist-build/msys2-win32.sh +2 -1
  30. data/vendor/libsodium/dist-build/msys2-win64.sh +2 -1
  31. data/vendor/libsodium/dist-build/osx.sh +2 -2
  32. data/vendor/libsodium/examples/box.c +3 -1
  33. data/vendor/libsodium/examples/box_detached.c +4 -2
  34. data/vendor/libsodium/examples/utils.h +3 -1
  35. data/vendor/libsodium/libsodium.vcxproj +13 -13
  36. data/vendor/libsodium/libsodium.vcxproj.filters +31 -35
  37. data/vendor/libsodium/msvc-scripts/Makefile.in +1 -0
  38. data/vendor/libsodium/msvc-scripts/process.bat +2 -2
  39. data/vendor/libsodium/src/Makefile.in +1 -0
  40. data/vendor/libsodium/src/libsodium/Makefile.am +43 -45
  41. data/vendor/libsodium/src/libsodium/Makefile.in +250 -249
  42. data/vendor/libsodium/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c +28 -22
  43. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/cp/hmac_hmacsha256.c +3 -4
  44. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/cp/verify_hmacsha256.c +3 -3
  45. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512/cp/hmac_hmacsha512.c +3 -4
  46. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512/cp/verify_hmacsha512.c +4 -4
  47. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/cp/hmac_hmacsha512256.c +4 -4
  48. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/cp/verify_hmacsha512256.c +6 -4
  49. data/vendor/libsodium/src/libsodium/crypto_box/crypto_box_easy.c +6 -2
  50. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/after_curve25519xsalsa20poly1305.c +3 -3
  51. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/before_curve25519xsalsa20poly1305.c +5 -3
  52. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/box_curve25519xsalsa20poly1305.c +13 -9
  53. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/keypair_curve25519xsalsa20poly1305.c +3 -3
  54. data/vendor/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/core_hsalsa20.c +2 -2
  55. data/vendor/libsodium/src/libsodium/crypto_core/salsa20/ref/core_salsa20.c +2 -2
  56. data/vendor/libsodium/src/libsodium/crypto_core/salsa2012/ref/core_salsa2012.c +2 -2
  57. data/vendor/libsodium/src/libsodium/crypto_core/salsa208/ref/core_salsa208.c +2 -2
  58. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2.h +2 -2
  59. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/blake2b-ref.c +36 -26
  60. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/generichash_blake2b.c +1 -1
  61. data/vendor/libsodium/src/libsodium/crypto_generichash/crypto_generichash.c +1 -2
  62. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/cp/hash_sha256.c +2 -3
  63. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/cp/hash_sha512.c +2 -3
  64. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/{auth_poly1305_donna.c → poly1305_donna.c} +18 -11
  65. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.h +1 -5
  66. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna32.h +10 -9
  67. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna64.h +17 -9
  68. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c +10 -1
  69. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.c +708 -0
  70. data/vendor/libsodium/src/libsodium/crypto_onetimeauth/poly1305/sse2/poly1305_sse2.h +31 -0
  71. data/vendor/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/crypto_scrypt.h +1 -0
  72. data/vendor/libsodium/src/libsodium/crypto_scalarmult/crypto_scalarmult.c +11 -12
  73. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/{smult_curve25519_donna_c64.c → curve25519_donna_c64.c} +32 -15
  74. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/curve25519_donna_c64.h +9 -0
  75. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/curve25519_ref10.c +73 -0
  76. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/curve25519_ref10.h +9 -0
  77. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/fe_frombytes_curve25519_ref10.c +1 -0
  78. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S +25 -0
  79. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts_namespace.h +20 -0
  80. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c +114 -0
  81. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h +9 -0
  82. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe.h +25 -0
  83. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51.h +33 -0
  84. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_invert.c +57 -0
  85. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S +189 -0
  86. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h +16 -0
  87. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S +165 -0
  88. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S +219 -0
  89. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c +76 -0
  90. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S +1432 -0
  91. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.h +18 -0
  92. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S +1287 -0
  93. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.h +18 -0
  94. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base_namespace.h +8 -0
  95. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h +8 -0
  96. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/sandy2x/sandy2x.S +17 -0
  97. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.c +67 -0
  98. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519.h +11 -0
  99. data/vendor/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c +3 -3
  100. data/vendor/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/shorthash_siphash24.c +3 -2
  101. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge.h +2 -0
  102. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/ge_double_scalarmult.c +42 -0
  103. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/keypair.c +7 -7
  104. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/obsolete.c +113 -0
  105. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/open.c +10 -7
  106. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/sign.c +10 -10
  107. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/afternm_aes128ctr.c +2 -2
  108. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/beforenm_aes128ctr.c +2 -2
  109. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/stream_aes128ctr.c +10 -9
  110. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/xor_afternm_aes128ctr.c +2 -3
  111. data/vendor/libsodium/src/libsodium/crypto_stream/chacha20/ref/stream_chacha20_ref.c +72 -68
  112. data/vendor/libsodium/src/libsodium/crypto_stream/chacha20/ref/{api.h → stream_chacha20_ref.h} +5 -0
  113. data/vendor/libsodium/src/libsodium/crypto_stream/chacha20/{stream_chacha20_api.c → stream_chacha20.c} +27 -7
  114. data/vendor/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.h +22 -0
  115. data/vendor/libsodium/src/libsodium/crypto_stream/chacha20/vec/stream_chacha20_vec.c +329 -0
  116. data/vendor/libsodium/src/libsodium/crypto_stream/chacha20/vec/stream_chacha20_vec.h +27 -0
  117. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S +1 -1
  118. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/ref/stream_salsa20_ref.c +2 -2
  119. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/ref/xor_salsa20_ref.c +1 -1
  120. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/ref/stream_salsa2012.c +2 -2
  121. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/ref/xor_salsa2012.c +2 -2
  122. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/ref/stream_salsa208.c +2 -2
  123. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/ref/xor_salsa208.c +2 -2
  124. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/stream_xsalsa20.c +2 -2
  125. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c +4 -4
  126. data/vendor/libsodium/src/libsodium/crypto_verify/16/ref/verify_16.c +14 -21
  127. data/vendor/libsodium/src/libsodium/crypto_verify/32/ref/verify_32.c +14 -37
  128. data/vendor/libsodium/src/libsodium/crypto_verify/64/ref/verify_64.c +14 -69
  129. data/vendor/libsodium/src/libsodium/include/Makefile.in +1 -0
  130. data/vendor/libsodium/src/libsodium/include/sodium/crypto_box.h +8 -4
  131. data/vendor/libsodium/src/libsodium/include/sodium/crypto_box_curve25519xsalsa20poly1305.h +4 -2
  132. data/vendor/libsodium/src/libsodium/include/sodium/crypto_generichash_blake2b.h +2 -2
  133. data/vendor/libsodium/src/libsodium/include/sodium/crypto_onetimeauth_poly1305.h +2 -3
  134. data/vendor/libsodium/src/libsodium/include/sodium/crypto_scalarmult.h +2 -1
  135. data/vendor/libsodium/src/libsodium/include/sodium/crypto_scalarmult_curve25519.h +6 -1
  136. data/vendor/libsodium/src/libsodium/include/sodium/crypto_stream_chacha20.h +5 -0
  137. data/vendor/libsodium/src/libsodium/include/sodium/randombytes_nativeclient.h +6 -20
  138. data/vendor/libsodium/src/libsodium/include/sodium/randombytes_salsa20_random.h +1 -28
  139. data/vendor/libsodium/src/libsodium/include/sodium/randombytes_sysrandom.h +1 -27
  140. data/vendor/libsodium/src/libsodium/include/sodium/runtime.h +3 -0
  141. data/vendor/libsodium/src/libsodium/include/sodium/utils.h +6 -0
  142. data/vendor/libsodium/src/libsodium/randombytes/nativeclient/randombytes_nativeclient.c +3 -3
  143. data/vendor/libsodium/src/libsodium/randombytes/salsa20/randombytes_salsa20_random.c +58 -51
  144. data/vendor/libsodium/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c +23 -18
  145. data/vendor/libsodium/src/libsodium/sodium/core.c +4 -0
  146. data/vendor/libsodium/src/libsodium/sodium/runtime.c +34 -15
  147. data/vendor/libsodium/src/libsodium/sodium/utils.c +104 -14
  148. data/vendor/libsodium/test/Makefile.in +1 -0
  149. data/vendor/libsodium/test/default/Makefile.in +1 -0
  150. data/vendor/libsodium/test/default/auth.c +5 -5
  151. data/vendor/libsodium/test/default/auth2.c +3 -3
  152. data/vendor/libsodium/test/default/auth3.c +3 -3
  153. data/vendor/libsodium/test/default/auth5.c +4 -4
  154. data/vendor/libsodium/test/default/auth6.c +3 -3
  155. data/vendor/libsodium/test/default/auth7.c +4 -4
  156. data/vendor/libsodium/test/default/box.c +13 -9
  157. data/vendor/libsodium/test/default/box2.c +11 -8
  158. data/vendor/libsodium/test/default/box7.c +11 -9
  159. data/vendor/libsodium/test/default/box8.c +32 -19
  160. data/vendor/libsodium/test/default/box_easy.c +31 -10
  161. data/vendor/libsodium/test/default/box_easy.exp +3 -19
  162. data/vendor/libsodium/test/default/box_easy2.c +30 -15
  163. data/vendor/libsodium/test/default/box_seed.c +1 -1
  164. data/vendor/libsodium/test/default/cmptest.h +22 -1
  165. data/vendor/libsodium/test/default/core1.c +6 -5
  166. data/vendor/libsodium/test/default/core2.c +6 -5
  167. data/vendor/libsodium/test/default/core3.c +8 -7
  168. data/vendor/libsodium/test/default/core4.c +11 -8
  169. data/vendor/libsodium/test/default/core5.c +7 -5
  170. data/vendor/libsodium/test/default/core6.c +8 -6
  171. data/vendor/libsodium/test/default/generichash.c +0 -15
  172. data/vendor/libsodium/test/default/generichash.exp +0 -1
  173. data/vendor/libsodium/test/default/generichash3.c +1 -21
  174. data/vendor/libsodium/test/default/generichash3.exp +1 -1
  175. data/vendor/libsodium/test/default/hash.c +3 -3
  176. data/vendor/libsodium/test/default/hash3.c +2 -2
  177. data/vendor/libsodium/test/default/index.html.tpl +84 -0
  178. data/vendor/libsodium/test/default/onetimeauth.c +3 -3
  179. data/vendor/libsodium/test/default/onetimeauth2.c +5 -4
  180. data/vendor/libsodium/test/default/onetimeauth7.c +4 -4
  181. data/vendor/libsodium/test/default/pre.js.inc +14 -6
  182. data/vendor/libsodium/test/default/randombytes.c +2 -2
  183. data/vendor/libsodium/test/default/scalarmult.c +19 -6
  184. data/vendor/libsodium/test/default/scalarmult.exp +1 -0
  185. data/vendor/libsodium/test/default/scalarmult2.c +2 -2
  186. data/vendor/libsodium/test/default/scalarmult5.c +6 -4
  187. data/vendor/libsodium/test/default/scalarmult6.c +5 -3
  188. data/vendor/libsodium/test/default/scalarmult7.c +11 -7
  189. data/vendor/libsodium/test/default/secretbox.c +7 -6
  190. data/vendor/libsodium/test/default/secretbox2.c +7 -6
  191. data/vendor/libsodium/test/default/secretbox7.c +5 -5
  192. data/vendor/libsodium/test/default/secretbox8.c +5 -5
  193. data/vendor/libsodium/test/default/secretbox_easy.c +27 -17
  194. data/vendor/libsodium/test/default/secretbox_easy.exp +7 -95
  195. data/vendor/libsodium/test/default/secretbox_easy2.c +22 -10
  196. data/vendor/libsodium/test/default/sign.c +5 -0
  197. data/vendor/libsodium/test/default/sodium_utils.c +73 -0
  198. data/vendor/libsodium/test/default/sodium_utils.exp +6 -0
  199. data/vendor/libsodium/test/default/stream.c +7 -6
  200. data/vendor/libsodium/test/default/stream2.c +4 -4
  201. data/vendor/libsodium/test/default/stream3.c +6 -5
  202. data/vendor/libsodium/test/default/stream4.c +7 -6
  203. data/vendor/libsodium/test/default/verify1.c +61 -18
  204. data/vendor/libsodium/test/default/verify1.exp +2 -6
  205. metadata +37 -44
  206. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha256/cp/api.h +0 -9
  207. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512/cp/api.h +0 -9
  208. data/vendor/libsodium/src/libsodium/crypto_auth/hmacsha512256/cp/api.h +0 -9
  209. data/vendor/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref/api.h +0 -20
  210. data/vendor/libsodium/src/libsodium/crypto_core/hsalsa20/ref2/api.h +0 -10
  211. data/vendor/libsodium/src/libsodium/crypto_core/salsa20/ref/api.h +0 -10
  212. data/vendor/libsodium/src/libsodium/crypto_core/salsa2012/ref/api.h +0 -10
  213. data/vendor/libsodium/src/libsodium/crypto_core/salsa208/ref/api.h +0 -10
  214. data/vendor/libsodium/src/libsodium/crypto_generichash/blake2/ref/api.h +0 -2
  215. data/vendor/libsodium/src/libsodium/crypto_hash/sha256/cp/api.h +0 -10
  216. data/vendor/libsodium/src/libsodium/crypto_hash/sha512/cp/api.h +0 -10
  217. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/api.h +0 -6
  218. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/donna_c64/base_curve25519_donna_c64.c +0 -13
  219. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/api.h +0 -5
  220. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/base_curve25519_ref10.c +0 -14
  221. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10/scalarmult_curve25519_ref10.c +0 -54
  222. data/vendor/libsodium/src/libsodium/crypto_scalarmult/curve25519/scalarmult_curve25519_api.c +0 -14
  223. data/vendor/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h +0 -11
  224. data/vendor/libsodium/src/libsodium/crypto_shorthash/siphash24/ref/api.h +0 -7
  225. data/vendor/libsodium/src/libsodium/crypto_sign/ed25519/ref10/api.h +0 -15
  226. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/api.h +0 -12
  227. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519.h +0 -54
  228. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/fe25519_edwards25519sha512batch.c +0 -348
  229. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519.h +0 -34
  230. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/ge25519_edwards25519sha512batch.c +0 -230
  231. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519.h +0 -51
  232. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sc25519_edwards25519sha512batch.c +0 -150
  233. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref/sign_edwards25519sha512batch.c +0 -106
  234. data/vendor/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/sign_edwards25519sha512batch_api.c +0 -16
  235. data/vendor/libsodium/src/libsodium/crypto_stream/aes128ctr/portable/api.h +0 -13
  236. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/amd64_xmm6/api.h +0 -1
  237. data/vendor/libsodium/src/libsodium/crypto_stream/salsa20/ref/api.h +0 -5
  238. data/vendor/libsodium/src/libsodium/crypto_stream/salsa2012/ref/api.h +0 -10
  239. data/vendor/libsodium/src/libsodium/crypto_stream/salsa208/ref/api.h +0 -9
  240. data/vendor/libsodium/src/libsodium/crypto_stream/xsalsa20/ref/api.h +0 -11
  241. data/vendor/libsodium/src/libsodium/crypto_verify/16/ref/api.h +0 -2
  242. data/vendor/libsodium/src/libsodium/crypto_verify/32/ref/api.h +0 -2
  243. data/vendor/libsodium/src/libsodium/crypto_verify/64/ref/api.h +0 -2
@@ -1,6 +1,6 @@
1
1
  #! /bin/sh
2
2
  # Guess values for system-dependent variables and create Makefiles.
3
- # Generated by GNU Autoconf 2.69 for libsodium 1.0.6.
3
+ # Generated by GNU Autoconf 2.69 for libsodium 1.0.7.
4
4
  #
5
5
  # Report bugs to <https://github.com/jedisct1/libsodium/issues>.
6
6
  #
@@ -590,8 +590,8 @@ MAKEFLAGS=
590
590
  # Identity of this package.
591
591
  PACKAGE_NAME='libsodium'
592
592
  PACKAGE_TARNAME='libsodium'
593
- PACKAGE_VERSION='1.0.6'
594
- PACKAGE_STRING='libsodium 1.0.6'
593
+ PACKAGE_VERSION='1.0.7'
594
+ PACKAGE_STRING='libsodium 1.0.7'
595
595
  PACKAGE_BUGREPORT='https://github.com/jedisct1/libsodium/issues'
596
596
  PACKAGE_URL='https://github.com/jedisct1/libsodium'
597
597
 
@@ -649,6 +649,9 @@ HAVE_CPUID_V
649
649
  HAVE_TI_MODE_V
650
650
  HAVE_TI_MODE_FALSE
651
651
  HAVE_TI_MODE_TRUE
652
+ HAVE_AVX_ASM_V
653
+ HAVE_AVX_ASM_FALSE
654
+ HAVE_AVX_ASM_TRUE
652
655
  HAVE_AMD64_ASM_V
653
656
  HAVE_AMD64_ASM_FALSE
654
657
  HAVE_AMD64_ASM_TRUE
@@ -803,6 +806,7 @@ enable_blocking_random
803
806
  enable_minimal
804
807
  with_safecode
805
808
  enable_debug
809
+ enable_opt
806
810
  enable_soname_versions
807
811
  enable_shared
808
812
  enable_static
@@ -1368,7 +1372,7 @@ if test "$ac_init_help" = "long"; then
1368
1372
  # Omit some internal or obsolete options to make the list less imposing.
1369
1373
  # This message is too long to be a string in the A/UX 3.1 sh.
1370
1374
  cat <<_ACEOF
1371
- \`configure' configures libsodium 1.0.6 to adapt to many kinds of systems.
1375
+ \`configure' configures libsodium 1.0.7 to adapt to many kinds of systems.
1372
1376
 
1373
1377
  Usage: $0 [OPTION]... [VAR=VALUE]...
1374
1378
 
@@ -1438,7 +1442,7 @@ fi
1438
1442
 
1439
1443
  if test -n "$ac_init_help"; then
1440
1444
  case $ac_init_help in
1441
- short | recursive ) echo "Configuration of libsodium 1.0.6:";;
1445
+ short | recursive ) echo "Configuration of libsodium 1.0.7:";;
1442
1446
  esac
1443
1447
  cat <<\_ACEOF
1444
1448
 
@@ -1464,6 +1468,8 @@ Optional Features:
1464
1468
  --enable-minimal Only compile the minimum set of functions required
1465
1469
  for the high-level API
1466
1470
  --enable-debug For maintainers only - please do not use
1471
+ --enable-opt Optimize for the native CPU - The resulting library
1472
+ will be faster but not portable
1467
1473
  --enable-soname-versions
1468
1474
  enable soname versions (must be disabled for
1469
1475
  Android) (default: enabled)
@@ -1571,7 +1577,7 @@ fi
1571
1577
  test -n "$ac_init_help" && exit $ac_status
1572
1578
  if $ac_init_version; then
1573
1579
  cat <<\_ACEOF
1574
- libsodium configure 1.0.6
1580
+ libsodium configure 1.0.7
1575
1581
  generated by GNU Autoconf 2.69
1576
1582
 
1577
1583
  Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1940,7 +1946,7 @@ cat >config.log <<_ACEOF
1940
1946
  This file contains any messages produced by compilers while
1941
1947
  running configure, to aid debugging if configure makes a mistake.
1942
1948
 
1943
- It was created by libsodium $as_me 1.0.6, which was
1949
+ It was created by libsodium $as_me 1.0.7, which was
1944
1950
  generated by GNU Autoconf 2.69. Invocation command line was
1945
1951
 
1946
1952
  $ $0 $@
@@ -2876,7 +2882,7 @@ fi
2876
2882
 
2877
2883
  # Define the identity of the package.
2878
2884
  PACKAGE='libsodium'
2879
- VERSION='1.0.6'
2885
+ VERSION='1.0.7'
2880
2886
 
2881
2887
 
2882
2888
  cat >>confdefs.h <<_ACEOF
@@ -3171,10 +3177,10 @@ fi
3171
3177
  ISODATE=`date +%Y-%m-%d`
3172
3178
 
3173
3179
 
3174
- SODIUM_LIBRARY_VERSION_MAJOR=8
3180
+ SODIUM_LIBRARY_VERSION_MAJOR=9
3175
3181
  SODIUM_LIBRARY_VERSION_MINOR=0
3176
- DLL_VERSION=7
3177
- SODIUM_LIBRARY_VERSION=17:0:0
3182
+ DLL_VERSION=8
3183
+ SODIUM_LIBRARY_VERSION=18:0:0
3178
3184
  # | | |
3179
3185
  # +------+ | +---+
3180
3186
  # | | |
@@ -3352,6 +3358,18 @@ fi
3352
3358
  fi
3353
3359
 
3354
3360
 
3361
+ # Check whether --enable-opt was given.
3362
+ if test "${enable_opt+set}" = set; then :
3363
+ enableval=$enable_opt;
3364
+ if test "x$enableval" = "xyes"; then :
3365
+
3366
+ CFLAGS="$CFLAGS -flto -march=native"
3367
+ LDFLAGS="$LDFLAGS -flto -march=native"
3368
+ fi
3369
+
3370
+ fi
3371
+
3372
+
3355
3373
 
3356
3374
 
3357
3375
 
@@ -15032,6 +15050,106 @@ else
15032
15050
  :
15033
15051
  fi
15034
15052
 
15053
+ else
15054
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15055
+ $as_echo "no" >&6; }
15056
+ fi
15057
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15058
+ CFLAGS="$oldcflags"
15059
+
15060
+ oldcflags="$CFLAGS"
15061
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx" >&5
15062
+ $as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
15063
+ if ${ax_cv_check_cflags___mavx+:} false; then :
15064
+ $as_echo_n "(cached) " >&6
15065
+ else
15066
+
15067
+ ax_check_save_flags=$CFLAGS
15068
+ CFLAGS="$CFLAGS -mavx"
15069
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15070
+ /* end confdefs.h. */
15071
+ #include <stdio.h>
15072
+ int
15073
+ main ()
15074
+ {
15075
+ char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x)
15076
+ ;
15077
+ return 0;
15078
+ }
15079
+ _ACEOF
15080
+ if ac_fn_c_try_compile "$LINENO"; then :
15081
+ ax_cv_check_cflags___mavx=yes
15082
+ else
15083
+ ax_cv_check_cflags___mavx=no
15084
+ fi
15085
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15086
+ CFLAGS=$ax_check_save_flags
15087
+ fi
15088
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mavx" >&5
15089
+ $as_echo "$ax_cv_check_cflags___mavx" >&6; }
15090
+ if test "x$ax_cv_check_cflags___mavx" = xyes; then :
15091
+ CFLAGS="$CFLAGS -mavx"
15092
+ else
15093
+ :
15094
+ fi
15095
+
15096
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX instructions set" >&5
15097
+ $as_echo_n "checking for AVX instructions set... " >&6; }
15098
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15099
+ /* end confdefs.h. */
15100
+
15101
+ #pragma GCC target("avx")
15102
+ #include <immintrin.h>
15103
+
15104
+ int
15105
+ main ()
15106
+ {
15107
+ _mm256_zeroall();
15108
+ ;
15109
+ return 0;
15110
+ }
15111
+ _ACEOF
15112
+ if ac_fn_c_try_compile "$LINENO"; then :
15113
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15114
+ $as_echo "yes" >&6; }
15115
+
15116
+ $as_echo "#define HAVE_AVXINTRIN_H 1" >>confdefs.h
15117
+
15118
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -mavx" >&5
15119
+ $as_echo_n "checking whether C compiler accepts -mavx... " >&6; }
15120
+ if ${ax_cv_check_cflags___mavx+:} false; then :
15121
+ $as_echo_n "(cached) " >&6
15122
+ else
15123
+
15124
+ ax_check_save_flags=$CFLAGS
15125
+ CFLAGS="$CFLAGS -mavx"
15126
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15127
+ /* end confdefs.h. */
15128
+ #include <stdio.h>
15129
+ int
15130
+ main ()
15131
+ {
15132
+ char x[42U], fodder = 0;if (fodder > -1000 && fgets(x,1000,stdin)) puts(x)
15133
+ ;
15134
+ return 0;
15135
+ }
15136
+ _ACEOF
15137
+ if ac_fn_c_try_compile "$LINENO"; then :
15138
+ ax_cv_check_cflags___mavx=yes
15139
+ else
15140
+ ax_cv_check_cflags___mavx=no
15141
+ fi
15142
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15143
+ CFLAGS=$ax_check_save_flags
15144
+ fi
15145
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___mavx" >&5
15146
+ $as_echo "$ax_cv_check_cflags___mavx" >&6; }
15147
+ if test "x$ax_cv_check_cflags___mavx" = xyes; then :
15148
+ CFLAGS_AVX="-mavx"
15149
+ else
15150
+ :
15151
+ fi
15152
+
15035
15153
  else
15036
15154
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15037
15155
  $as_echo "no" >&6; }
@@ -15538,8 +15656,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15538
15656
  HAVE_AMD64_ASM_V=0
15539
15657
  if test "$enable_asm" != "no"; then :
15540
15658
 
15541
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we should use x86_64 asm code" >&5
15542
- $as_echo_n "checking whether we should use x86_64 asm code... " >&6; }
15659
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can use x86_64 asm code" >&5
15660
+ $as_echo_n "checking whether we can use x86_64 asm code... " >&6; }
15543
15661
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15544
15662
  /* end confdefs.h. */
15545
15663
 
@@ -15556,7 +15674,13 @@ main ()
15556
15674
  #else
15557
15675
  # error !x86_64
15558
15676
  #endif
15559
- __asm__("pxor %xmm12,%xmm6");
15677
+ unsigned char i = 0, o = 0, t;
15678
+ __asm__ __volatile__ ("pxor %%xmm12, %%xmm6 \n"
15679
+ "movb (%[i]), %[t] \n"
15680
+ "addb %[t], (%[o]) \n"
15681
+ : [t] "=&r"(t)
15682
+ : [o] "D"(&o), [i] "S"(&i)
15683
+ : "memory", "flags", "cc");
15560
15684
 
15561
15685
  ;
15562
15686
  return 0;
@@ -15586,27 +15710,83 @@ fi
15586
15710
 
15587
15711
 
15588
15712
 
15713
+ HAVE_AVX_ASM_V=0
15714
+ if test "$enable_asm" != "no"; then :
15715
+
15716
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can assemble AVX opcodes" >&5
15717
+ $as_echo_n "checking whether we can assemble AVX opcodes... " >&6; }
15718
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15719
+ /* end confdefs.h. */
15720
+
15721
+
15722
+ int
15723
+ main ()
15724
+ {
15725
+
15726
+ #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
15727
+ # if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64)
15728
+ # error Windows x86_64 calling conventions are not supported yet
15729
+ # endif
15730
+ /* neat */
15731
+ #else
15732
+ # error !x86_64
15733
+ #endif
15734
+ __asm__ __volatile__ ("vpunpcklqdq %xmm0,%xmm13,%xmm0");
15735
+
15736
+ ;
15737
+ return 0;
15738
+ }
15739
+ _ACEOF
15740
+ if ac_fn_c_try_compile "$LINENO"; then :
15741
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15742
+ $as_echo "yes" >&6; }
15743
+
15744
+ $as_echo "#define HAVE_AVX_ASM 1" >>confdefs.h
15745
+
15746
+ HAVE_AVX_ASM_V=1
15747
+ else
15748
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15749
+ $as_echo "no" >&6; }
15750
+ fi
15751
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15752
+
15753
+ fi
15754
+ if test $HAVE_AVX_ASM_V = 1; then
15755
+ HAVE_AVX_ASM_TRUE=
15756
+ HAVE_AVX_ASM_FALSE='#'
15757
+ else
15758
+ HAVE_AVX_ASM_TRUE='#'
15759
+ HAVE_AVX_ASM_FALSE=
15760
+ fi
15761
+
15762
+
15763
+
15589
15764
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 128-bit arithmetic" >&5
15590
15765
  $as_echo_n "checking for 128-bit arithmetic... " >&6; }
15591
15766
  HAVE_TI_MODE_V=0
15592
15767
  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
15593
15768
  /* end confdefs.h. */
15594
15769
 
15595
- #ifndef __GNUC__
15596
- # error mode(TI) is a gcc extension
15770
+ #if !defined(__GNUC__) && !defined(__SIZEOF_INT128__)
15771
+ # error mode(TI) is a gcc extension, and __int128 is not available
15597
15772
  #endif
15598
15773
  #if defined(__clang__) && !defined(__x86_64__)
15599
- # error clang does not properly compile smult_curve25519_donna_c64.c
15774
+ # error clang does not properly handle the 128-bit type on 32-bit systems
15600
15775
  #endif
15601
15776
  #ifndef NATIVE_LITTLE_ENDIAN
15602
- # error donna_c64 currently requires a little endian CPU
15777
+ # error libsodium currently expects a little endian CPU for the 128-bit type
15603
15778
  #endif
15604
- #ifdef EMSCRIPTEN
15779
+ #ifdef __EMSCRIPTEN__
15605
15780
  # error emscripten currently supports only shift operations on integers \
15606
15781
  # larger than 64 bits
15607
15782
  #endif
15783
+ #include <stddef.h>
15608
15784
  #include <stdint.h>
15785
+ #if defined(__SIZEOF_INT128__)
15786
+ typedef unsigned __int128 uint128_t;
15787
+ #else
15609
15788
  typedef unsigned uint128_t __attribute__((mode(TI)));
15789
+ #endif
15610
15790
  void fcontract(uint128_t *t) {
15611
15791
  *t += 0x8000000000000 - 1;
15612
15792
  }
@@ -15744,12 +15924,12 @@ esac
15744
15924
  if test "x$aligned_access_required" = "xyes"; then :
15745
15925
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
15746
15926
  $as_echo "yes" >&6; }
15747
-
15748
- $as_echo "#define CPU_ALIGNED_ACCESS_REQUIRED 1" >>confdefs.h
15749
-
15750
15927
  else
15751
15928
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
15752
15929
  $as_echo "no" >&6; }
15930
+
15931
+ $as_echo "#define CPU_UNALIGNED_ACCESS 1" >>confdefs.h
15932
+
15753
15933
  fi
15754
15934
 
15755
15935
 
@@ -16356,6 +16536,10 @@ if test -z "${HAVE_AMD64_ASM_TRUE}" && test -z "${HAVE_AMD64_ASM_FALSE}"; then
16356
16536
  as_fn_error $? "conditional \"HAVE_AMD64_ASM\" was never defined.
16357
16537
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
16358
16538
  fi
16539
+ if test -z "${HAVE_AVX_ASM_TRUE}" && test -z "${HAVE_AVX_ASM_FALSE}"; then
16540
+ as_fn_error $? "conditional \"HAVE_AVX_ASM\" was never defined.
16541
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
16542
+ fi
16359
16543
  if test -z "${HAVE_TI_MODE_TRUE}" && test -z "${HAVE_TI_MODE_FALSE}"; then
16360
16544
  as_fn_error $? "conditional \"HAVE_TI_MODE\" was never defined.
16361
16545
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -16769,7 +16953,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
16769
16953
  # report actual input values of CONFIG_FILES etc. instead of their
16770
16954
  # values after options handling.
16771
16955
  ac_log="
16772
- This file was extended by libsodium $as_me 1.0.6, which was
16956
+ This file was extended by libsodium $as_me 1.0.7, which was
16773
16957
  generated by GNU Autoconf 2.69. Invocation command line was
16774
16958
 
16775
16959
  CONFIG_FILES = $CONFIG_FILES
@@ -16827,7 +17011,7 @@ _ACEOF
16827
17011
  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
16828
17012
  ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
16829
17013
  ac_cs_version="\\
16830
- libsodium config.status 1.0.6
17014
+ libsodium config.status 1.0.7
16831
17015
  configured by $0, generated by GNU Autoconf 2.69,
16832
17016
  with options \\"\$ac_cs_config\\"
16833
17017
 
@@ -1,5 +1,5 @@
1
1
  AC_PREREQ([2.65])
2
- AC_INIT([libsodium],[1.0.6],
2
+ AC_INIT([libsodium],[1.0.7],
3
3
  [https://github.com/jedisct1/libsodium/issues],
4
4
  [libsodium],
5
5
  [https://github.com/jedisct1/libsodium])
@@ -16,10 +16,10 @@ AC_SUBST(VERSION)
16
16
  ISODATE=`date +%Y-%m-%d`
17
17
  AC_SUBST(ISODATE)
18
18
 
19
- SODIUM_LIBRARY_VERSION_MAJOR=8
19
+ SODIUM_LIBRARY_VERSION_MAJOR=9
20
20
  SODIUM_LIBRARY_VERSION_MINOR=0
21
- DLL_VERSION=7
22
- SODIUM_LIBRARY_VERSION=17:0:0
21
+ DLL_VERSION=8
22
+ SODIUM_LIBRARY_VERSION=18:0:0
23
23
  # | | |
24
24
  # +------+ | +---+
25
25
  # | | |
@@ -135,6 +135,14 @@ AC_ARG_ENABLE(debug,
135
135
  ])
136
136
  ])
137
137
 
138
+ AC_ARG_ENABLE(opt,
139
+ [AS_HELP_STRING(--enable-opt,Optimize for the native CPU - The resulting library will be faster but not portable)],
140
+ [
141
+ AS_IF([test "x$enableval" = "xyes"], [
142
+ CFLAGS="$CFLAGS -flto -march=native"
143
+ LDFLAGS="$LDFLAGS -flto -march=native"])
144
+ ])
145
+
138
146
  AC_SUBST([MAINT])
139
147
 
140
148
  dnl Checks
@@ -331,6 +339,19 @@ AS_IF([test "x$EMSCRIPTEN" = "x"],[
331
339
  [AC_MSG_RESULT(no)])
332
340
  CFLAGS="$oldcflags"
333
341
 
342
+ oldcflags="$CFLAGS"
343
+ AX_CHECK_COMPILE_FLAG([-mavx], [CFLAGS="$CFLAGS -mavx"])
344
+ AC_MSG_CHECKING(for AVX instructions set)
345
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
346
+ #pragma GCC target("avx")
347
+ #include <immintrin.h>
348
+ ]], [[ _mm256_zeroall(); ]])],
349
+ [AC_MSG_RESULT(yes)
350
+ AC_DEFINE([HAVE_AVXINTRIN_H], [1], [AVX is available])
351
+ AX_CHECK_COMPILE_FLAG([-mavx], [CFLAGS_AVX="-mavx"])],
352
+ [AC_MSG_RESULT(no)])
353
+ CFLAGS="$oldcflags"
354
+
334
355
  oldcflags="$CFLAGS"
335
356
  AX_CHECK_COMPILE_FLAG([-maes], [CFLAGS="$CFLAGS -maes"])
336
357
  AX_CHECK_COMPILE_FLAG([-mpclmul], [CFLAGS="$CFLAGS -mpclmul"])
@@ -386,7 +407,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
386
407
 
387
408
  HAVE_AMD64_ASM_V=0
388
409
  AS_IF([test "$enable_asm" != "no"],[
389
- AC_MSG_CHECKING(whether we should use x86_64 asm code)
410
+ AC_MSG_CHECKING(whether we can use x86_64 asm code)
390
411
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
391
412
  ]], [[
392
413
  #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
@@ -397,34 +418,68 @@ AS_IF([test "$enable_asm" != "no"],[
397
418
  #else
398
419
  # error !x86_64
399
420
  #endif
400
- __asm__("pxor %xmm12,%xmm6");
421
+ unsigned char i = 0, o = 0, t;
422
+ __asm__ __volatile__ ("pxor %%xmm12, %%xmm6 \n"
423
+ "movb (%[i]), %[t] \n"
424
+ "addb %[t], (%[o]) \n"
425
+ : [t] "=&r"(t)
426
+ : [o] "D"(&o), [i] "S"(&i)
427
+ : "memory", "flags", "cc");
401
428
  ]])],
402
429
  [AC_MSG_RESULT(yes)
403
- AC_DEFINE([HAVE_AMD64_ASM], [1], [x86_64 asm code should be used])
430
+ AC_DEFINE([HAVE_AMD64_ASM], [1], [x86_64 asm code can be used])
404
431
  HAVE_AMD64_ASM_V=1],
405
432
  [AC_MSG_RESULT(no)])
406
433
  ])
407
434
  AM_CONDITIONAL([HAVE_AMD64_ASM], [test $HAVE_AMD64_ASM_V = 1])
408
435
  AC_SUBST(HAVE_AMD64_ASM_V)
409
436
 
437
+ HAVE_AVX_ASM_V=0
438
+ AS_IF([test "$enable_asm" != "no"],[
439
+ AC_MSG_CHECKING(whether we can assemble AVX opcodes)
440
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
441
+ ]], [[
442
+ #if defined(__amd64) || defined(__amd64__) || defined(__x86_64__)
443
+ # if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__MINGW64__) || defined(_WIN32) || defined(_WIN64)
444
+ # error Windows x86_64 calling conventions are not supported yet
445
+ # endif
446
+ /* neat */
447
+ #else
448
+ # error !x86_64
449
+ #endif
450
+ __asm__ __volatile__ ("vpunpcklqdq %xmm0,%xmm13,%xmm0");
451
+ ]])],
452
+ [AC_MSG_RESULT(yes)
453
+ AC_DEFINE([HAVE_AVX_ASM], [1], [AVX opcodes are supported])
454
+ HAVE_AVX_ASM_V=1],
455
+ [AC_MSG_RESULT(no)])
456
+ ])
457
+ AM_CONDITIONAL([HAVE_AVX_ASM], [test $HAVE_AVX_ASM_V = 1])
458
+ AC_SUBST(HAVE_AVX_ASM_V)
459
+
410
460
  AC_MSG_CHECKING(for 128-bit arithmetic)
411
461
  HAVE_TI_MODE_V=0
412
462
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
413
- #ifndef __GNUC__
414
- # error mode(TI) is a gcc extension
463
+ #if !defined(__GNUC__) && !defined(__SIZEOF_INT128__)
464
+ # error mode(TI) is a gcc extension, and __int128 is not available
415
465
  #endif
416
466
  #if defined(__clang__) && !defined(__x86_64__)
417
- # error clang does not properly compile smult_curve25519_donna_c64.c
467
+ # error clang does not properly handle the 128-bit type on 32-bit systems
418
468
  #endif
419
469
  #ifndef NATIVE_LITTLE_ENDIAN
420
- # error donna_c64 currently requires a little endian CPU
470
+ # error libsodium currently expects a little endian CPU for the 128-bit type
421
471
  #endif
422
- #ifdef EMSCRIPTEN
472
+ #ifdef __EMSCRIPTEN__
423
473
  # error emscripten currently supports only shift operations on integers \
424
474
  # larger than 64 bits
425
475
  #endif
476
+ #include <stddef.h>
426
477
  #include <stdint.h>
478
+ #if defined(__SIZEOF_INT128__)
479
+ typedef unsigned __int128 uint128_t;
480
+ #else
427
481
  typedef unsigned uint128_t __attribute__((mode(TI)));
482
+ #endif
428
483
  void fcontract(uint128_t *t) {
429
484
  *t += 0x8000000000000 - 1;
430
485
  }
@@ -478,9 +533,9 @@ AS_CASE([$host_cpu],
478
533
  ]], [[]])], [aligned_access_required=no], [])]
479
534
  )
480
535
  AS_IF([test "x$aligned_access_required" = "xyes"],
481
- [AC_MSG_RESULT(yes)
482
- AC_DEFINE([CPU_ALIGNED_ACCESS_REQUIRED], [1], [data alignment is required])],
483
- [AC_MSG_RESULT(no)])
536
+ [AC_MSG_RESULT(yes)],
537
+ [AC_MSG_RESULT(no)
538
+ AC_DEFINE([CPU_UNALIGNED_ACCESS], [1], [unaligned memory access is supported])])
484
539
 
485
540
  dnl Checks for functions and headers
486
541