v
Зеркало из https://github.com/vlang/v
1module main
2
3import encoding.hex
4import encoding.base64
5import crypto.ed25519
6
7// adapted from https://asecuritysite.com/signatures/ed25519
8fn main() {
9msg := 'Hello Girl'
10
11publ, priv := ed25519.generate_key()!
12
13m := msg.bytes()
14
15sig := ed25519.sign(priv, m)!
16
17println('=== Message ===')
18println('Msg: ${msg} \nHash: ${m}')
19
20println('=== Public key ===')
21println('Public key (Hex): ${hex.encode(publ)}')
22println(' Public key (Base64): ${base64.encode(publ)}')
23
24println('=== Private key ===')
25println('Private key: ${priv.seed().hex()}') // priv[0:32]
26println(' Private key (Base64): ${base64.encode(priv.seed())}') // priv[0:32]
27println(' Private key (Base64) Full key: ${base64.encode(priv)}')
28println(' Private key (Full key in Hex): ${hex.encode(priv)}')
29
30println('=== signature (R,s) ===')
31println('signature: R=${sig[0..32].hex()} s=${sig[32..64].hex()}')
32println(' signature (Base64)=${base64.encode(sig)}')
33
34rtn := ed25519.verify(publ, m, sig)!
35
36if rtn {
37println('Signature verified :${rtn}')
38} else {
39println('signature does not verify :${!rtn}')
40}
41}
42