/
testkeys_util.go
59 lines (52 loc) · 1.22 KB
/
testkeys_util.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
package testkmgm
import (
"crypto"
"os"
"github.com/IPA-CyberLab/kmgm/pemparser"
"github.com/IPA-CyberLab/kmgm/wcrypto"
)
var rsa2048KeyIndex int = 0
var rsa4096KeyIndex int = 0
var ecKeyIndex int = 0
func ResetPreGenKeyIndex() {
rsa2048KeyIndex = 0
rsa4096KeyIndex = 0
ecKeyIndex = 0
}
func GetPregenKeyPEM(ktype wcrypto.KeyType) []byte {
switch ktype {
case wcrypto.KeyRSA2048:
pemstr := RSA2048Keys[rsa2048KeyIndex%len(RSA2048Keys)]
rsa2048KeyIndex++
return []byte(pemstr)
case wcrypto.KeyRSA4096:
pemstr := RSA4096Keys[rsa4096KeyIndex%len(RSA4096Keys)]
rsa4096KeyIndex++
return []byte(pemstr)
case wcrypto.KeySECP256R1:
pemstr := ECKeys[ecKeyIndex%len(ECKeys)]
ecKeyIndex++
return []byte(pemstr)
default:
panic("not available")
}
}
func WritePregenKeyPEMToFile(ktype wcrypto.KeyType, path string) crypto.PrivateKey {
pemData := GetPregenKeyPEM(ktype)
pk, err := pemparser.ParsePrivateKey(pemData)
if err != nil {
panic(err)
}
if err := os.WriteFile(path, pemData, 0644); err != nil {
panic(err)
}
return pk
}
func GetPregenKey(ktype wcrypto.KeyType) crypto.PrivateKey {
pemData := GetPregenKeyPEM(ktype)
pk, err := pemparser.ParsePrivateKey(pemData)
if err != nil {
panic(err)
}
return pk
}