Skip to content

Commit b119df5

Browse files
committed
Improve README.md and BUILDIND.md.
1 parent c8f72f7 commit b119df5

File tree

2 files changed

+35
-19
lines changed

2 files changed

+35
-19
lines changed

BUILDING.md

+6
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ msbuild projects (on Windows) or the Makefile (on other platforms). Because
1515
this is a little unusual, I would be particularly grateful if you could report
1616
any problems building (or using) *ring*'s Rust crate.
1717

18+
Currently on Windows you must currently invoke cargo from a Visual Studio
19+
Native Tools Command Prompt. Otherwise the build will likely fail in confusing
20+
ways because either msbuild won't be found or there will be a version mismatch
21+
between the toolchain used to build the C parts of the library and the toolchain
22+
used by cargo/rustc for linking.
23+
1824

1925

2026
Building the C Library on Linux and Similar Platforms

README.md

+29-19
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,13 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1111
What is *ring*?
1212
===============
1313

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.
1516

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.
2321

2422
The name *ring* comes from the fact that *ring* started as a subset of
2523
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.
3735

3836
Currently these features are supported through the Rust API:
3937

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
4544

4645
See the documentation at
4746
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).
4948

5049
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.
5251

5352

5453

5554
The C API
5655
=========
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
5964
[this](https://github.com/briansmith/ring/blob/master/BUILDING.md#building-the-c-library-on-windows)
6065
(for Windows) and
6166
[this](https://github.com/briansmith/ring/blob/master/BUILDING.md#building-the-c-library-on-linux-and-similar-platforms)
@@ -69,15 +74,20 @@ Contributing
6974

7075
Patches Welcome! Suggestions:
7176

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.
7284
* Better IDE support for Windows (e.g. running the tests within the IDE) and
7385
Mac OS X (e.g. Xcode project files).
7486
* Language bindings for safer programming languages like Haskell, OCaml, and
7587
Rust.
7688
* Support for more platforms in the continuous integration, such as Android,
7789
Mac OS X, and ARM microcontrollers. (The current CI only covers Linux.)
7890
* Static analysis and fuzzing in the continuous integration.
79-
* More code elimination, especially dead code.
80-
8191

8292

8393
License

0 commit comments

Comments
 (0)