#forge #signer #sign #ed25519 #secp256k1 #language

forge_signer

forge_signer 的 Rust 语言实现

4 个版本

0.1.3 2019 年 10 月 21 日
0.1.2 2019 年 10 月 16 日
0.1.1 2019 年 10 月 14 日
0.1.0 2019 年 10 月 12 日

#17#forge

每月 25 次下载
4 crates 中使用

Apache-2.0

11KB
181

简介

forge_signer 使用 Rust 实现。

支持签名算法 ed25519secp256k1

trait Signer

    trait Signer {
        fn get_key_pair() -> Self;
        fn get_public_key(sk: &[u8]) -> Vec<u8>;
        fn sign(sk: &[u8], message: &[u8]) -> Vec<u8>;
        fn verify(pk: &[u8], message: &[u8], signature: &[u8]) -> bool;
    }

API

    get_key_pair(sign_type: Option<SignType>) -> (Vec<u8>, Vec<u8>)
    get_pk_by_sk(sk: &[u8], sign_type: &Option<SignType>) -> Vec<u8>
    sign(sk: &[u8], message: &[u8], sign_type: Option<SignType>) -> Vec<u8>
    verify(pk: &[u8], message: &[u8], signature: &[u8], sign_type: Option<SignType>) -> bool

用法

    let ed25519_key_pair = get_key_pair(Some(SignType::Ed25519));
    let expect_pk = get_pk_by_sk(&ed25519_key_pair.0, &Some(SignType::Ed25519));
    assert_eq!(ed25519_key_pair.1, expect_pk);

    let message = b"hello rust";
    let signature = sign(&ed25519_key_pair.0, message, Some(SignType::Ed25519));
    assert!(verify(&ed25519_key_pair.1, message, &signature, Some(SignType::Ed25519)));

依赖

~6MB
~97K SLoC