#ed25519 #everscale #signature #secret

everscale-crypto

Cryptography primitives for Everscale

12 releases

0.3.0 Nov 28, 2024
0.2.1 Apr 25, 2024
0.2.0 Jul 24, 2023
0.2.0-pre.1 Feb 3, 2023
0.0.1 Feb 13, 2022

#6 in #everscale

Download history 247/week @ 2024-12-08 166/week @ 2024-12-15 273/week @ 2024-12-22 64/week @ 2024-12-29 183/week @ 2025-01-05 273/week @ 2025-01-12 220/week @ 2025-01-19 141/week @ 2025-01-26 261/week @ 2025-02-02 241/week @ 2025-02-09 244/week @ 2025-02-16 200/week @ 2025-02-23 177/week @ 2025-03-02 296/week @ 2025-03-09 204/week @ 2025-03-16 148/week @ 2025-03-23

842 downloads per month
Used in 10 crates (5 directly)

Custom license

22KB
462 lines

everscale-crypto   Latest Version everscale-crypto: rustc 1.56+ Workflow badge License MIT badge

Cryptography primitives for Everscale

Examples

use everscale_crypto::ed25519;

fn main() {
    let data: &[u8] = b"hello world";

    let keys = ed25519::KeyPair::generate(&mut rand::thread_rng());

    // Simple bytes signature
    let signature = keys.sign_raw(data);
    assert!(keys.public_key.verify_raw(&data, &signature));

    // Sign TL data without intermediate serialization
    let signature = keys.sign(keys.public_key.as_tl());
    assert!(keys.public_key.verify(keys.public_key.as_tl(), &signature));

    // Shared secret
    let other_keys = ed25519::KeyPair::generate(&mut rand::thread_rng());
    let secret1 = keys.compute_shared_secret(&other_keys.public_key);
    let secret2 = other_keys.compute_shared_secret(&keys.public_key);
    assert_eq!(secret1, secret2);
}

Dependencies

~2.5–4MB
~85K SLoC