A pure MoonBit Ed25519 signing and verification package.
{
"deps": {
"hustcer/ed25519": "0.1.1"
}
}import {
"hustcer/ed25519" @ed25519,
}pub fn derive_public_key(Array[UInt]) -> Result[Array[UInt], String]
pub fn sign(Array[UInt], Array[UInt]) -> Result[Array[UInt], String]
pub fn verify(Array[UInt], Array[UInt], Array[UInt]) -> Bool
pub fn verify_result(Array[UInt], Array[UInt], Array[UInt]) -> Result[Bool, String]
pub struct SigningKey
pub fn SigningKey::from_seed(Array[UInt]) -> Result[SigningKey, String]
pub fn SigningKey::public_key(SigningKey) -> Array[UInt]
pub fn SigningKey::sign(SigningKey, Array[UInt]) -> Result[Array[UInt], String]
pub struct VerifyingKey
pub fn VerifyingKey::from_public_key(Array[UInt]) -> Result[VerifyingKey, String]
pub fn VerifyingKey::public_key(VerifyingKey) -> Array[UInt]
pub fn VerifyingKey::verify(VerifyingKey, Array[UInt], Array[UInt]) -> Bool
pub fn VerifyingKey::verify_result(
VerifyingKey,
Array[UInt],
Array[UInt]
) -> Result[Bool, String]let seed : Array[UInt] = [
0x9d, 0x61, 0xb1, 0x9d, 0xef, 0xfd, 0x5a, 0x60,
0xba, 0x84, 0x4a, 0xf4, 0x92, 0xec, 0x2c, 0xc4,
0x44, 0x49, 0xc5, 0x69, 0x7b, 0x32, 0x69, 0x19,
0x70, 0x3b, 0xac, 0x03, 0x1c, 0xae, 0x7f, 0x60,
]
let message : Array[UInt] = [0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65]
let public_key = @ed25519.derive_public_key(seed).unwrap()
let signature = @ed25519.sign(seed, message).unwrap()
let ok = @ed25519.verify(public_key, message, signature)let signing_key = @ed25519.SigningKey::from_seed(seed).unwrap()
let public_key = signing_key.public_key()
let signature = signing_key.sign(message).unwrap()let verifying_key = @ed25519.VerifyingKey::from_public_key(public_key).unwrap()
let ok = verifying_key.verify(message, signature)moon fmt
moon check
moon test
moon infomoon bench --releasenu scripts/openssl-interop.nupub struct SigningKey {
// private fields
}pub struct VerifyingKey {
// private fields
}fn VerifyingKey::verify(self : VerifyingKey, message : Array[UInt], signature : Array[UInt]) -> Boolfn VerifyingKey::verify_result(self : VerifyingKey, message : Array[UInt], signature : Array[UInt]) -> Result[Bool, String]Install
Download zipA pure MoonBit Ed25519 signing and verification package.