ring-native 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGES.md +7 -0
  4. data/Makefile +5 -0
  5. data/README.md +12 -5
  6. data/Rakefile +4 -0
  7. data/ext/ring/extconf.rb +4 -5
  8. data/lib/ring/native.rb +3 -1
  9. data/lib/ring/native/version.rb +5 -1
  10. data/ring-native.gemspec +6 -6
  11. data/vendor/ring-ffi/Cargo.lock +26 -0
  12. data/vendor/ring-ffi/Cargo.toml +45 -0
  13. data/vendor/ring-ffi/LICENSE +16 -0
  14. data/vendor/ring-ffi/README.md +59 -0
  15. data/vendor/ring-ffi/src/lib.rs +79 -0
  16. metadata +10 -255
  17. data/vendor/ring/BUILDING.md +0 -40
  18. data/vendor/ring/Cargo.toml +0 -43
  19. data/vendor/ring/LICENSE +0 -185
  20. data/vendor/ring/Makefile +0 -35
  21. data/vendor/ring/PORTING.md +0 -163
  22. data/vendor/ring/README.md +0 -113
  23. data/vendor/ring/STYLE.md +0 -197
  24. data/vendor/ring/appveyor.yml +0 -27
  25. data/vendor/ring/build.rs +0 -108
  26. data/vendor/ring/crypto/aes/aes.c +0 -1142
  27. data/vendor/ring/crypto/aes/aes_test.Windows.vcxproj +0 -25
  28. data/vendor/ring/crypto/aes/aes_test.cc +0 -93
  29. data/vendor/ring/crypto/aes/asm/aes-586.pl +0 -2368
  30. data/vendor/ring/crypto/aes/asm/aes-armv4.pl +0 -1249
  31. data/vendor/ring/crypto/aes/asm/aes-x86_64.pl +0 -2246
  32. data/vendor/ring/crypto/aes/asm/aesni-x86.pl +0 -1318
  33. data/vendor/ring/crypto/aes/asm/aesni-x86_64.pl +0 -2084
  34. data/vendor/ring/crypto/aes/asm/aesv8-armx.pl +0 -675
  35. data/vendor/ring/crypto/aes/asm/bsaes-armv7.pl +0 -1364
  36. data/vendor/ring/crypto/aes/asm/bsaes-x86_64.pl +0 -1565
  37. data/vendor/ring/crypto/aes/asm/vpaes-x86.pl +0 -841
  38. data/vendor/ring/crypto/aes/asm/vpaes-x86_64.pl +0 -1116
  39. data/vendor/ring/crypto/aes/internal.h +0 -87
  40. data/vendor/ring/crypto/aes/mode_wrappers.c +0 -61
  41. data/vendor/ring/crypto/bn/add.c +0 -394
  42. data/vendor/ring/crypto/bn/asm/armv4-mont.pl +0 -694
  43. data/vendor/ring/crypto/bn/asm/armv8-mont.pl +0 -1503
  44. data/vendor/ring/crypto/bn/asm/bn-586.pl +0 -774
  45. data/vendor/ring/crypto/bn/asm/co-586.pl +0 -287
  46. data/vendor/ring/crypto/bn/asm/rsaz-avx2.pl +0 -1882
  47. data/vendor/ring/crypto/bn/asm/x86-mont.pl +0 -592
  48. data/vendor/ring/crypto/bn/asm/x86_64-gcc.c +0 -599
  49. data/vendor/ring/crypto/bn/asm/x86_64-mont.pl +0 -1393
  50. data/vendor/ring/crypto/bn/asm/x86_64-mont5.pl +0 -3507
  51. data/vendor/ring/crypto/bn/bn.c +0 -352
  52. data/vendor/ring/crypto/bn/bn_asn1.c +0 -74
  53. data/vendor/ring/crypto/bn/bn_test.Windows.vcxproj +0 -25
  54. data/vendor/ring/crypto/bn/bn_test.cc +0 -1696
  55. data/vendor/ring/crypto/bn/cmp.c +0 -200
  56. data/vendor/ring/crypto/bn/convert.c +0 -433
  57. data/vendor/ring/crypto/bn/ctx.c +0 -311
  58. data/vendor/ring/crypto/bn/div.c +0 -594
  59. data/vendor/ring/crypto/bn/exponentiation.c +0 -1335
  60. data/vendor/ring/crypto/bn/gcd.c +0 -711
  61. data/vendor/ring/crypto/bn/generic.c +0 -1019
  62. data/vendor/ring/crypto/bn/internal.h +0 -316
  63. data/vendor/ring/crypto/bn/montgomery.c +0 -516
  64. data/vendor/ring/crypto/bn/mul.c +0 -888
  65. data/vendor/ring/crypto/bn/prime.c +0 -829
  66. data/vendor/ring/crypto/bn/random.c +0 -334
  67. data/vendor/ring/crypto/bn/rsaz_exp.c +0 -262
  68. data/vendor/ring/crypto/bn/rsaz_exp.h +0 -53
  69. data/vendor/ring/crypto/bn/shift.c +0 -276
  70. data/vendor/ring/crypto/bytestring/bytestring_test.Windows.vcxproj +0 -25
  71. data/vendor/ring/crypto/bytestring/bytestring_test.cc +0 -421
  72. data/vendor/ring/crypto/bytestring/cbb.c +0 -399
  73. data/vendor/ring/crypto/bytestring/cbs.c +0 -227
  74. data/vendor/ring/crypto/bytestring/internal.h +0 -46
  75. data/vendor/ring/crypto/chacha/chacha_generic.c +0 -140
  76. data/vendor/ring/crypto/chacha/chacha_vec.c +0 -323
  77. data/vendor/ring/crypto/chacha/chacha_vec_arm.S +0 -1447
  78. data/vendor/ring/crypto/chacha/chacha_vec_arm_generate.go +0 -153
  79. data/vendor/ring/crypto/cipher/cipher_test.Windows.vcxproj +0 -25
  80. data/vendor/ring/crypto/cipher/e_aes.c +0 -390
  81. data/vendor/ring/crypto/cipher/e_chacha20poly1305.c +0 -208
  82. data/vendor/ring/crypto/cipher/internal.h +0 -173
  83. data/vendor/ring/crypto/cipher/test/aes_128_gcm_tests.txt +0 -543
  84. data/vendor/ring/crypto/cipher/test/aes_128_key_wrap_tests.txt +0 -9
  85. data/vendor/ring/crypto/cipher/test/aes_256_gcm_tests.txt +0 -475
  86. data/vendor/ring/crypto/cipher/test/aes_256_key_wrap_tests.txt +0 -23
  87. data/vendor/ring/crypto/cipher/test/chacha20_poly1305_old_tests.txt +0 -422
  88. data/vendor/ring/crypto/cipher/test/chacha20_poly1305_tests.txt +0 -484
  89. data/vendor/ring/crypto/cipher/test/cipher_test.txt +0 -100
  90. data/vendor/ring/crypto/constant_time_test.Windows.vcxproj +0 -25
  91. data/vendor/ring/crypto/constant_time_test.c +0 -304
  92. data/vendor/ring/crypto/cpu-arm-asm.S +0 -32
  93. data/vendor/ring/crypto/cpu-arm.c +0 -199
  94. data/vendor/ring/crypto/cpu-intel.c +0 -261
  95. data/vendor/ring/crypto/crypto.c +0 -151
  96. data/vendor/ring/crypto/curve25519/asm/x25519-arm.S +0 -2118
  97. data/vendor/ring/crypto/curve25519/curve25519.c +0 -4888
  98. data/vendor/ring/crypto/curve25519/x25519_test.cc +0 -128
  99. data/vendor/ring/crypto/digest/md32_common.h +0 -181
  100. data/vendor/ring/crypto/ec/asm/p256-x86_64-asm.pl +0 -2725
  101. data/vendor/ring/crypto/ec/ec.c +0 -193
  102. data/vendor/ring/crypto/ec/ec_curves.c +0 -61
  103. data/vendor/ring/crypto/ec/ec_key.c +0 -228
  104. data/vendor/ring/crypto/ec/ec_montgomery.c +0 -114
  105. data/vendor/ring/crypto/ec/example_mul.Windows.vcxproj +0 -25
  106. data/vendor/ring/crypto/ec/internal.h +0 -243
  107. data/vendor/ring/crypto/ec/oct.c +0 -253
  108. data/vendor/ring/crypto/ec/p256-64.c +0 -1794
  109. data/vendor/ring/crypto/ec/p256-x86_64-table.h +0 -9548
  110. data/vendor/ring/crypto/ec/p256-x86_64.c +0 -509
  111. data/vendor/ring/crypto/ec/simple.c +0 -1007
  112. data/vendor/ring/crypto/ec/util-64.c +0 -183
  113. data/vendor/ring/crypto/ec/wnaf.c +0 -508
  114. data/vendor/ring/crypto/ecdh/ecdh.c +0 -155
  115. data/vendor/ring/crypto/ecdsa/ecdsa.c +0 -304
  116. data/vendor/ring/crypto/ecdsa/ecdsa_asn1.c +0 -193
  117. data/vendor/ring/crypto/ecdsa/ecdsa_test.Windows.vcxproj +0 -25
  118. data/vendor/ring/crypto/ecdsa/ecdsa_test.cc +0 -327
  119. data/vendor/ring/crypto/header_removed.h +0 -17
  120. data/vendor/ring/crypto/internal.h +0 -495
  121. data/vendor/ring/crypto/libring.Windows.vcxproj +0 -101
  122. data/vendor/ring/crypto/mem.c +0 -98
  123. data/vendor/ring/crypto/modes/asm/aesni-gcm-x86_64.pl +0 -1045
  124. data/vendor/ring/crypto/modes/asm/ghash-armv4.pl +0 -517
  125. data/vendor/ring/crypto/modes/asm/ghash-x86.pl +0 -1393
  126. data/vendor/ring/crypto/modes/asm/ghash-x86_64.pl +0 -1741
  127. data/vendor/ring/crypto/modes/asm/ghashv8-armx.pl +0 -422
  128. data/vendor/ring/crypto/modes/ctr.c +0 -226
  129. data/vendor/ring/crypto/modes/gcm.c +0 -1206
  130. data/vendor/ring/crypto/modes/gcm_test.Windows.vcxproj +0 -25
  131. data/vendor/ring/crypto/modes/gcm_test.c +0 -348
  132. data/vendor/ring/crypto/modes/internal.h +0 -299
  133. data/vendor/ring/crypto/perlasm/arm-xlate.pl +0 -170
  134. data/vendor/ring/crypto/perlasm/readme +0 -100
  135. data/vendor/ring/crypto/perlasm/x86_64-xlate.pl +0 -1164
  136. data/vendor/ring/crypto/perlasm/x86asm.pl +0 -292
  137. data/vendor/ring/crypto/perlasm/x86gas.pl +0 -263
  138. data/vendor/ring/crypto/perlasm/x86masm.pl +0 -200
  139. data/vendor/ring/crypto/perlasm/x86nasm.pl +0 -187
  140. data/vendor/ring/crypto/poly1305/poly1305.c +0 -331
  141. data/vendor/ring/crypto/poly1305/poly1305_arm.c +0 -301
  142. data/vendor/ring/crypto/poly1305/poly1305_arm_asm.S +0 -2015
  143. data/vendor/ring/crypto/poly1305/poly1305_test.Windows.vcxproj +0 -25
  144. data/vendor/ring/crypto/poly1305/poly1305_test.cc +0 -80
  145. data/vendor/ring/crypto/poly1305/poly1305_test.txt +0 -52
  146. data/vendor/ring/crypto/poly1305/poly1305_vec.c +0 -892
  147. data/vendor/ring/crypto/rand/asm/rdrand-x86_64.pl +0 -75
  148. data/vendor/ring/crypto/rand/internal.h +0 -32
  149. data/vendor/ring/crypto/rand/rand.c +0 -189
  150. data/vendor/ring/crypto/rand/urandom.c +0 -219
  151. data/vendor/ring/crypto/rand/windows.c +0 -56
  152. data/vendor/ring/crypto/refcount_c11.c +0 -66
  153. data/vendor/ring/crypto/refcount_lock.c +0 -53
  154. data/vendor/ring/crypto/refcount_test.Windows.vcxproj +0 -25
  155. data/vendor/ring/crypto/refcount_test.c +0 -58
  156. data/vendor/ring/crypto/rsa/blinding.c +0 -462
  157. data/vendor/ring/crypto/rsa/internal.h +0 -108
  158. data/vendor/ring/crypto/rsa/padding.c +0 -300
  159. data/vendor/ring/crypto/rsa/rsa.c +0 -450
  160. data/vendor/ring/crypto/rsa/rsa_asn1.c +0 -261
  161. data/vendor/ring/crypto/rsa/rsa_impl.c +0 -944
  162. data/vendor/ring/crypto/rsa/rsa_test.Windows.vcxproj +0 -25
  163. data/vendor/ring/crypto/rsa/rsa_test.cc +0 -437
  164. data/vendor/ring/crypto/sha/asm/sha-armv8.pl +0 -436
  165. data/vendor/ring/crypto/sha/asm/sha-x86_64.pl +0 -2390
  166. data/vendor/ring/crypto/sha/asm/sha256-586.pl +0 -1275
  167. data/vendor/ring/crypto/sha/asm/sha256-armv4.pl +0 -735
  168. data/vendor/ring/crypto/sha/asm/sha256-armv8.pl +0 -14
  169. data/vendor/ring/crypto/sha/asm/sha256-x86_64.pl +0 -14
  170. data/vendor/ring/crypto/sha/asm/sha512-586.pl +0 -911
  171. data/vendor/ring/crypto/sha/asm/sha512-armv4.pl +0 -666
  172. data/vendor/ring/crypto/sha/asm/sha512-armv8.pl +0 -14
  173. data/vendor/ring/crypto/sha/asm/sha512-x86_64.pl +0 -14
  174. data/vendor/ring/crypto/sha/sha1.c +0 -271
  175. data/vendor/ring/crypto/sha/sha256.c +0 -204
  176. data/vendor/ring/crypto/sha/sha512.c +0 -355
  177. data/vendor/ring/crypto/test/file_test.cc +0 -326
  178. data/vendor/ring/crypto/test/file_test.h +0 -181
  179. data/vendor/ring/crypto/test/malloc.cc +0 -150
  180. data/vendor/ring/crypto/test/scoped_types.h +0 -95
  181. data/vendor/ring/crypto/test/test.Windows.vcxproj +0 -35
  182. data/vendor/ring/crypto/test/test_util.cc +0 -46
  183. data/vendor/ring/crypto/test/test_util.h +0 -41
  184. data/vendor/ring/crypto/thread_none.c +0 -55
  185. data/vendor/ring/crypto/thread_pthread.c +0 -165
  186. data/vendor/ring/crypto/thread_test.Windows.vcxproj +0 -25
  187. data/vendor/ring/crypto/thread_test.c +0 -200
  188. data/vendor/ring/crypto/thread_win.c +0 -282
  189. data/vendor/ring/examples/checkdigest.rs +0 -103
  190. data/vendor/ring/include/openssl/aes.h +0 -121
  191. data/vendor/ring/include/openssl/arm_arch.h +0 -129
  192. data/vendor/ring/include/openssl/base.h +0 -156
  193. data/vendor/ring/include/openssl/bn.h +0 -794
  194. data/vendor/ring/include/openssl/buffer.h +0 -18
  195. data/vendor/ring/include/openssl/bytestring.h +0 -235
  196. data/vendor/ring/include/openssl/chacha.h +0 -37
  197. data/vendor/ring/include/openssl/cmac.h +0 -76
  198. data/vendor/ring/include/openssl/cpu.h +0 -184
  199. data/vendor/ring/include/openssl/crypto.h +0 -43
  200. data/vendor/ring/include/openssl/curve25519.h +0 -88
  201. data/vendor/ring/include/openssl/ec.h +0 -225
  202. data/vendor/ring/include/openssl/ec_key.h +0 -129
  203. data/vendor/ring/include/openssl/ecdh.h +0 -110
  204. data/vendor/ring/include/openssl/ecdsa.h +0 -156
  205. data/vendor/ring/include/openssl/err.h +0 -201
  206. data/vendor/ring/include/openssl/mem.h +0 -101
  207. data/vendor/ring/include/openssl/obj_mac.h +0 -71
  208. data/vendor/ring/include/openssl/opensslfeatures.h +0 -68
  209. data/vendor/ring/include/openssl/opensslv.h +0 -18
  210. data/vendor/ring/include/openssl/ossl_typ.h +0 -18
  211. data/vendor/ring/include/openssl/poly1305.h +0 -51
  212. data/vendor/ring/include/openssl/rand.h +0 -70
  213. data/vendor/ring/include/openssl/rsa.h +0 -399
  214. data/vendor/ring/include/openssl/thread.h +0 -133
  215. data/vendor/ring/include/openssl/type_check.h +0 -71
  216. data/vendor/ring/mk/Common.props +0 -63
  217. data/vendor/ring/mk/Windows.props +0 -42
  218. data/vendor/ring/mk/WindowsTest.props +0 -18
  219. data/vendor/ring/mk/appveyor.bat +0 -62
  220. data/vendor/ring/mk/bottom_of_makefile.mk +0 -54
  221. data/vendor/ring/mk/ring.mk +0 -266
  222. data/vendor/ring/mk/top_of_makefile.mk +0 -214
  223. data/vendor/ring/mk/travis.sh +0 -40
  224. data/vendor/ring/mk/update-travis-yml.py +0 -229
  225. data/vendor/ring/ring.sln +0 -153
  226. data/vendor/ring/src/aead.rs +0 -682
  227. data/vendor/ring/src/agreement.rs +0 -248
  228. data/vendor/ring/src/c.rs +0 -129
  229. data/vendor/ring/src/constant_time.rs +0 -37
  230. data/vendor/ring/src/der.rs +0 -96
  231. data/vendor/ring/src/digest.rs +0 -690
  232. data/vendor/ring/src/digest_tests.txt +0 -57
  233. data/vendor/ring/src/ecc.rs +0 -28
  234. data/vendor/ring/src/ecc_build.rs +0 -279
  235. data/vendor/ring/src/ecc_curves.rs +0 -117
  236. data/vendor/ring/src/ed25519_tests.txt +0 -2579
  237. data/vendor/ring/src/exe_tests.rs +0 -46
  238. data/vendor/ring/src/ffi.rs +0 -29
  239. data/vendor/ring/src/file_test.rs +0 -187
  240. data/vendor/ring/src/hkdf.rs +0 -153
  241. data/vendor/ring/src/hkdf_tests.txt +0 -59
  242. data/vendor/ring/src/hmac.rs +0 -414
  243. data/vendor/ring/src/hmac_tests.txt +0 -97
  244. data/vendor/ring/src/input.rs +0 -312
  245. data/vendor/ring/src/lib.rs +0 -41
  246. data/vendor/ring/src/pbkdf2.rs +0 -265
  247. data/vendor/ring/src/pbkdf2_tests.txt +0 -113
  248. data/vendor/ring/src/polyfill.rs +0 -57
  249. data/vendor/ring/src/rand.rs +0 -28
  250. data/vendor/ring/src/signature.rs +0 -314
  251. data/vendor/ring/third-party/NIST/README.md +0 -9
  252. data/vendor/ring/third-party/NIST/SHAVS/SHA1LongMsg.rsp +0 -263
  253. data/vendor/ring/third-party/NIST/SHAVS/SHA1Monte.rsp +0 -309
  254. data/vendor/ring/third-party/NIST/SHAVS/SHA1ShortMsg.rsp +0 -267
  255. data/vendor/ring/third-party/NIST/SHAVS/SHA224LongMsg.rsp +0 -263
  256. data/vendor/ring/third-party/NIST/SHAVS/SHA224Monte.rsp +0 -309
  257. data/vendor/ring/third-party/NIST/SHAVS/SHA224ShortMsg.rsp +0 -267
  258. data/vendor/ring/third-party/NIST/SHAVS/SHA256LongMsg.rsp +0 -263
  259. data/vendor/ring/third-party/NIST/SHAVS/SHA256Monte.rsp +0 -309
  260. data/vendor/ring/third-party/NIST/SHAVS/SHA256ShortMsg.rsp +0 -267
  261. data/vendor/ring/third-party/NIST/SHAVS/SHA384LongMsg.rsp +0 -519
  262. data/vendor/ring/third-party/NIST/SHAVS/SHA384Monte.rsp +0 -309
  263. data/vendor/ring/third-party/NIST/SHAVS/SHA384ShortMsg.rsp +0 -523
  264. data/vendor/ring/third-party/NIST/SHAVS/SHA512LongMsg.rsp +0 -519
  265. data/vendor/ring/third-party/NIST/SHAVS/SHA512Monte.rsp +0 -309
  266. data/vendor/ring/third-party/NIST/SHAVS/SHA512ShortMsg.rsp +0 -523
  267. data/vendor/ring/third-party/NIST/sha256sums.txt +0 -1
@@ -1,40 +0,0 @@
1
- Building *ring*
2
- ===============
3
-
4
- *ring*'s Rust crate is named ```ring```. You can build it
5
- using ```cargo build --release``` and you can run the tests
6
- with ```cargo test --release```. When you use ```cargo``` to build *ring,
7
- the build script [build.rs](build.rs) automatically builds the C and
8
- assembly language components of *ring*.
9
-
10
- Currently on Windows you must currently invoke cargo from a Visual Studio
11
- Native Tools Command Prompt. Otherwise the build will likely fail in confusing
12
- ways because either msbuild won't be found or there will be a version mismatch
13
- between the toolchain used to build the C parts of the library and the toolchain
14
- used by cargo/rustc for linking. Visual Studio 2015 Update 1 and Visual Studio
15
- 2013 Update 5 are supported.
16
-
17
- *ring* uses Visual Studio's native build system (msbuild) on Windows, and GNU
18
- Make otherwise. Because this is a little unusual, I would be particularly grateful
19
- if you could report any problems building (or using) *ring*'s Rust crate.
20
-
21
- GCC 4.8 and later, and Clang 3.4 and later are supported. Other compilers
22
- will also probably work without too much trouble. Note in particular that if
23
- you are cross-compiling an x86 build on a 64-bit version of Linux, then you
24
- need to have the proper gcc-multilibs and g++-multilibs packages or equivalent
25
- installed.
26
-
27
-
28
-
29
- Prerequisites for Regenerating `crypto/chacha/chacha_vec_arm.S`
30
- ===============================================================
31
-
32
- If you change `crypto/chacha/chacha_vec.c`, you will need the
33
- arm-linux-gnueabihf-gcc compiler:
34
-
35
- ```
36
- wget https://releases.linaro.org/14.11/components/toolchain/binaries/arm-linux-gnueabihf/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz && \
37
- echo bc4ca2ced084d2dc12424815a4442e19cb1422db87068830305d90075feb1a3b gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz | sha256sum -c && \
38
- tar xf gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz && \
39
- sudo mv gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf /opt/
40
- ```
@@ -1,43 +0,0 @@
1
- [package]
2
- authors = ["Brian Smith <brian@briansmith.org>"]
3
- build = "build.rs"
4
- description = "A Rust interface for a simplification of BoringSSL's libcrypto."
5
- license-file = "LICENSE"
6
- name = "ring"
7
- readme = "README.md"
8
- repository = "https://github.com/briansmith/ring"
9
- version = "0.1.0"
10
-
11
- [lib]
12
- name = "ring"
13
- crate_type = ["dylib"]
14
-
15
- [build-dependencies]
16
- num = "0.1.27"
17
- rustc-serialize = "0.3.15"
18
-
19
- [dev-dependencies]
20
- rustc-serialize = "0.3.15"
21
- time = "0.1.32"
22
-
23
- # Fix the `bench`, `release`, and `test` profiles so they all have the
24
- # same configuration.
25
- #
26
- # XXX: We can't build with `debug = true` yet because that breaks the
27
- # Windows builds. See https://github.com/briansmith/ring/issues/44.
28
-
29
- [profile.bench]
30
- opt-level = 3
31
- debug = false
32
- rpath = false
33
- lto = true
34
- debug-assertions = false
35
- codegen-units = 1
36
-
37
- [profile.release]
38
- opt-level = 3
39
- debug = false
40
- rpath = false
41
- lto = true
42
- debug-assertions = false
43
- codegen-units = 1
@@ -1,185 +0,0 @@
1
- BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
2
- licensing. Files that are completely new have a Google copyright and an ISC
3
- license. This license is reproduced at the bottom of this file.
4
-
5
- Contributors to BoringSSL are required to follow the CLA rules for Chromium:
6
- https://cla.developers.google.com/clas
7
-
8
- Some files from Intel are under yet another license, which is also included
9
- underneath.
10
-
11
- The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
12
- OpenSSL License and the original SSLeay license apply to the toolkit. See below
13
- for the actual license texts. Actually both licenses are BSD-style Open Source
14
- licenses. In case of any license issues related to OpenSSL please contact
15
- openssl-core@openssl.org.
16
-
17
- OpenSSL License
18
- ---------------
19
-
20
- /* ====================================================================
21
- * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
22
- *
23
- * Redistribution and use in source and binary forms, with or without
24
- * modification, are permitted provided that the following conditions
25
- * are met:
26
- *
27
- * 1. Redistributions of source code must retain the above copyright
28
- * notice, this list of conditions and the following disclaimer.
29
- *
30
- * 2. Redistributions in binary form must reproduce the above copyright
31
- * notice, this list of conditions and the following disclaimer in
32
- * the documentation and/or other materials provided with the
33
- * distribution.
34
- *
35
- * 3. All advertising materials mentioning features or use of this
36
- * software must display the following acknowledgment:
37
- * "This product includes software developed by the OpenSSL Project
38
- * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
39
- *
40
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
41
- * endorse or promote products derived from this software without
42
- * prior written permission. For written permission, please contact
43
- * openssl-core@openssl.org.
44
- *
45
- * 5. Products derived from this software may not be called "OpenSSL"
46
- * nor may "OpenSSL" appear in their names without prior written
47
- * permission of the OpenSSL Project.
48
- *
49
- * 6. Redistributions of any form whatsoever must retain the following
50
- * acknowledgment:
51
- * "This product includes software developed by the OpenSSL Project
52
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
53
- *
54
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
55
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
56
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
58
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
59
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
60
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
61
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
62
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
63
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
64
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
65
- * OF THE POSSIBILITY OF SUCH DAMAGE.
66
- * ====================================================================
67
- *
68
- * This product includes cryptographic software written by Eric Young
69
- * (eay@cryptsoft.com). This product includes software written by Tim
70
- * Hudson (tjh@cryptsoft.com).
71
- *
72
- */
73
-
74
- Original SSLeay License
75
- -----------------------
76
-
77
- /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
78
- * All rights reserved.
79
- *
80
- * This package is an SSL implementation written
81
- * by Eric Young (eay@cryptsoft.com).
82
- * The implementation was written so as to conform with Netscapes SSL.
83
- *
84
- * This library is free for commercial and non-commercial use as long as
85
- * the following conditions are aheared to. The following conditions
86
- * apply to all code found in this distribution, be it the RC4, RSA,
87
- * lhash, DES, etc., code; not just the SSL code. The SSL documentation
88
- * included with this distribution is covered by the same copyright terms
89
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
90
- *
91
- * Copyright remains Eric Young's, and as such any Copyright notices in
92
- * the code are not to be removed.
93
- * If this package is used in a product, Eric Young should be given attribution
94
- * as the author of the parts of the library used.
95
- * This can be in the form of a textual message at program startup or
96
- * in documentation (online or textual) provided with the package.
97
- *
98
- * Redistribution and use in source and binary forms, with or without
99
- * modification, are permitted provided that the following conditions
100
- * are met:
101
- * 1. Redistributions of source code must retain the copyright
102
- * notice, this list of conditions and the following disclaimer.
103
- * 2. Redistributions in binary form must reproduce the above copyright
104
- * notice, this list of conditions and the following disclaimer in the
105
- * documentation and/or other materials provided with the distribution.
106
- * 3. All advertising materials mentioning features or use of this software
107
- * must display the following acknowledgement:
108
- * "This product includes cryptographic software written by
109
- * Eric Young (eay@cryptsoft.com)"
110
- * The word 'cryptographic' can be left out if the rouines from the library
111
- * being used are not cryptographic related :-).
112
- * 4. If you include any Windows specific code (or a derivative thereof) from
113
- * the apps directory (application code) you must include an acknowledgement:
114
- * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
115
- *
116
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
117
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
118
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
119
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
120
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
121
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
122
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
123
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
124
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
125
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
126
- * SUCH DAMAGE.
127
- *
128
- * The licence and distribution terms for any publically available version or
129
- * derivative of this code cannot be changed. i.e. this code cannot simply be
130
- * copied and put under another distribution licence
131
- * [including the GNU Public Licence.]
132
- */
133
-
134
-
135
- ISC license used for completely new code in BoringSSL:
136
-
137
- /* Copyright (c) 2015, Google Inc.
138
- *
139
- * Permission to use, copy, modify, and/or distribute this software for any
140
- * purpose with or without fee is hereby granted, provided that the above
141
- * copyright notice and this permission notice appear in all copies.
142
- *
143
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
144
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
145
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
146
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
147
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
148
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
149
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
150
-
151
-
152
- Some files from Intel carry the following license:
153
-
154
- # Copyright (c) 2012, Intel Corporation
155
- #
156
- # All rights reserved.
157
- #
158
- # Redistribution and use in source and binary forms, with or without
159
- # modification, are permitted provided that the following conditions are
160
- # met:
161
- #
162
- # * Redistributions of source code must retain the above copyright
163
- # notice, this list of conditions and the following disclaimer.
164
- #
165
- # * Redistributions in binary form must reproduce the above copyright
166
- # notice, this list of conditions and the following disclaimer in the
167
- # documentation and/or other materials provided with the
168
- # distribution.
169
- #
170
- # * Neither the name of the Intel Corporation nor the names of its
171
- # contributors may be used to endorse or promote products derived from
172
- # this software without specific prior written permission.
173
- #
174
- #
175
- # THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY
176
- # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
177
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
178
- # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
179
- # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
180
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
181
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
182
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
183
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
184
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
185
- # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,35 +0,0 @@
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
- include mk/top_of_makefile.mk
16
-
17
- RING_PREFIX =
18
-
19
- include mk/ring.mk
20
-
21
- OBJS += \
22
- $(RING_OBJS) \
23
- $(RING_TEST_LIB_OBJS) \
24
- $(RING_TEST_MAIN_OBJS) \
25
- $(NULL)
26
-
27
- LIBS += \
28
- $(RING_LIB) \
29
- $(NULL)
30
-
31
- EXES += $(RING_TEST_EXES)
32
-
33
- check:: check-ring
34
-
35
- include mk/bottom_of_makefile.mk
@@ -1,163 +0,0 @@
1
- # Porting from OpenSSL to BoringSSL
2
-
3
- BoringSSL is an OpenSSL derivative and is mostly source-compatible, for the
4
- subset of OpenSSL retained. Libraries ideally need little to no changes for
5
- BoringSSL support, provided they do not use removed APIs. In general, see if the
6
- library compiles and, on failure, consult the documentation in the header files
7
- and see if problematic features can be removed.
8
-
9
- In some cases, BoringSSL-specific code may be necessary. In that case, the
10
- `OPENSSL_IS_BORINGSSL` preprocessor macro may be used in `#ifdef`s. This macro
11
- should also be used in lieu of the presence of any particular function to detect
12
- OpenSSL vs BoringSSL in configure scripts, etc., where those are necessary.
13
-
14
- For convenience, BoringSSL defines upstream's `OPENSSL_NO_*` feature macros
15
- corresponding to removed features. These may also be used to disable code which
16
- uses a removed feature.
17
-
18
- Note: BoringSSL does *not* have a stable API or ABI. It must be updated with its
19
- consumers. It is not suitable for, say, a system library in a traditional Linux
20
- distribution. For instance, Chromium statically links the specific revision of
21
- BoringSSL it was built against. Likewise, Android's system-internal copy of
22
- BoringSSL is not exposed by the NDK and must not be used by third-party
23
- applications.
24
-
25
-
26
- ## Major API changes
27
-
28
- ### Integer types
29
-
30
- Some APIs have been converted to use `size_t` for consistency and to avoid
31
- integer overflows at the API boundary. (Existing logic uses a mismash of `int`,
32
- `long`, and `unsigned`.) For the most part, implicit casts mean that existing
33
- code continues to compile. In some cases, this may require BoringSSL-specific
34
- code, particularly to avoid compiler warnings.
35
-
36
- Most notably, the `STACK_OF(T)` types have all been converted to use `size_t`
37
- instead of `int` for indices and lengths.
38
-
39
- ### Reference counts
40
-
41
- Some external consumers increment reference counts directly by calling
42
- `CRYPTO_add` with the corresponding `CRYPTO_LOCK_*` value.
43
-
44
- These APIs no longer exist in BoringSSL. Instead, code which increments
45
- reference counts should call the corresponding `FOO_up_ref` function, such as
46
- `EVP_PKEY_up_ref`. Note that not all of these APIs are present in OpenSSL and
47
- may require `#ifdef`s.
48
-
49
- ### Error codes
50
-
51
- OpenSSL's errors are extremely specific, leaking internals of the library,
52
- including even a function code for the function which emitted the error! As some
53
- logic in BoringSSL has been rewritten, code which conditions on the error may
54
- break (grep for `ERR_GET_REASON` and `ERR_GET_FUNC`). This danger also exists
55
- when upgrading OpenSSL versions.
56
-
57
- Where possible, avoid conditioning on the exact error reason. Otherwise, a
58
- BoringSSL `#ifdef` may be necessary. Exactly how best to resolve this issue is
59
- still being determined. It's possible some new APIs will be added in the future.
60
-
61
- Function codes have been completely removed. Remove code which conditions on
62
- these as it will break with the slightest change in the library, OpenSSL or
63
- BoringSSL.
64
-
65
- ### `*_ctrl` functions
66
-
67
- Some OpenSSL APIs are implemented with `ioctl`-style functions such as
68
- `SSL_ctrl` and `EVP_PKEY_CTX_ctrl`, combined with convenience macros, such as
69
-
70
- # define SSL_CTX_set_mode(ctx,op) \
71
- SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
72
-
73
- In BoringSSL, these macros have been replaced with proper functions. The
74
- underlying `_ctrl` functions have been removed.
75
-
76
- For convenience, `SSL_CTRL_*` values are retained as macros to `doesnt_exist` so
77
- existing code which uses them (or the wrapper macros) in `#ifdef` expressions
78
- will continue to function. However, the macros themselves will not work.
79
-
80
- Switch any `*_ctrl` callers to the macro/function versions. This works in both
81
- OpenSSL and BoringSSL. Note that BoringSSL's function versions will be
82
- type-checked and may require more care with types.
83
-
84
- ### HMAC `EVP_PKEY`s
85
-
86
- `EVP_PKEY_HMAC` is removed. Use the `HMAC_*` functions in `hmac.h` instead. This
87
- is compatible with OpenSSL.
88
-
89
- ### DSA `EVP_PKEY`s
90
-
91
- `EVP_PKEY_DSA` is deprecated. It is currently still possible to parse DER into a
92
- DSA `EVP_PKEY`, but signing or verifying with those objects will not work.
93
-
94
- ### DES
95
-
96
- The `DES_cblock` type has been switched from an array to a struct to avoid the
97
- pitfalls around array types in C. Where features which require DES cannot be
98
- disabled, BoringSSL-specific codepaths may be necessary.
99
-
100
- ### TLS renegotiation
101
-
102
- OpenSSL enables TLS renegotiation by default and accepts renegotiation requests
103
- from the peer transparently. Renegotiation is an extremely problematic protocol
104
- feature, so BoringSSL rejects peer renegotiations by default.
105
-
106
- To enable renegotiation, call `SSL_set_reject_peer_renegotiations` and set it to
107
- off. Renegotiation is only supported as a client in SSL3/TLS and the
108
- HelloRequest must be received at a quiet point in the application protocol. This
109
- is sufficient to support the common use of requesting a new client certificate
110
- between an HTTP request and response in (unpipelined) HTTP/1.1.
111
-
112
- Things which do not work:
113
-
114
- * There is no support for renegotiation as a server.
115
-
116
- * There is no support for renegotiation in DTLS.
117
-
118
- * There is no support for initiating renegotiation; `SSL_renegotiate` always
119
- fails and `SSL_set_state` does nothing.
120
-
121
- * Interleaving application data with the new handshake is forbidden.
122
-
123
- * If a HelloRequest is received while `SSL_write` has unsent application data,
124
- the renegotiation is rejected.
125
-
126
- ### Lowercase hexadecimal
127
-
128
- BoringSSL's `BN_bn2hex` function uses lowercase hexadecimal digits instead of
129
- uppercase. Some code may require changes to avoid being sensitive to this
130
- difference.
131
-
132
-
133
- ## Optional BoringSSL-specific simplifications
134
-
135
- BoringSSL makes some changes to OpenSSL which simplify the API but remain
136
- compatible with OpenSSL consumers. In general, consult the BoringSSL
137
- documentation for any functions in new BoringSSL-only code.
138
-
139
- ### Return values
140
-
141
- Most OpenSSL APIs return 1 on success and either 0 or -1 on failure. BoringSSL
142
- has narrowed most of these to 1 on success and 0 on failure. BoringSSL-specific
143
- code may take advantage of the less error-prone APIs and use `!` to check for
144
- errors.
145
-
146
- ### Initialization
147
-
148
- OpenSSL has a number of different initialization functions for setting up error
149
- strings and loading algorithms, etc. All of these functions still exist in
150
- BoringSSL for convenience, but they do nothing and are not necessary.
151
-
152
- The one exception is `CRYPTO_library_init`. In `BORINGSSL_NO_STATIC_INITIALIZER`
153
- builds, it must be called to query CPU capabitilies before the rest of the
154
- library. In the default configuration, this is done with a static initializer
155
- and is also unnecessary.
156
-
157
- ### Threading
158
-
159
- OpenSSL provides a number of APIs to configure threading callbacks and set up
160
- locks. Without initializing these, the library is not thread-safe. Configuring
161
- these does nothing in BoringSSL. Instead, BoringSSL calls pthreads and the
162
- corresponding Windows APIs internally and is always thread-safe where the API
163
- guarantees it.