2015-07-27 16:27:44 -04:00
|
|
|
THE SOFTWARE IS PROVIDED "AS IS" AND BRIAN SMITH AND THE AUTHORS DISCLAIM
|
|
|
|
ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
|
|
|
|
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL BRIAN SMITH OR THE AUTHORS
|
|
|
|
BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
|
|
|
|
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
|
|
|
|
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-31 07:36:53 -10:00
|
|
|
*ring*
|
|
|
|
======
|
2015-07-27 16:27:44 -04:00
|
|
|
|
2015-09-17 23:00:18 -07:00
|
|
|
*ring* is a crypto library in Rust based on BoringSSL's crypto primitive
|
|
|
|
implementations.
|
2015-07-27 16:27:44 -04:00
|
|
|
|
2015-09-17 23:00:18 -07:00
|
|
|
Particular attention is being paid to making it easy to build and integrate
|
|
|
|
*ring* into applications and higher-level frameworks, and to ensuring that
|
2016-05-23 18:33:41 -10:00
|
|
|
*ring* works optimally on small devices, and eventually microcontrollers, to
|
|
|
|
support Internet of Things (IoT) applications.
|
2015-07-27 16:27:44 -04:00
|
|
|
|
|
|
|
The name *ring* comes from the fact that *ring* started as a subset of
|
2016-05-23 18:33:41 -10:00
|
|
|
BoringSSL, and *"ring"* is a substring of "Bo*ring*SSL". Most of the (C and
|
|
|
|
assembly language) code in *ring* comes from BoringSSL, and BoringSSL is
|
|
|
|
derived from OpenSSL. *ring* merges changes from BoringSSL regularly. Also,
|
|
|
|
several changes that were developed for *ring* have already been merged into
|
|
|
|
BoringSSL.
|
2015-07-27 16:27:44 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-31 07:36:53 -10:00
|
|
|
Documentation
|
|
|
|
-------------
|
2015-08-10 13:46:43 -04:00
|
|
|
|
|
|
|
See the documentation at
|
2015-10-31 07:36:53 -10:00
|
|
|
https://briansmith.org/rustdoc/ring/.
|
2015-07-30 19:48:38 -04:00
|
|
|
|
2016-04-13 23:18:28 -10:00
|
|
|
See [BUILDING.md](BUILDING.md#building-the-rust-library) for instructions on
|
|
|
|
how to build it. These instructions are especially important on Windows, as
|
|
|
|
there are build prerequisites that need to be installed.
|
2015-07-30 19:48:38 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
2015-07-27 16:27:44 -04:00
|
|
|
Contributing
|
2015-10-31 07:36:53 -10:00
|
|
|
------------
|
2015-07-27 16:27:44 -04:00
|
|
|
|
|
|
|
Patches Welcome! Suggestions:
|
|
|
|
|
2015-09-17 23:00:18 -07:00
|
|
|
* More code elimination, especially dead code.
|
|
|
|
* Replacing more C code with Rust code.
|
|
|
|
* Implementation of [SRP-6a](http://srp.stanford.edu/) in Rust, based on the
|
|
|
|
|rust::digest| API and the C/asm optimized modular exponentiation.
|
|
|
|
* Optimizing the PBKDF2-HMAC implementation based on the ideas from
|
|
|
|
[fastpbkdf2](https://github.com/ctz/fastpbkdf2).
|
2015-07-27 16:27:44 -04:00
|
|
|
* Better IDE support for Windows (e.g. running the tests within the IDE) and
|
|
|
|
Mac OS X (e.g. Xcode project files).
|
2015-10-31 07:36:53 -10:00
|
|
|
* Support for more platforms in the continuous integration (e.g. Android, iOS,
|
|
|
|
ARM microcontrollers).
|
2015-07-27 16:27:44 -04:00
|
|
|
* Static analysis and fuzzing in the continuous integration.
|
|
|
|
|
|
|
|
|
2015-10-31 07:36:53 -10:00
|
|
|
|
2015-07-27 16:27:44 -04:00
|
|
|
License
|
2015-10-31 07:36:53 -10:00
|
|
|
-------
|
|
|
|
|
|
|
|
See [LICENSE](LICENSE).
|
|
|
|
|
2016-02-21 22:55:16 -10:00
|
|
|
The *ring* project happily accepts pull requests without you needing to sign
|
|
|
|
any formal license agreement. The portions of pull requests that modify
|
|
|
|
existing files must be licensed under the same terms as the files being
|
|
|
|
modified. New files in pull requests, including in particular all Rust code,
|
|
|
|
must be licensed under the ISC-style license. Please state that you agree to
|
|
|
|
license your contributions in the commit messages of commits in pull requests,
|
|
|
|
e.g. by putting “I agree to license my contributions to each file under the
|
|
|
|
terms given at the top of each file I changed.” at the end of each commit
|
|
|
|
message.
|
2015-07-27 16:27:44 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
2015-08-05 11:31:56 -04:00
|
|
|
Online Automated Testing
|
2015-10-31 07:36:53 -10:00
|
|
|
------------------------
|
2015-08-05 11:31:56 -04:00
|
|
|
|
2016-06-01 14:45:25 -10:00
|
|
|
Travis CI is used for Android, Linux, and Mac OS X. Appveyor is used for
|
|
|
|
Windows. The tests are run in debug and release configurations, for the current
|
|
|
|
release of each Rust channel (Stable, Beta, Nightly), for each configuration
|
|
|
|
listed in the table below.
|
2015-08-05 11:31:56 -04:00
|
|
|
|
|
|
|
<table>
|
|
|
|
<tr><th>OS</th><th>Arch.</th><th>Compilers</th><th>Status</th>
|
2016-02-02 15:52:52 -10:00
|
|
|
<tr><td rowspan=2>Linux</td>
|
2016-06-01 14:45:25 -10:00
|
|
|
<td>x86, x86_64</td>
|
|
|
|
<td>GCC 4.6, GCC 5, Clang 3.8. (Clang builds are temporarily disabled due
|
|
|
|
to the current LLVM APT repo outage.)</td>
|
|
|
|
<td rowspan=4><a title="Build Status" href=https://travis-ci.org/briansmith/ring><img src=https://travis-ci.org/briansmith/ring.svg?branch=master></a>
|
2016-02-02 15:52:52 -10:00
|
|
|
</tr>
|
2016-06-01 14:45:25 -10:00
|
|
|
<tr><td>32‑bit ARM, AAarch64</td>
|
|
|
|
<td>GCC (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04.1), tested using
|
|
|
|
<code>qemu-user-arm</code>.</td>
|
2015-08-05 11:31:56 -04:00
|
|
|
</tr>
|
2016-06-01 14:45:25 -10:00
|
|
|
<tr><td>Android</td>
|
|
|
|
<td>32‑bit ARM</td>
|
|
|
|
<td>Built using the Android SDK 24.4.1 and Android NDK 10e, tested using
|
|
|
|
the Android emulator. (Aarch64 builds are blocked on the Rust team
|
|
|
|
producing AAarch64 builds of Rust's libstd.)</td>
|
|
|
|
</tr>
|
|
|
|
<tr><td>Mac OS X</td>
|
2016-01-31 19:21:44 -10:00
|
|
|
<td>x64</td>
|
2016-03-03 11:51:53 -10:00
|
|
|
<td>Apple Clang 7.0.2 (clang-700.1.81)</td>
|
2015-08-05 11:31:56 -04:00
|
|
|
</tr>
|
|
|
|
<tr><td>Windows</td>
|
2016-06-01 14:45:25 -10:00
|
|
|
<td>x86, x86_64</td>
|
2016-05-31 10:06:55 -10:00
|
|
|
<td>MSVC 2015 Update 2 (14.0)</td>
|
2015-08-26 21:35:08 -07:00
|
|
|
<td><a title="Build Status" href=https://ci.appveyor.com/project/briansmith/ring/branch/master><img src=https://ci.appveyor.com/api/projects/status/3wq9p54r9iym05rm/branch/master?svg=true></a>
|
2015-08-05 11:31:56 -04:00
|
|
|
</tr>
|
|
|
|
</table>
|
2015-07-27 16:27:44 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bug Reporting
|
2015-10-31 07:36:53 -10:00
|
|
|
-------------
|
2015-07-27 16:27:44 -04:00
|
|
|
|
2016-05-11 15:31:29 -10:00
|
|
|
Please report bugs either as pull requests or as issues in [the issue
|
|
|
|
tracker](https://github.com/briansmith/ring/issues). *ring* has a
|
|
|
|
**full disclosure** vulnerability policy. **Please do NOT attempt to report
|
|
|
|
any security vulnerability in this code privately to anybody.**
|