-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSigningKey.sm
More file actions
46 lines (35 loc) · 1006 Bytes
/
SigningKey.sm
File metadata and controls
46 lines (35 loc) · 1006 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/usr/bin/ruby
var Ed25519 = require('Crypt::PK::Ed25519')
class SigningKey() {
has key = Ed25519.new.generate_key
method keyFromPublic(String public) {
key = Ed25519.new
key.import_key_raw(pack('H*', public), 'public')
self
}
method keyFromPrivate(String private) {
key = Ed25519.new
key.import_key_raw(pack('H*', private), 'private')
self
}
method load(String file) {
var private = File(file).read
self.keyFromPrivate(private)
}
method store(String file) {
File(file).write(self.getPrivate)
self
}
method getPublic() {
unpack('H*', key.export_key_raw('public'))
}
method getPrivate() {
unpack('H*', key.export_key_raw('private'))
}
method sign(String message) {
unpack('H*', key.sign_message(message))
}
method verify(String sig, String message) {
key.verify_message(pack('H*', sig), message) ? true : false
}
}