Skip to content
This repository was archived by the owner on Feb 27, 2023. It is now read-only.

Commit 1c1c651

Browse files
authored
Merge pull request #250 from trung/error-checking
added error checking avoid nil referencing if error occurs
2 parents 8bad614 + dc74aa1 commit 1c1c651

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

jose-util/generate.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,30 @@ func GenerateSigningKey(alg jose.SignatureAlgorithm, bits int) (crypto.PublicKey
5454
switch alg {
5555
case jose.ES256:
5656
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
57+
if err != nil {
58+
return nil, nil, err
59+
}
5760
return key.Public(), key, err
5861
case jose.ES384:
5962
key, err := ecdsa.GenerateKey(elliptic.P384(), rand.Reader)
63+
if err != nil {
64+
return nil, nil, err
65+
}
6066
return key.Public(), key, err
6167
case jose.ES512:
6268
key, err := ecdsa.GenerateKey(elliptic.P521(), rand.Reader)
69+
if err != nil {
70+
return nil, nil, err
71+
}
6372
return key.Public(), key, err
6473
case jose.EdDSA:
6574
pub, key, err := ed25519.GenerateKey(rand.Reader)
6675
return pub, key, err
6776
case jose.RS256, jose.RS384, jose.RS512, jose.PS256, jose.PS384, jose.PS512:
6877
key, err := rsa.GenerateKey(rand.Reader, bits)
78+
if err != nil {
79+
return nil, nil, err
80+
}
6981
return key.Public(), key, err
7082
default:
7183
return nil, nil, fmt.Errorf("unknown algorithm %s for signing key", alg)
@@ -83,6 +95,9 @@ func GenerateEncryptionKey(alg jose.KeyAlgorithm, bits int) (crypto.PublicKey, c
8395
return nil, nil, errors.New("invalid key size for RSA key, 2048 or more is required")
8496
}
8597
key, err := rsa.GenerateKey(rand.Reader, bits)
98+
if err != nil {
99+
return nil, nil, err
100+
}
86101
return key.Public(), key, err
87102
case jose.ECDH_ES, jose.ECDH_ES_A128KW, jose.ECDH_ES_A192KW, jose.ECDH_ES_A256KW:
88103
var crv elliptic.Curve
@@ -97,6 +112,9 @@ func GenerateEncryptionKey(alg jose.KeyAlgorithm, bits int) (crypto.PublicKey, c
97112
return nil, nil, errors.New("invalid elliptic curve key size, use one of 256, 384, or 521")
98113
}
99114
key, err := ecdsa.GenerateKey(crv, rand.Reader)
115+
if err != nil {
116+
return nil, nil, err
117+
}
100118
return key.Public(), key, err
101119
default:
102120
return nil, nil, fmt.Errorf("unknown algorithm %s for encryption key", alg)

0 commit comments

Comments
 (0)