ring-native 0.0.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 (261) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +3 -0
  4. data/README.md +22 -0
  5. data/Rakefile +1 -0
  6. data/ext/ring/extconf.rb +29 -0
  7. data/lib/ring/native.rb +8 -0
  8. data/lib/ring/native/version.rb +5 -0
  9. data/ring-native.gemspec +25 -0
  10. data/vendor/ring/BUILDING.md +40 -0
  11. data/vendor/ring/Cargo.toml +43 -0
  12. data/vendor/ring/LICENSE +185 -0
  13. data/vendor/ring/Makefile +35 -0
  14. data/vendor/ring/PORTING.md +163 -0
  15. data/vendor/ring/README.md +113 -0
  16. data/vendor/ring/STYLE.md +197 -0
  17. data/vendor/ring/appveyor.yml +27 -0
  18. data/vendor/ring/build.rs +108 -0
  19. data/vendor/ring/crypto/aes/aes.c +1142 -0
  20. data/vendor/ring/crypto/aes/aes_test.Windows.vcxproj +25 -0
  21. data/vendor/ring/crypto/aes/aes_test.cc +93 -0
  22. data/vendor/ring/crypto/aes/asm/aes-586.pl +2368 -0
  23. data/vendor/ring/crypto/aes/asm/aes-armv4.pl +1249 -0
  24. data/vendor/ring/crypto/aes/asm/aes-x86_64.pl +2246 -0
  25. data/vendor/ring/crypto/aes/asm/aesni-x86.pl +1318 -0
  26. data/vendor/ring/crypto/aes/asm/aesni-x86_64.pl +2084 -0
  27. data/vendor/ring/crypto/aes/asm/aesv8-armx.pl +675 -0
  28. data/vendor/ring/crypto/aes/asm/bsaes-armv7.pl +1364 -0
  29. data/vendor/ring/crypto/aes/asm/bsaes-x86_64.pl +1565 -0
  30. data/vendor/ring/crypto/aes/asm/vpaes-x86.pl +841 -0
  31. data/vendor/ring/crypto/aes/asm/vpaes-x86_64.pl +1116 -0
  32. data/vendor/ring/crypto/aes/internal.h +87 -0
  33. data/vendor/ring/crypto/aes/mode_wrappers.c +61 -0
  34. data/vendor/ring/crypto/bn/add.c +394 -0
  35. data/vendor/ring/crypto/bn/asm/armv4-mont.pl +694 -0
  36. data/vendor/ring/crypto/bn/asm/armv8-mont.pl +1503 -0
  37. data/vendor/ring/crypto/bn/asm/bn-586.pl +774 -0
  38. data/vendor/ring/crypto/bn/asm/co-586.pl +287 -0
  39. data/vendor/ring/crypto/bn/asm/rsaz-avx2.pl +1882 -0
  40. data/vendor/ring/crypto/bn/asm/x86-mont.pl +592 -0
  41. data/vendor/ring/crypto/bn/asm/x86_64-gcc.c +599 -0
  42. data/vendor/ring/crypto/bn/asm/x86_64-mont.pl +1393 -0
  43. data/vendor/ring/crypto/bn/asm/x86_64-mont5.pl +3507 -0
  44. data/vendor/ring/crypto/bn/bn.c +352 -0
  45. data/vendor/ring/crypto/bn/bn_asn1.c +74 -0
  46. data/vendor/ring/crypto/bn/bn_test.Windows.vcxproj +25 -0
  47. data/vendor/ring/crypto/bn/bn_test.cc +1696 -0
  48. data/vendor/ring/crypto/bn/cmp.c +200 -0
  49. data/vendor/ring/crypto/bn/convert.c +433 -0
  50. data/vendor/ring/crypto/bn/ctx.c +311 -0
  51. data/vendor/ring/crypto/bn/div.c +594 -0
  52. data/vendor/ring/crypto/bn/exponentiation.c +1335 -0
  53. data/vendor/ring/crypto/bn/gcd.c +711 -0
  54. data/vendor/ring/crypto/bn/generic.c +1019 -0
  55. data/vendor/ring/crypto/bn/internal.h +316 -0
  56. data/vendor/ring/crypto/bn/montgomery.c +516 -0
  57. data/vendor/ring/crypto/bn/mul.c +888 -0
  58. data/vendor/ring/crypto/bn/prime.c +829 -0
  59. data/vendor/ring/crypto/bn/random.c +334 -0
  60. data/vendor/ring/crypto/bn/rsaz_exp.c +262 -0
  61. data/vendor/ring/crypto/bn/rsaz_exp.h +53 -0
  62. data/vendor/ring/crypto/bn/shift.c +276 -0
  63. data/vendor/ring/crypto/bytestring/bytestring_test.Windows.vcxproj +25 -0
  64. data/vendor/ring/crypto/bytestring/bytestring_test.cc +421 -0
  65. data/vendor/ring/crypto/bytestring/cbb.c +399 -0
  66. data/vendor/ring/crypto/bytestring/cbs.c +227 -0
  67. data/vendor/ring/crypto/bytestring/internal.h +46 -0
  68. data/vendor/ring/crypto/chacha/chacha_generic.c +140 -0
  69. data/vendor/ring/crypto/chacha/chacha_vec.c +323 -0
  70. data/vendor/ring/crypto/chacha/chacha_vec_arm.S +1447 -0
  71. data/vendor/ring/crypto/chacha/chacha_vec_arm_generate.go +153 -0
  72. data/vendor/ring/crypto/cipher/cipher_test.Windows.vcxproj +25 -0
  73. data/vendor/ring/crypto/cipher/e_aes.c +390 -0
  74. data/vendor/ring/crypto/cipher/e_chacha20poly1305.c +208 -0
  75. data/vendor/ring/crypto/cipher/internal.h +173 -0
  76. data/vendor/ring/crypto/cipher/test/aes_128_gcm_tests.txt +543 -0
  77. data/vendor/ring/crypto/cipher/test/aes_128_key_wrap_tests.txt +9 -0
  78. data/vendor/ring/crypto/cipher/test/aes_256_gcm_tests.txt +475 -0
  79. data/vendor/ring/crypto/cipher/test/aes_256_key_wrap_tests.txt +23 -0
  80. data/vendor/ring/crypto/cipher/test/chacha20_poly1305_old_tests.txt +422 -0
  81. data/vendor/ring/crypto/cipher/test/chacha20_poly1305_tests.txt +484 -0
  82. data/vendor/ring/crypto/cipher/test/cipher_test.txt +100 -0
  83. data/vendor/ring/crypto/constant_time_test.Windows.vcxproj +25 -0
  84. data/vendor/ring/crypto/constant_time_test.c +304 -0
  85. data/vendor/ring/crypto/cpu-arm-asm.S +32 -0
  86. data/vendor/ring/crypto/cpu-arm.c +199 -0
  87. data/vendor/ring/crypto/cpu-intel.c +261 -0
  88. data/vendor/ring/crypto/crypto.c +151 -0
  89. data/vendor/ring/crypto/curve25519/asm/x25519-arm.S +2118 -0
  90. data/vendor/ring/crypto/curve25519/curve25519.c +4888 -0
  91. data/vendor/ring/crypto/curve25519/x25519_test.cc +128 -0
  92. data/vendor/ring/crypto/digest/md32_common.h +181 -0
  93. data/vendor/ring/crypto/ec/asm/p256-x86_64-asm.pl +2725 -0
  94. data/vendor/ring/crypto/ec/ec.c +193 -0
  95. data/vendor/ring/crypto/ec/ec_curves.c +61 -0
  96. data/vendor/ring/crypto/ec/ec_key.c +228 -0
  97. data/vendor/ring/crypto/ec/ec_montgomery.c +114 -0
  98. data/vendor/ring/crypto/ec/example_mul.Windows.vcxproj +25 -0
  99. data/vendor/ring/crypto/ec/internal.h +243 -0
  100. data/vendor/ring/crypto/ec/oct.c +253 -0
  101. data/vendor/ring/crypto/ec/p256-64.c +1794 -0
  102. data/vendor/ring/crypto/ec/p256-x86_64-table.h +9548 -0
  103. data/vendor/ring/crypto/ec/p256-x86_64.c +509 -0
  104. data/vendor/ring/crypto/ec/simple.c +1007 -0
  105. data/vendor/ring/crypto/ec/util-64.c +183 -0
  106. data/vendor/ring/crypto/ec/wnaf.c +508 -0
  107. data/vendor/ring/crypto/ecdh/ecdh.c +155 -0
  108. data/vendor/ring/crypto/ecdsa/ecdsa.c +304 -0
  109. data/vendor/ring/crypto/ecdsa/ecdsa_asn1.c +193 -0
  110. data/vendor/ring/crypto/ecdsa/ecdsa_test.Windows.vcxproj +25 -0
  111. data/vendor/ring/crypto/ecdsa/ecdsa_test.cc +327 -0
  112. data/vendor/ring/crypto/header_removed.h +17 -0
  113. data/vendor/ring/crypto/internal.h +495 -0
  114. data/vendor/ring/crypto/libring.Windows.vcxproj +101 -0
  115. data/vendor/ring/crypto/mem.c +98 -0
  116. data/vendor/ring/crypto/modes/asm/aesni-gcm-x86_64.pl +1045 -0
  117. data/vendor/ring/crypto/modes/asm/ghash-armv4.pl +517 -0
  118. data/vendor/ring/crypto/modes/asm/ghash-x86.pl +1393 -0
  119. data/vendor/ring/crypto/modes/asm/ghash-x86_64.pl +1741 -0
  120. data/vendor/ring/crypto/modes/asm/ghashv8-armx.pl +422 -0
  121. data/vendor/ring/crypto/modes/ctr.c +226 -0
  122. data/vendor/ring/crypto/modes/gcm.c +1206 -0
  123. data/vendor/ring/crypto/modes/gcm_test.Windows.vcxproj +25 -0
  124. data/vendor/ring/crypto/modes/gcm_test.c +348 -0
  125. data/vendor/ring/crypto/modes/internal.h +299 -0
  126. data/vendor/ring/crypto/perlasm/arm-xlate.pl +170 -0
  127. data/vendor/ring/crypto/perlasm/readme +100 -0
  128. data/vendor/ring/crypto/perlasm/x86_64-xlate.pl +1164 -0
  129. data/vendor/ring/crypto/perlasm/x86asm.pl +292 -0
  130. data/vendor/ring/crypto/perlasm/x86gas.pl +263 -0
  131. data/vendor/ring/crypto/perlasm/x86masm.pl +200 -0
  132. data/vendor/ring/crypto/perlasm/x86nasm.pl +187 -0
  133. data/vendor/ring/crypto/poly1305/poly1305.c +331 -0
  134. data/vendor/ring/crypto/poly1305/poly1305_arm.c +301 -0
  135. data/vendor/ring/crypto/poly1305/poly1305_arm_asm.S +2015 -0
  136. data/vendor/ring/crypto/poly1305/poly1305_test.Windows.vcxproj +25 -0
  137. data/vendor/ring/crypto/poly1305/poly1305_test.cc +80 -0
  138. data/vendor/ring/crypto/poly1305/poly1305_test.txt +52 -0
  139. data/vendor/ring/crypto/poly1305/poly1305_vec.c +892 -0
  140. data/vendor/ring/crypto/rand/asm/rdrand-x86_64.pl +75 -0
  141. data/vendor/ring/crypto/rand/internal.h +32 -0
  142. data/vendor/ring/crypto/rand/rand.c +189 -0
  143. data/vendor/ring/crypto/rand/urandom.c +219 -0
  144. data/vendor/ring/crypto/rand/windows.c +56 -0
  145. data/vendor/ring/crypto/refcount_c11.c +66 -0
  146. data/vendor/ring/crypto/refcount_lock.c +53 -0
  147. data/vendor/ring/crypto/refcount_test.Windows.vcxproj +25 -0
  148. data/vendor/ring/crypto/refcount_test.c +58 -0
  149. data/vendor/ring/crypto/rsa/blinding.c +462 -0
  150. data/vendor/ring/crypto/rsa/internal.h +108 -0
  151. data/vendor/ring/crypto/rsa/padding.c +300 -0
  152. data/vendor/ring/crypto/rsa/rsa.c +450 -0
  153. data/vendor/ring/crypto/rsa/rsa_asn1.c +261 -0
  154. data/vendor/ring/crypto/rsa/rsa_impl.c +944 -0
  155. data/vendor/ring/crypto/rsa/rsa_test.Windows.vcxproj +25 -0
  156. data/vendor/ring/crypto/rsa/rsa_test.cc +437 -0
  157. data/vendor/ring/crypto/sha/asm/sha-armv8.pl +436 -0
  158. data/vendor/ring/crypto/sha/asm/sha-x86_64.pl +2390 -0
  159. data/vendor/ring/crypto/sha/asm/sha256-586.pl +1275 -0
  160. data/vendor/ring/crypto/sha/asm/sha256-armv4.pl +735 -0
  161. data/vendor/ring/crypto/sha/asm/sha256-armv8.pl +14 -0
  162. data/vendor/ring/crypto/sha/asm/sha256-x86_64.pl +14 -0
  163. data/vendor/ring/crypto/sha/asm/sha512-586.pl +911 -0
  164. data/vendor/ring/crypto/sha/asm/sha512-armv4.pl +666 -0
  165. data/vendor/ring/crypto/sha/asm/sha512-armv8.pl +14 -0
  166. data/vendor/ring/crypto/sha/asm/sha512-x86_64.pl +14 -0
  167. data/vendor/ring/crypto/sha/sha1.c +271 -0
  168. data/vendor/ring/crypto/sha/sha256.c +204 -0
  169. data/vendor/ring/crypto/sha/sha512.c +355 -0
  170. data/vendor/ring/crypto/test/file_test.cc +326 -0
  171. data/vendor/ring/crypto/test/file_test.h +181 -0
  172. data/vendor/ring/crypto/test/malloc.cc +150 -0
  173. data/vendor/ring/crypto/test/scoped_types.h +95 -0
  174. data/vendor/ring/crypto/test/test.Windows.vcxproj +35 -0
  175. data/vendor/ring/crypto/test/test_util.cc +46 -0
  176. data/vendor/ring/crypto/test/test_util.h +41 -0
  177. data/vendor/ring/crypto/thread_none.c +55 -0
  178. data/vendor/ring/crypto/thread_pthread.c +165 -0
  179. data/vendor/ring/crypto/thread_test.Windows.vcxproj +25 -0
  180. data/vendor/ring/crypto/thread_test.c +200 -0
  181. data/vendor/ring/crypto/thread_win.c +282 -0
  182. data/vendor/ring/examples/checkdigest.rs +103 -0
  183. data/vendor/ring/include/openssl/aes.h +121 -0
  184. data/vendor/ring/include/openssl/arm_arch.h +129 -0
  185. data/vendor/ring/include/openssl/base.h +156 -0
  186. data/vendor/ring/include/openssl/bn.h +794 -0
  187. data/vendor/ring/include/openssl/buffer.h +18 -0
  188. data/vendor/ring/include/openssl/bytestring.h +235 -0
  189. data/vendor/ring/include/openssl/chacha.h +37 -0
  190. data/vendor/ring/include/openssl/cmac.h +76 -0
  191. data/vendor/ring/include/openssl/cpu.h +184 -0
  192. data/vendor/ring/include/openssl/crypto.h +43 -0
  193. data/vendor/ring/include/openssl/curve25519.h +88 -0
  194. data/vendor/ring/include/openssl/ec.h +225 -0
  195. data/vendor/ring/include/openssl/ec_key.h +129 -0
  196. data/vendor/ring/include/openssl/ecdh.h +110 -0
  197. data/vendor/ring/include/openssl/ecdsa.h +156 -0
  198. data/vendor/ring/include/openssl/err.h +201 -0
  199. data/vendor/ring/include/openssl/mem.h +101 -0
  200. data/vendor/ring/include/openssl/obj_mac.h +71 -0
  201. data/vendor/ring/include/openssl/opensslfeatures.h +68 -0
  202. data/vendor/ring/include/openssl/opensslv.h +18 -0
  203. data/vendor/ring/include/openssl/ossl_typ.h +18 -0
  204. data/vendor/ring/include/openssl/poly1305.h +51 -0
  205. data/vendor/ring/include/openssl/rand.h +70 -0
  206. data/vendor/ring/include/openssl/rsa.h +399 -0
  207. data/vendor/ring/include/openssl/thread.h +133 -0
  208. data/vendor/ring/include/openssl/type_check.h +71 -0
  209. data/vendor/ring/mk/Common.props +63 -0
  210. data/vendor/ring/mk/Windows.props +42 -0
  211. data/vendor/ring/mk/WindowsTest.props +18 -0
  212. data/vendor/ring/mk/appveyor.bat +62 -0
  213. data/vendor/ring/mk/bottom_of_makefile.mk +54 -0
  214. data/vendor/ring/mk/ring.mk +266 -0
  215. data/vendor/ring/mk/top_of_makefile.mk +214 -0
  216. data/vendor/ring/mk/travis.sh +40 -0
  217. data/vendor/ring/mk/update-travis-yml.py +229 -0
  218. data/vendor/ring/ring.sln +153 -0
  219. data/vendor/ring/src/aead.rs +682 -0
  220. data/vendor/ring/src/agreement.rs +248 -0
  221. data/vendor/ring/src/c.rs +129 -0
  222. data/vendor/ring/src/constant_time.rs +37 -0
  223. data/vendor/ring/src/der.rs +96 -0
  224. data/vendor/ring/src/digest.rs +690 -0
  225. data/vendor/ring/src/digest_tests.txt +57 -0
  226. data/vendor/ring/src/ecc.rs +28 -0
  227. data/vendor/ring/src/ecc_build.rs +279 -0
  228. data/vendor/ring/src/ecc_curves.rs +117 -0
  229. data/vendor/ring/src/ed25519_tests.txt +2579 -0
  230. data/vendor/ring/src/exe_tests.rs +46 -0
  231. data/vendor/ring/src/ffi.rs +29 -0
  232. data/vendor/ring/src/file_test.rs +187 -0
  233. data/vendor/ring/src/hkdf.rs +153 -0
  234. data/vendor/ring/src/hkdf_tests.txt +59 -0
  235. data/vendor/ring/src/hmac.rs +414 -0
  236. data/vendor/ring/src/hmac_tests.txt +97 -0
  237. data/vendor/ring/src/input.rs +312 -0
  238. data/vendor/ring/src/lib.rs +41 -0
  239. data/vendor/ring/src/pbkdf2.rs +265 -0
  240. data/vendor/ring/src/pbkdf2_tests.txt +113 -0
  241. data/vendor/ring/src/polyfill.rs +57 -0
  242. data/vendor/ring/src/rand.rs +28 -0
  243. data/vendor/ring/src/signature.rs +314 -0
  244. data/vendor/ring/third-party/NIST/README.md +9 -0
  245. data/vendor/ring/third-party/NIST/SHAVS/SHA1LongMsg.rsp +263 -0
  246. data/vendor/ring/third-party/NIST/SHAVS/SHA1Monte.rsp +309 -0
  247. data/vendor/ring/third-party/NIST/SHAVS/SHA1ShortMsg.rsp +267 -0
  248. data/vendor/ring/third-party/NIST/SHAVS/SHA224LongMsg.rsp +263 -0
  249. data/vendor/ring/third-party/NIST/SHAVS/SHA224Monte.rsp +309 -0
  250. data/vendor/ring/third-party/NIST/SHAVS/SHA224ShortMsg.rsp +267 -0
  251. data/vendor/ring/third-party/NIST/SHAVS/SHA256LongMsg.rsp +263 -0
  252. data/vendor/ring/third-party/NIST/SHAVS/SHA256Monte.rsp +309 -0
  253. data/vendor/ring/third-party/NIST/SHAVS/SHA256ShortMsg.rsp +267 -0
  254. data/vendor/ring/third-party/NIST/SHAVS/SHA384LongMsg.rsp +519 -0
  255. data/vendor/ring/third-party/NIST/SHAVS/SHA384Monte.rsp +309 -0
  256. data/vendor/ring/third-party/NIST/SHAVS/SHA384ShortMsg.rsp +523 -0
  257. data/vendor/ring/third-party/NIST/SHAVS/SHA512LongMsg.rsp +519 -0
  258. data/vendor/ring/third-party/NIST/SHAVS/SHA512Monte.rsp +309 -0
  259. data/vendor/ring/third-party/NIST/SHAVS/SHA512ShortMsg.rsp +523 -0
  260. data/vendor/ring/third-party/NIST/sha256sums.txt +1 -0
  261. metadata +333 -0
@@ -0,0 +1,266 @@
1
+ # Copyright 2015 Brian Smith.
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for any
4
+ # purpose with or without fee is hereby granted, provided that the above
5
+ # copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND BRIAN SMITH AND THE AUTHORS DISCLAIM
8
+ # ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
9
+ # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL BRIAN SMITH OR THE AUTHORS
10
+ # BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
11
+ # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
12
+ # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+
15
+ RING_PREFIX ?= ring/
16
+
17
+ RING_CPPFLAGS = $(RING_THREAD_FLAGS) -I$(RING_PREFIX)include -I$(GENERATED_CODE_DIR) -D_XOPEN_SOURCE=700
18
+
19
+ RING_LDLIBS = $(RING_THREAD_FLAGS) -L$(dir $(RING_LIB)) -lring-core
20
+
21
+ RING_SRCS = $(addprefix $(RING_PREFIX), \
22
+ crypto/aes/aes.c \
23
+ crypto/aes/mode_wrappers.c \
24
+ crypto/bn/add.c \
25
+ crypto/bn/asm/x86_64-gcc.c \
26
+ crypto/bn/bn.c \
27
+ crypto/bn/bn_asn1.c \
28
+ crypto/bn/cmp.c \
29
+ crypto/bn/convert.c \
30
+ crypto/bn/ctx.c \
31
+ crypto/bn/div.c \
32
+ crypto/bn/exponentiation.c \
33
+ crypto/bn/gcd.c \
34
+ crypto/bn/generic.c \
35
+ crypto/bn/montgomery.c \
36
+ crypto/bn/mul.c \
37
+ crypto/bn/prime.c \
38
+ crypto/bn/random.c \
39
+ crypto/bn/rsaz_exp.c \
40
+ crypto/bn/shift.c \
41
+ crypto/bytestring/cbb.c \
42
+ crypto/bytestring/cbs.c \
43
+ crypto/chacha/chacha_generic.c \
44
+ crypto/chacha/chacha_vec.c \
45
+ crypto/cipher/e_aes.c \
46
+ crypto/cipher/e_chacha20poly1305.c \
47
+ crypto/cpu-arm.c \
48
+ crypto/cpu-intel.c \
49
+ crypto/crypto.c \
50
+ crypto/curve25519/curve25519.c \
51
+ crypto/ec/ec.c \
52
+ crypto/ec/ec_curves.c \
53
+ crypto/ec/ec_key.c \
54
+ crypto/ec/ec_montgomery.c \
55
+ crypto/ec/oct.c \
56
+ crypto/ec/p256-64.c \
57
+ crypto/ec/p256-x86_64.c \
58
+ crypto/ec/simple.c \
59
+ crypto/ec/util-64.c \
60
+ crypto/ec/wnaf.c \
61
+ crypto/ecdh/ecdh.c \
62
+ crypto/ecdsa/ecdsa.c \
63
+ crypto/ecdsa/ecdsa_asn1.c \
64
+ crypto/mem.c \
65
+ crypto/modes/ctr.c \
66
+ crypto/modes/gcm.c \
67
+ crypto/poly1305/poly1305.c \
68
+ crypto/poly1305/poly1305_arm.c \
69
+ crypto/poly1305/poly1305_vec.c \
70
+ crypto/rand/rand.c \
71
+ crypto/rand/urandom.c \
72
+ crypto/refcount_c11.c \
73
+ crypto/refcount_lock.c \
74
+ crypto/rsa/blinding.c \
75
+ crypto/rsa/padding.c \
76
+ crypto/rsa/rsa.c \
77
+ crypto/rsa/rsa_asn1.c \
78
+ crypto/rsa/rsa_impl.c \
79
+ crypto/sha/sha1.c \
80
+ crypto/sha/sha256.c \
81
+ crypto/sha/sha512.c \
82
+ $(NULL))
83
+
84
+ # TODO: make all .a files depend on these too.
85
+ RING_x86_SRCS = $(addprefix $(RING_PREFIX), \
86
+ crypto/aes/asm/aes-586.pl \
87
+ crypto/aes/asm/aesni-x86.pl \
88
+ crypto/aes/asm/vpaes-x86.pl \
89
+ crypto/bn/asm/bn-586.pl \
90
+ crypto/bn/asm/co-586.pl \
91
+ crypto/bn/asm/x86-mont.pl \
92
+ crypto/modes/asm/ghash-x86.pl \
93
+ crypto/sha/asm/sha256-586.pl \
94
+ crypto/sha/asm/sha512-586.pl \
95
+ $(NULL))
96
+
97
+ RING_x86_64_SRCS = $(addprefix $(RING_PREFIX), \
98
+ crypto/aes/asm/aes-x86_64.pl \
99
+ crypto/aes/asm/aesni-x86_64.pl \
100
+ crypto/aes/asm/bsaes-x86_64.pl \
101
+ crypto/aes/asm/vpaes-x86_64.pl \
102
+ crypto/bn/asm/rsaz-avx2.pl \
103
+ crypto/bn/asm/x86_64-mont.pl \
104
+ crypto/bn/asm/x86_64-mont5.pl \
105
+ crypto/ec/asm/p256-x86_64-asm.pl \
106
+ crypto/modes/asm/aesni-gcm-x86_64.pl \
107
+ crypto/modes/asm/ghash-x86_64.pl \
108
+ crypto/rand/asm/rdrand-x86_64.pl \
109
+ crypto/sha/asm/sha256-x86_64.pl \
110
+ crypto/sha/asm/sha512-x86_64.pl \
111
+ $(NULL))
112
+
113
+ RING_ARM_SHARED_SRCS = \
114
+ crypto/aes/asm/aesv8-armx.pl \
115
+ crypto/cpu-arm-asm.S \
116
+ $(NULL)
117
+
118
+ RING_arm_SRCS = $(addprefix $(RING_PREFIX), \
119
+ crypto/aes/asm/aes-armv4.pl \
120
+ crypto/aes/asm/bsaes-armv7.pl \
121
+ crypto/bn/asm/armv4-mont.pl \
122
+ crypto/modes/asm/ghash-armv4.pl \
123
+ crypto/sha/asm/sha256-armv4.pl \
124
+ crypto/sha/asm/sha512-armv4.pl \
125
+ $(RING_ARM_SHARED_SRCS) \
126
+ $(NULL))
127
+
128
+ # TODO
129
+ RING_CPPFLAGS += -D__ARM_MAX_ARCH__=7
130
+
131
+ RING_arm_SRCS += $(addprefix $(RING_PREFIX), \
132
+ crypto/chacha/chacha_vec_arm.S \
133
+ crypto/poly1305/poly1305_arm_asm.S \
134
+ $(NULL))
135
+
136
+ RING_aarch64_SRCS = $(addprefix $(RING_PREFIX), \
137
+ crypto/bn/asm/armv8-mont.pl \
138
+ crypto/modes/asm/ghashv8-armx.pl \
139
+ crypto/sha/asm/sha256-armv8.pl \
140
+ crypto/sha/asm/sha512-armv8.pl \
141
+ $(RING_ARM_SHARED_SRCS) \
142
+ $(NULL))
143
+
144
+ ifeq ($(TARGET_SYS),none)
145
+ RING_THREAD_FLAGS += -DOPENSSL_TRUSTY=1 -DOPENSSL_NO_THREADS=1
146
+ RING_SRCS += $(addprefix $(RING_PREFIX), crypto/thread_none.c)
147
+ else
148
+ RING_THREAD_FLAGS += -pthread
149
+ RING_SRCS += $(addprefix $(RING_PREFIX), crypto/thread_pthread.c)
150
+ endif
151
+
152
+ RING_ASM_OBJS = \
153
+ $(addprefix $(OBJ_PREFIX), \
154
+ $(patsubst %.pl, %.o, \
155
+ $(patsubst %.S, %.o, $(RING_$(TARGET_ARCH_NORMAL)_SRCS))))
156
+
157
+ $(RING_ASM_OBJS): CPPFLAGS += -I$(RING_PREFIX)crypto
158
+
159
+ RING_OBJS = $(addprefix $(OBJ_PREFIX), $(patsubst %.c, %.o, $(RING_SRCS)))
160
+
161
+ ifeq ($(NO_ASM),)
162
+ RING_OBJS += $(RING_ASM_OBJS)
163
+ else
164
+ RING_CPPFLAGS += -DOPENSSL_NO_ASM=1
165
+ endif
166
+
167
+ RING_LIB = $(LIB_PREFIX)libring-core.a
168
+
169
+ # Recent versions of Linux have the D flag for deterministic builds, but Darwin
170
+ # (at least) doesn't. Accroding to Debian's documentation, binutils is built
171
+ # with --enable-determnistic-archives by default and we shouldn't need to
172
+ # worry about it.
173
+ $(RING_LIB): ARFLAGS = crs
174
+ $(RING_LIB): $(RING_OBJS) $(RING_PREFIX)mk/ring.mk
175
+ $(RM) $@
176
+ $(AR) $(ARFLAGS) $@ $(filter-out $(RING_PREFIX)mk/ring.mk, $^)
177
+
178
+ RING_TEST_LIB_SRCS = \
179
+ crypto/test/file_test.cc \
180
+ crypto/test/malloc.cc \
181
+ crypto/test/test_util.cc \
182
+ $(NULL)
183
+
184
+ RING_TEST_LIB_OBJS = $(addprefix $(OBJ_PREFIX), \
185
+ $(patsubst %.c, %.o, \
186
+ $(patsubst %.cc, %.o, \
187
+ $(RING_TEST_LIB_SRCS))))
188
+
189
+ RING_TEST_MAIN_SRCS = $(addprefix $(RING_PREFIX), \
190
+ crypto/aes/aes_test.cc \
191
+ crypto/bn/bn_test.cc \
192
+ crypto/bytestring/bytestring_test.cc \
193
+ crypto/constant_time_test.c \
194
+ crypto/ecdsa/ecdsa_test.cc \
195
+ crypto/modes/gcm_test.c \
196
+ crypto/poly1305/poly1305_test.cc \
197
+ crypto/refcount_test.c \
198
+ crypto/rsa/rsa_test.cc \
199
+ crypto/thread_test.c \
200
+ $(NULL))
201
+
202
+ RING_TEST_MAIN_OBJS = $(addprefix $(OBJ_PREFIX), \
203
+ $(patsubst %.c, %.o, \
204
+ $(patsubst %.cc, %.o, \
205
+ $(RING_TEST_MAIN_SRCS))))
206
+
207
+ RING_TEST_EXES = $(RING_TEST_MAIN_OBJS:$(OBJ_PREFIX)%.o=$(EXE_PREFIX)%)
208
+
209
+ ifeq ($(TARGET_SYS),none)
210
+ $(RING_TEST_EXES): LDLIBS += --specs=rdimon.specs
211
+ endif
212
+ $(RING_TEST_EXES): LDLIBS += $(RING_LDLIBS)
213
+ $(RING_TEST_EXES): $(EXE_PREFIX)% : \
214
+ $(OBJ_PREFIX)%.o \
215
+ $(RING_LIB) \
216
+ $(RING_TEST_LIB_OBJS) \
217
+ $(NULL)
218
+ $(CXX) $(filter-out $(RING_LIB),$^) $(LDFLAGS) $(LDLIBS) $(TARGET_ARCH) -o $@
219
+
220
+ # TODO: Fix the code so -Wno- overrides are not needed.
221
+ $(RING_OBJS) \
222
+ $(RING_TEST_LIB_OBJS) \
223
+ $(RING_TEST_MAIN_OBJS) \
224
+ $(NULL): CPPFLAGS += $(RING_CPPFLAGS) \
225
+ -DBORINGSSL_IMPLEMENTATION \
226
+ -Wno-cast-qual \
227
+ -Wno-pedantic \
228
+ -Wno-sign-compare \
229
+ -Wno-unused-parameter \
230
+ -Wno-cast-align \
231
+ -Wno-format \
232
+ -Wno-format-nonliteral \
233
+ -Wno-type-limits \
234
+ $(NULL)
235
+ $(RING_OBJS) \
236
+ $(RING_TEST_LIB_OBJS) \
237
+ $(RING_TEST_MAIN_OBJS) \
238
+ $(NULL): CFLAGS += -Wno-bad-function-cast \
239
+ -Wno-nested-externs \
240
+ $(NULL)
241
+
242
+
243
+ PERLASM_LIB_SRCS = $(addprefix $(RING_PREFIX), \
244
+ crypto/perlasm/arm-xlate.pl \
245
+ crypto/perlasm/x86asm.pl \
246
+ crypto/perlasm/x86gas.pl \
247
+ crypto/perlasm/x86masm.pl \
248
+ crypto/perlasm/x86nasm.pl \
249
+ crypto/perlasm/x86_64-xlate.pl \
250
+ $(NULL))
251
+
252
+ PERL_EXECUTABLE ?= perl
253
+
254
+ # The British spelling "flavour" is used for consistency with perlasm's code.
255
+ ifeq ($(findstring darwin,$(TARGET_SYS)),darwin)
256
+ PERLASM_FLAVOUR ?= macosx
257
+ else
258
+ PERLASM_FLAVOUR ?= elf
259
+ endif
260
+
261
+ PERLASM_x86_ARGS = $(PERLASM_FLAVOUR) -fPIC -DOPENSSL_IA32_SSE2
262
+ PERLASM_x86_64_ARGS = $(PERLASM_FLAVOUR)
263
+ PERLASM_ARGS = $(PERLASM_$(TARGET_ARCH_NORMAL)_ARGS)
264
+
265
+ $(OBJ_PREFIX)%.S: %.pl $(PERLASM_LIB_SRCS)
266
+ ${PERL_EXECUTABLE} $< $(PERLASM_ARGS) > $@
@@ -0,0 +1,214 @@
1
+ # Copyright 2015 Brian Smith.
2
+ #
3
+ # Permission to use, copy, modify, and/or distribute this software for any
4
+ # purpose with or without fee is hereby granted, provided that the above
5
+ # copyright notice and this permission notice appear in all copies.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS" AND BRIAN SMITH AND THE AUTHORS DISCLAIM
8
+ # ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
9
+ # OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL BRIAN SMITH OR THE AUTHORS
10
+ # BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
11
+ # DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
12
+ # AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
+ # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
+
15
+ .DEFAULT_GOAL := all
16
+
17
+ # $(TARGET) must be of the form <arch>-<vendor>-<sys>-<abi>, except <abi> can
18
+ # omitted on Mac OS X (Darwin).
19
+ TARGET_WORDS = $(subst -, ,$(TARGET))
20
+ TARGET_ARCH_BASE = $(word 1,$(TARGET_WORDS))
21
+ TARGET_ARCH_NORMAL = \
22
+ $(strip $(if $(findstring arm, $(TARGET_ARCH_BASE)),arm, \
23
+ $(if $(filter i386 i486 i586 i686, \
24
+ $(TARGET_ARCH_BASE)),x86,$(TARGET_ARCH_BASE))))
25
+
26
+ TARGET_VENDOR = $(word 2,$(TARGET_WORDS))
27
+ TARGET_SYS = $(word 3,$(TARGET_WORDS))
28
+ TARGET_ABI = $(word 4,$(TARGET_WORDS))
29
+
30
+ # Cargo doesn't pass the ABI as part of TARGET on Mac OS X.
31
+ ifeq ($(TARGET_ABI),)
32
+ ifeq ($(findstring apple-darwin,$(TARGET_VENDOR)-$(TARGET_SYS)),apple-darwin)
33
+ TARGET_ABI = macho
34
+ else
35
+ define NEWLINE
36
+
37
+
38
+ endef
39
+ $(error TARGET must be of the form \
40
+ <arch>[<sub>]-<vendor>-<sys>-<abi>.$(NEWLINE)\
41
+ \
42
+ \ Exceptions: <abi> defaults to "macho" on Mac OS X.\
43
+ \
44
+ Linux x86 example: TARGET=i586-pc-linux-gnu $(NEWLINE)\
45
+ Mac OS X x64 example: TARGET=x86_64-apple-darwin $(NEWLINE)\
46
+ \
47
+ NOTE: Use "i586" instead of "x86".)
48
+ endif
49
+ endif
50
+
51
+ # XXX: Apple's toolchain fails to link when the |-target| arch is "x86_64",
52
+ # so just skip -target on Darwin for now.
53
+ ifneq ($(TARGET_ARCH_NORMAL)-$(findstring darwin,$(TARGET_SYS)),x86_64-darwin)
54
+ ifeq ($(findstring clang,$(CC)),clang)
55
+ DEFAULT_TARGET_ARCH = -target "$(TARGET)"
56
+ endif
57
+ endif
58
+
59
+ ifeq ($(TARGET_ARCH_NORMAL),x86)
60
+ MARCH = pentium
61
+ MINSTR = 32
62
+ else ifeq ($(TARGET_ARCH_NORMAL),x86_64)
63
+ MARCH = x86-64
64
+ MINSTR = 64
65
+ else
66
+ MARCH = $(subst _,-,$(TARGET_ARCH_BASE))
67
+ endif
68
+
69
+ ifeq ($(TARGET_ABI),eabi)
70
+ MABI = aapcs
71
+ endif
72
+
73
+ # Cortex-M0, Cortex-M0+, Cortex-M1: armv6_m
74
+ # Cortex-M3: armv7_m
75
+ # Cortex-M4, Cortex-M7: armv7e_m
76
+ ifeq ($(filter-out armv6_m armv7_m armv7e_m,$(TARGET_ARCH_BASE)),)
77
+ MINSTR = thumb
78
+ endif
79
+
80
+ # Although it isn't mentioned in the GNU Make manual, GNU Make passes
81
+ # $(TARGET_ARCH) in its implicit rules.
82
+ TARGET_ARCH += $(if $(MCPU),-mcpu=$(MCPU)) \
83
+ $(if $(MARCH),-march=$(MARCH)) \
84
+ $(if $(MABI),-mabi=$(MABI)) \
85
+ $(if $(MINSTR),-m$(MINSTR)) \
86
+ $(NULL)
87
+
88
+ ifeq ($(CC),)
89
+ $(error You must specify CC)
90
+ endif
91
+ ifeq ($(CXX),)
92
+ $(error You must specify CXX)
93
+ endif
94
+
95
+ # e.g. "clang-3.6"
96
+ COMPILER_NAME ?= $(notdir $(CC))
97
+
98
+ # Generate output to a directory like build/x86_64-unknown-linux-elf-clang-3.6.
99
+ BUILD_PREFIX_PRIMARY ?= build
100
+ BUILD_PREFIX_SUB ?= $(TARGET)-$(COMPILER_NAME)
101
+ BUILD_PREFIX ?= $(BUILD_PREFIX_PRIMARY)/$(BUILD_PREFIX_SUB)/
102
+
103
+ EXE_PREFIX ?= $(BUILD_PREFIX)test/ring/
104
+ OBJ_PREFIX ?= $(BUILD_PREFIX)obj/
105
+ LIB_PREFIX ?= $(BUILD_PREFIX)lib/
106
+
107
+ CFLAGS_STD ?= -std=c11
108
+ CXXFLAGS_STD ?= -std=c++11
109
+
110
+ CFLAGS += $(CFLAGS_STD)
111
+ CXXFLAGS += $(CXXFLAGS_STD)
112
+
113
+ # Always add full debug info and strip dead code.
114
+ CPPFLAGS += -fpic -fdata-sections -ffunction-sections
115
+ ifeq ($(findstring darwin,$(TARGET_SYS)),darwin)
116
+ # |-gfull| is required for Darwin's |-dead_strip|.
117
+ CPPFLAGS += -gfull
118
+ LDFLAGS += -fPIC -Wl,-dead_strip
119
+ else
120
+ CPPFLAGS += -g3
121
+ LDFLAGS += -Wl,--gc-sections
122
+ endif
123
+
124
+ # TODO: link-time optimization.
125
+
126
+ # Warnings
127
+
128
+ # TODO:
129
+ # -Wconversion \
130
+ # -Weverything -Wpessimizing-move, etc. \
131
+ # -Wsuggest-attribute \
132
+ # -Wstack-usage=n \
133
+ # -Wformat-signedness \
134
+ # -fsanitize=undefined \
135
+ # -Wnormalized \
136
+ # -fsized-deallocation \
137
+ # -Wmisleading-indentation \
138
+ # -Wmissing-declarations \
139
+ # -Wshadow \
140
+ # -Wsized-deallocation \
141
+ # -Wsuggest-final-types \
142
+ # -Wsuggest-final-methods \
143
+ # -Wsuggest-override \
144
+ # -Wzero-as-null-pointer-constant \
145
+ # -Wunsafe-loop-optimizations \
146
+ # -Wsign-conversion\
147
+ # -Wstrict-overflow=5 \
148
+ # -Wundef \
149
+
150
+ # TODO: clang-specific warnings
151
+
152
+ # TODO (not in clang):
153
+ # -Wmaybe-uninitialized \
154
+ # -Wtrampolines \
155
+ # -Wlogical-op \
156
+
157
+ # TODO (GCC 4.9+):
158
+ # -Wconditionally-supported
159
+ # -Wdate-time
160
+
161
+ CPPFLAGS += \
162
+ -pedantic -pedantic-errors \
163
+ \
164
+ -Wall -Werror \
165
+ -Wextra \
166
+ \
167
+ -Wcast-align \
168
+ -Wcast-qual \
169
+ -Wenum-compare \
170
+ -Wfloat-equal \
171
+ -Wformat=2 \
172
+ -Winvalid-pch \
173
+ -Wmissing-field-initializers \
174
+ -Wmissing-include-dirs \
175
+ -Wredundant-decls \
176
+ -Wsign-compare \
177
+ -Wuninitialized \
178
+ -Wwrite-strings \
179
+ $(NULL)
180
+
181
+ # XXX: Stack protector causes linking failures for armv7-*-none-eabi and
182
+ # it's use seems questionable for that kind of target anyway.
183
+ # The launchpad.net arm-none-eabi-gcc toolchain (at least) uses -fshort-enums.
184
+ ifneq ($(TARGET_SYS),none)
185
+ CPPFLAGS += -fstack-protector
186
+ endif
187
+
188
+
189
+ # TODO (not in clang):
190
+ # -Wjump-misses-init
191
+ # -Wold-style-declaration \
192
+ # -Wold-style-definition
193
+ CFLAGS += \
194
+ -Wbad-function-cast \
195
+ -Wmissing-field-initializers \
196
+ -Wnested-externs \
197
+ -Wstrict-prototypes \
198
+ $(NULL)
199
+
200
+ CMAKE_BUILD_TYPE ?= RELWITHDEBINFO
201
+
202
+ # Although we don't use CMake, we use a variable CMAKE_BUILD_TYPE with similar
203
+ # semantics to the CMake variable of that name.
204
+ ifeq ($(CMAKE_BUILD_TYPE),MINSIZEREL)
205
+ CPPFLAGS += -DNDEBUG -Os
206
+ else ifeq ($(CMAKE_BUILD_TYPE),RELEASE)
207
+ CPPFLAGS += -DNDEBUG -O3
208
+ else ifeq ($(CMAKE_BUILD_TYPE),RELWITHDEBINFO)
209
+ CPPFLAGS += -DNDEBUG -O3
210
+ else ifeq ($(CMAKE_BUILD_TYPE),DEBUG)
211
+ # Do nothing
212
+ else
213
+ $(error invalid value for CMAKE_BUILD_TYPE: $(CMAKE_BUILD_TYPE))
214
+ endif