Skip to content

Commit 375bd5a

Browse files
authored
fix: no longer use separate public and private keys in HSM key manager (#3401)
1 parent 016569c commit 375bd5a

File tree

5 files changed

+14
-27
lines changed

5 files changed

+14
-27
lines changed

hsm/manager_hsm.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func (m *KeyManager) GetKeySet(ctx context.Context, set string) (*jose.JSONWebKe
187187
}
188188

189189
func (m *KeyManager) DeleteKey(ctx context.Context, set, kid string) error {
190-
ctx, span := otel.GetTracerProvider().Tracer(tracingComponent).Start(ctx, "hsm.GetKeySet")
190+
ctx, span := otel.GetTracerProvider().Tracer(tracingComponent).Start(ctx, "hsm.DeleteKey")
191191
defer span.End()
192192
attrs := map[string]string{
193193
"set": set,
@@ -217,7 +217,7 @@ func (m *KeyManager) DeleteKey(ctx context.Context, set, kid string) error {
217217
}
218218

219219
func (m *KeyManager) DeleteKeySet(ctx context.Context, set string) error {
220-
ctx, span := otel.GetTracerProvider().Tracer(tracingComponent).Start(ctx, "hsm.GetKeySet")
220+
ctx, span := otel.GetTracerProvider().Tracer(tracingComponent).Start(ctx, "hsm.DeleteKeySet")
221221
defer span.End()
222222
attrs := map[string]string{
223223
"set": set,
@@ -361,14 +361,6 @@ func createKeys(key crypto11.Signer, kid, alg, use string) []jose.JSONWebKey {
361361
Certificates: []*x509.Certificate{},
362362
CertificateThumbprintSHA1: []uint8{},
363363
CertificateThumbprintSHA256: []uint8{},
364-
}, {
365-
Algorithm: alg,
366-
Use: use,
367-
Key: key.Public(),
368-
KeyID: kid,
369-
Certificates: []*x509.Certificate{},
370-
CertificateThumbprintSHA1: []uint8{},
371-
CertificateThumbprintSHA256: []uint8{},
372364
}}
373365
}
374366

hsm/manager_hsm_test.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -883,13 +883,5 @@ func createJSONWebKeys(keyPair *MockSignerDecrypter, kid string, alg string, use
883883
Certificates: []*x509.Certificate{},
884884
CertificateThumbprintSHA1: []uint8{},
885885
CertificateThumbprintSHA256: []uint8{},
886-
}, {
887-
Algorithm: alg,
888-
Use: use,
889-
Key: keyPair.Public(),
890-
KeyID: kid,
891-
Certificates: []*x509.Certificate{},
892-
CertificateThumbprintSHA1: []uint8{},
893-
CertificateThumbprintSHA256: []uint8{},
894886
}}
895887
}

jwk/handler_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,7 @@ func TestHandlerWellKnown(t *testing.T) {
8383
var known jose.JSONWebKeySet
8484
err = json.NewDecoder(res.Body).Decode(&known)
8585
require.NoError(t, err, "problem in decoding response")
86-
if conf.HSMEnabled() {
87-
require.Len(t, known.Keys, 2)
88-
} else {
89-
require.Len(t, known.Keys, 1)
90-
}
86+
require.Len(t, known.Keys, 1)
9187

9288
knownKey := known.Key("test-id-2")[0]
9389
require.NotNil(t, knownKey, "Could not find key public")

jwk/helper.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,11 @@ func ExcludePrivateKeys(set *jose.JSONWebKeySet) *jose.JSONWebKeySet {
119119

120120
func ExcludeOpaquePrivateKeys(set *jose.JSONWebKeySet) *jose.JSONWebKeySet {
121121
keys := new(jose.JSONWebKeySet)
122-
for _, k := range set.Keys {
123-
if _, opaque := k.Key.(jose.OpaqueSigner); !opaque {
124-
keys.Keys = append(keys.Keys, k)
122+
for i := range set.Keys {
123+
if _, opaque := set.Keys[i].Key.(jose.OpaqueSigner); opaque {
124+
keys.Keys = append(keys.Keys, josex.ToPublicKey(&set.Keys[i]))
125+
} else {
126+
keys.Keys = append(keys.Keys, set.Keys[i])
125127
}
126128
}
127129
return keys

jwk/helper_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,13 @@ func TestExcludeOpaquePrivateKeys(t *testing.T) {
189189
assert.NoError(t, err)
190190
require.Len(t, opaqueKeys.Keys, 1)
191191
opaqueKeys.Keys[0].Key = cryptosigner.Opaque(opaqueKeys.Keys[0].Key.(*rsa.PrivateKey))
192+
192193
keys := jwk.ExcludeOpaquePrivateKeys(opaqueKeys)
193-
require.Len(t, keys.Keys, 0)
194+
195+
require.Len(t, keys.Keys, 1)
196+
k := keys.Keys[0]
197+
_, isPublic := k.Key.(*rsa.PublicKey)
198+
assert.True(t, isPublic)
194199
}
195200

196201
func TestGetOrGenerateKeys(t *testing.T) {

0 commit comments

Comments
 (0)