@@ -11,15 +11,13 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
11
11
What is * ring* ?
12
12
===============
13
13
14
- * ring* is a simplified version of BoringSSL with C and Rust APIs.
14
+ * ring* is a crypto library in Rust based on BoringSSL's crypto primitive
15
+ implementations.
15
16
16
- * ring* makes OpenSSL's high-quality, high-performance crypto primitives
17
- conveniently available to new crypto libraries written in safer (than C)
18
- languages like OCaml and Rust. Particular attention is being paid to making it
19
- easy to build and integrate * ring* into applications and higher-level
20
- frameworks, and to ensuring that * ring* works optimally on microcontrollers
21
- to support Internet of Things (IoT) applications. It may also be useful for
22
- people implementing cryptographic protocols in C and C++.
17
+ Particular attention is being paid to making it easy to build and integrate
18
+ * ring* into applications and higher-level frameworks, and to ensuring that
19
+ * ring* works optimally on microcontrollers to support Internet of Things
20
+ (IoT) applications.
23
21
24
22
The name * ring* comes from the fact that * ring* started as a subset of
25
23
BoringSSL, and * "ring"* is a substring of "Bo* ring* SSL". Almost all the code in
@@ -37,25 +35,32 @@ The first part of the ```ring``` Rust crate is now available.
37
35
38
36
Currently these features are supported through the Rust API:
39
37
40
- * Cryptographic digests (SHA-256, SHA-384, SHA-512, SHA-1, and MD5).
41
- * HMAC.
42
- * ECDSA Signature Verification for curves P-256, P-384, and P-521.
43
- * RSA PKCS #1 Signature Verification.
44
- * Random byte generation.
38
+ * Cryptographic digests (SHA-256, SHA-384, SHA-512, SHA-1, and MD5)
39
+ * HMAC, HKDF, and PBKDF2-HMAC
40
+ * Ephemeral ECDH key agreement for curves P-256, P-384, and P-521
41
+ * ECDSA signature verification for curves P-256, P-384, and P-521
42
+ * RSA PKCS #1 signature verification
43
+ * Random byte generation
45
44
46
45
See the documentation at
47
46
https://briansmith.org/rustdoc/ring/ . Also take a look at the example
48
- program [ checkdigest.rs] ( examples/checkdigest.rs ) .
47
+ program [ examples/ checkdigest.rs] ( examples/checkdigest.rs ) .
49
48
50
49
See [ Building the Rust Library] ( BUILDING.md#building-the-rust-library ) for
51
- instructions on how to build it (hint: it's just ``` cargo build ``` ) .
50
+ instructions on how to build it.
52
51
53
52
54
53
55
54
The C API
56
55
=========
57
- The C API is the same as BoringSSL's, except that its SSL/TLS, X.509, and
58
- ASN.1 APIs have been removed. See
56
+ The C API is the same as BoringSSL's, except that its SSL/TLS, X.509,
57
+ ASN.1 APIs, error stack mechanism, and many parts of the EVP interface have
58
+ been permanently removed. Currently, the C API also does not expose HMAC, HKDF,
59
+ and PBKDF2 because the C wrappers around the new Rust implementations have not
60
+ been implemented yet. The currently plan is to support a C interface that is
61
+ the same as or similar to BoringSSL's.
62
+
63
+ See
59
64
[ this] ( https://github.com/briansmith/ring/blob/master/BUILDING.md#building-the-c-library-on-windows )
60
65
(for Windows) and
61
66
[ this] ( https://github.com/briansmith/ring/blob/master/BUILDING.md#building-the-c-library-on-linux-and-similar-platforms )
@@ -69,15 +74,20 @@ Contributing
69
74
70
75
Patches Welcome! Suggestions:
71
76
77
+ * More code elimination, especially dead code.
78
+ * Replacing more C code with Rust code.
79
+ * Implementation of [ SRP-6a] ( http://srp.stanford.edu/ ) in Rust, based on the
80
+ |rust::digest| API and the C/asm optimized modular exponentiation.
81
+ * Optimizing the PBKDF2-HMAC implementation based on the ideas from
82
+ [ fastpbkdf2] ( https://github.com/ctz/fastpbkdf2 ) .
83
+ * X25519 (ECDH with Curve25519) and Ed25519.
72
84
* Better IDE support for Windows (e.g. running the tests within the IDE) and
73
85
Mac OS X (e.g. Xcode project files).
74
86
* Language bindings for safer programming languages like Haskell, OCaml, and
75
87
Rust.
76
88
* Support for more platforms in the continuous integration, such as Android,
77
89
Mac OS X, and ARM microcontrollers. (The current CI only covers Linux.)
78
90
* Static analysis and fuzzing in the continuous integration.
79
- * More code elimination, especially dead code.
80
-
81
91
82
92
83
93
License
0 commit comments