31 lines
672 B
V
31 lines
672 B
V
module keysafe
|
|
|
|
import libsodium
|
|
import encoding.hex
|
|
|
|
pub struct VerifyKey {
|
|
pub:
|
|
name string
|
|
remote libsodium.VerifyKey // target public master key
|
|
}
|
|
|
|
// remote is the public master key which needs to verify
|
|
pub fn verifykey_new(name string, remote string) !VerifyKey {
|
|
parsed := hex.decode(remote.substr(2, remote.len))!
|
|
|
|
v := [libsodium.public_key_size]u8{}
|
|
unsafe { C.memcpy(&v[0], parsed.data, libsodium.public_key_size) }
|
|
|
|
return VerifyKey{
|
|
name: name
|
|
remote: libsodium.VerifyKey{
|
|
public_key: v
|
|
}
|
|
}
|
|
}
|
|
|
|
// verify a signed data, returns true if signature is correct
|
|
pub fn (key VerifyKey) verify(data []u8) bool {
|
|
return key.remote.verify(data)
|
|
}
|