ring-native 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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.