-
Notifications
You must be signed in to change notification settings - Fork 136
/
signapi.go
87 lines (75 loc) · 1.98 KB
/
signapi.go
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Code generated from signapi.templ.go. DO NOT EDIT.
package mode1
import (
"github.com/cloudflare/circl/sign"
)
var sch sign.Scheme = &scheme{}
// Scheme returns a signature interface.
func Scheme() sign.Scheme { return sch }
type scheme struct{}
func (*scheme) Name() string { return "MAYO_1" }
func (*scheme) PublicKeySize() int { return PublicKeySize }
func (*scheme) PrivateKeySize() int { return PrivateKeySize }
func (*scheme) SignatureSize() int { return SignatureSize }
func (*scheme) SeedSize() int { return SeedSize }
func (*scheme) SupportsContext() bool { return false }
func (*scheme) GenerateKey() (sign.PublicKey, sign.PrivateKey, error) {
sk, pk, err := GenerateKey(nil)
return sk, pk, err
}
func (*scheme) Sign(
sk sign.PrivateKey,
message []byte,
opts *sign.SignatureOpts,
) []byte {
priv, ok := sk.(*PrivateKey)
if !ok {
panic(sign.ErrTypeMismatch)
}
if opts != nil && opts.Context != "" {
panic(sign.ErrContextNotSupported)
}
sig, err := Sign(priv, message, nil)
if err != nil {
panic("")
}
return sig
}
func (*scheme) Verify(
pk sign.PublicKey,
message, signature []byte,
opts *sign.SignatureOpts,
) bool {
pub, ok := pk.(*PublicKey)
if !ok {
panic(sign.ErrTypeMismatch)
}
if opts != nil && opts.Context != "" {
panic(sign.ErrContextNotSupported)
}
return Verify(pub, message, signature)
}
func (*scheme) DeriveKey(seed []byte) (sign.PublicKey, sign.PrivateKey) {
if len(seed) != SeedSize {
panic(sign.ErrSeedSize)
}
var tmp [SeedSize]byte
copy(tmp[:], seed)
return NewKeyFromSeed(&tmp)
}
func (*scheme) UnmarshalBinaryPublicKey(buf []byte) (sign.PublicKey, error) {
if len(buf) != PublicKeySize {
return nil, sign.ErrPubKeySize
}
var ret PublicKey
err := ret.UnmarshalBinary(buf)
return &ret, err
}
func (*scheme) UnmarshalBinaryPrivateKey(buf []byte) (sign.PrivateKey, error) {
if len(buf) != PrivateKeySize {
return nil, sign.ErrPrivKeySize
}
var ret PrivateKey
err := ret.UnmarshalBinary(buf)
return &ret, err
}