A pure MoonBit Ed25519 signing and verification package.
Dependencies
import {
"hustcer/ed25519@0.5.2",
}import {
"hustcer/ed25519",
}pub fn derive_public_key(BytesView) -> Bytes raise Ed25519Error
pub fn sign(BytesView, BytesView) -> Bytes raise Ed25519Error
pub fn verify(BytesView, BytesView, BytesView) -> Bool
pub fn verify_result(BytesView, BytesView, BytesView) -> Bool raise Ed25519Error
pub(all) suberror Ed25519Error {
InvalidSeedLength(got~ : Int)
InvalidPublicKeyLength(got~ : Int)
InvalidSignatureLength(got~ : Int)
PointYOutOfRange
PointNotOnCurve
PointNotCanonical
PublicKeySmallOrder
SignatureRSmallOrder
PublicKeyNotPrimeOrder
SignatureSOutOfRange
} derive(Eq, Debug)
pub impl Show for Ed25519Error
pub struct SigningKey
pub fn SigningKey::from_seed(BytesView) -> SigningKey raise Ed25519Error
pub fn SigningKey::public_key(SigningKey) -> Bytes
pub fn SigningKey::sign(SigningKey, BytesView) -> Bytes
pub fn SigningKey::verifying_key(SigningKey) -> VerifyingKey
pub struct VerifyingKey
pub fn VerifyingKey::from_public_key(BytesView) -> VerifyingKey raise Ed25519Error
pub fn VerifyingKey::public_key(VerifyingKey) -> Bytes
pub fn VerifyingKey::verify(VerifyingKey, BytesView, BytesView) -> Bool
pub fn VerifyingKey::verify_result(
VerifyingKey,
BytesView,
BytesView,
) -> Bool raise Ed25519Error///|
fn issue_and_check_license() -> Bool raise {
let seed : Bytes = b"\x9d\x61\xb1\x9d\xef\xfd\x5a\x60\xba\x84\x4a\xf4\x92\xec\x2c\xc4\x44\x49\xc5\x69\x7b\x32\x69\x19\x70\x3b\xac\x03\x1c\xae\x7f\x60"
let message : Bytes = b"license"
let public_key = @ed25519.derive_public_key(seed)
let signature = @ed25519.sign(seed, message)
@ed25519.verify(public_key, message, signature)
}///|
fn check_strict(public_key : Bytes, message : Bytes, sig : Bytes) -> Bool {
@ed25519.verify_result(public_key, message, sig) catch {
@ed25519.InvalidPublicKeyLength(got~) => {
println("bad public key length: \{got}")
false
}
err => {
println("malformed input: \{err}")
false
}
}
}///|
let signing_key = @ed25519.SigningKey::from_seed(seed)
///|
let public_key = signing_key.public_key()
///|
let signature = signing_key.sign(message)///|
let verifying_key = @ed25519.VerifyingKey::from_public_key(public_key)
///|
let ok = verifying_key.verify(message, signature)///|
let verifying_key = signing_key.verifying_key()moon fmt
moon check
moon test
moon infomoon bench --releasenu tools/openssl-interop.nufnm use 22
nu tools/node-interop.nuimpl Show for Ed25519Errorpub struct SigningKey {
// private fields
}pub struct VerifyingKey {
// private fields
}fn VerifyingKey::verify_result(self : VerifyingKey, message : BytesView, signature : BytesView) -> Bool raise Ed25519Errorfn verify(public_key : BytesView, message : BytesView, signature : BytesView) -> Boolfn verify_result(public_key : BytesView, message : BytesView, signature : BytesView) -> Bool raise Ed25519ErrorA pure MoonBit Ed25519 signing and verification package.
Dependencies