@@ -25,10 +25,11 @@ import (
25
25
"encoding/base32"
26
26
"errors"
27
27
"fmt"
28
- "golang.org/x/crypto/ed25519"
29
28
"io"
30
29
"os"
31
30
31
+ "golang.org/x/crypto/ed25519"
32
+
32
33
"gopkg.in/alecthomas/kingpin.v2"
33
34
"gopkg.in/square/go-jose.v2"
34
35
)
@@ -75,20 +76,32 @@ func KeygenSig(alg jose.SignatureAlgorithm, bits int) (crypto.PublicKey, crypto.
75
76
case jose .ES256 :
76
77
// The cryptographic operations are implemented using constant-time algorithms.
77
78
key , err := ecdsa .GenerateKey (elliptic .P256 (), rand .Reader )
79
+ if err != nil {
80
+ return nil , nil , err
81
+ }
78
82
return key .Public (), key , err
79
83
case jose .ES384 :
80
84
// NB: The cryptographic operations do not use constant-time algorithms.
81
85
key , err := ecdsa .GenerateKey (elliptic .P384 (), rand .Reader )
86
+ if err != nil {
87
+ return nil , nil , err
88
+ }
82
89
return key .Public (), key , err
83
90
case jose .ES512 :
84
91
// NB: The cryptographic operations do not use constant-time algorithms.
85
92
key , err := ecdsa .GenerateKey (elliptic .P521 (), rand .Reader )
93
+ if err != nil {
94
+ return nil , nil , err
95
+ }
86
96
return key .Public (), key , err
87
97
case jose .EdDSA :
88
98
pub , key , err := ed25519 .GenerateKey (rand .Reader )
89
99
return pub , key , err
90
100
case jose .RS256 , jose .RS384 , jose .RS512 , jose .PS256 , jose .PS384 , jose .PS512 :
91
101
key , err := rsa .GenerateKey (rand .Reader , bits )
102
+ if err != nil {
103
+ return nil , nil , err
104
+ }
92
105
return key .Public (), key , err
93
106
default :
94
107
return nil , nil , errors .New ("unknown `alg` for `use` = `sig`" )
@@ -106,6 +119,9 @@ func KeygenEnc(alg jose.KeyAlgorithm, bits int) (crypto.PublicKey, crypto.Privat
106
119
return nil , nil , errors .New ("too short key for RSA `alg`, 2048+ is required" )
107
120
}
108
121
key , err := rsa .GenerateKey (rand .Reader , bits )
122
+ if err != nil {
123
+ return nil , nil , err
124
+ }
109
125
return key .Public (), key , err
110
126
case jose .ECDH_ES , jose .ECDH_ES_A128KW , jose .ECDH_ES_A192KW , jose .ECDH_ES_A256KW :
111
127
var crv elliptic.Curve
@@ -120,6 +136,9 @@ func KeygenEnc(alg jose.KeyAlgorithm, bits int) (crypto.PublicKey, crypto.Privat
120
136
return nil , nil , errors .New ("unknown elliptic curve bit length, use one of 256, 384, 521" )
121
137
}
122
138
key , err := ecdsa .GenerateKey (crv , rand .Reader )
139
+ if err != nil {
140
+ return nil , nil , err
141
+ }
123
142
return key .Public (), key , err
124
143
default :
125
144
return nil , nil , errors .New ("unknown `alg` for `use` = `enc`" )
0 commit comments