#crypto #cryptography #no_std #security #signatures


Multi-provider elliptic curve digital signature library with ECDSA and Ed25519 support

15 releases (6 breaking)

0.6.1 Jul 31, 2018
0.5.2 May 19, 2018
0.3.2 Mar 31, 2018

#54 in Cryptography

Download history 2/week @ 2018-05-09 15/week @ 2018-05-16 47/week @ 2018-05-23 69/week @ 2018-05-30 11/week @ 2018-06-06 21/week @ 2018-06-13 17/week @ 2018-06-20 114/week @ 2018-06-27 56/week @ 2018-07-04 14/week @ 2018-07-11 47/week @ 2018-07-18 4/week @ 2018-07-25 93/week @ 2018-08-01

170 downloads per month


crate Docs Build Status MIT/Apache2 licensed

A pure Rust multi-provider digital signature library with support for elliptic curve digital signature algorithms, namely ECDSA (described in FIPS 186-4) and Ed25519 (described in RFC 8032).

Signatory provides a thread-safe and object-safe API and implements providers for many popular Rust crates, including ed25519-dalek, secp256k1-rs, ring, and sodiumoxide.



Signatory exposes a thread-and-object-safe API for creating digital signatures which allows several signature providers to be compiled-in and available with specific providers selected at runtime.

Provider Support

Signatory includes the following providers, which can be enabled by selecting the corresponding cargo feature for a given crate:

ECDSA providers

Cargo Feature Crate Type NIST P-256 secp256k1
ring-provider ring Soft
secp256k1-provider secp256k1-rs Soft
yubihsm-provider yubihsm-rs Hard

Ed25519 providers

Cargo Feature Crate Type Signing Verification
dalek-provider ed25519-dalek Soft 51 k/s 18 k/s
ring-provider ring Soft 47 k/s 16 k/s
sodiumoxide-provider sodiumoxide Soft 38 k/s 15 k/s
yubihsm-provider yubihsm-rs Hard ~8/s N/A

Above benchmarks performed using cargo bench on an Intel Xeon E3-1225 v5 @ 3.30GHz with the nightly cargo feature enabled.

YubiHSM2 Provider Notes

The yubihsm-rs crate depends on the aesni crate, which uses the new "stdsimd" API (coming soon to stable!) to invoke hardware AES instructions via core::arch.

To access these features, you will need both a relatively recent Rust nightly and to pass the following as RUSTFLAGS:


You can configure your ~/.cargo/config to always pass these flags:

rustflags = ["-Ctarget-feature=+aes"]


Signatory is distributed under the terms of both the MIT license and the Apache License (Version 2.0).


MIT OR Apache-2.0 license


Reverse deps