Skip to content

Commit 2980706

Browse files
authored
Merge pull request #481 from smallstep/mariano/fix-decrypter
Add URI support for CloudKMS decrypter
2 parents 9d04f30 + 875d84d commit 2980706

File tree

5 files changed

+23
-3
lines changed

5 files changed

+23
-3
lines changed

kms/cloudkms/cloudkms.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (k *CloudKMS) CreateSigner(req *apiv1.CreateSignerRequest) (crypto.Signer,
159159
if req.SigningKey == "" {
160160
return nil, errors.New("signing key cannot be empty")
161161
}
162-
return NewSigner(k.client, resourceName(req.SigningKey))
162+
return NewSigner(k.client, req.SigningKey)
163163
}
164164

165165
// CreateKey creates in Google's Cloud KMS a new asymmetric key for signing.

kms/cloudkms/decrypter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func NewDecrypter(client KeyManagementClient, decryptionKey string) (*Decrypter,
3737
// Make sure that the key exists.
3838
decrypter := &Decrypter{
3939
client: client,
40-
decryptionKey: decryptionKey,
40+
decryptionKey: resourceName(decryptionKey),
4141
}
4242
if err := decrypter.preloadKey(decryptionKey); err != nil { // TODO(hs): (option for) lazy load instead?
4343
return nil, err

kms/cloudkms/decrypter_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ func TestCloudKMS_CreateDecrypter(t *testing.T) {
4343
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
4444
},
4545
}}, args{&apiv1.CreateDecrypterRequest{DecryptionKey: keyName}}, &Decrypter{client: &MockClient{}, decryptionKey: keyName, publicKey: pk}, false},
46+
{"ok with uri", fields{&MockClient{
47+
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
48+
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
49+
},
50+
}}, args{&apiv1.CreateDecrypterRequest{DecryptionKey: "cloudkms:resource=" + keyName}}, &Decrypter{client: &MockClient{}, decryptionKey: keyName, publicKey: pk}, false},
51+
{"ok with opaque uri", fields{&MockClient{
52+
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
53+
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
54+
},
55+
}}, args{&apiv1.CreateDecrypterRequest{DecryptionKey: "cloudkms:" + keyName}}, &Decrypter{client: &MockClient{}, decryptionKey: keyName, publicKey: pk}, false},
4656
{"fail", fields{&MockClient{
4757
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
4858
return nil, fmt.Errorf("test error")

kms/cloudkms/signer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func NewSigner(c KeyManagementClient, signingKey string) (*Signer, error) {
2626
// Make sure that the key exists.
2727
signer := &Signer{
2828
client: c,
29-
signingKey: signingKey,
29+
signingKey: resourceName(signingKey),
3030
}
3131
if err := signer.preloadKey(signingKey); err != nil {
3232
return nil, err

kms/cloudkms/signer_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ func Test_newSigner(t *testing.T) {
4141
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
4242
},
4343
}, "signingKey"}, &Signer{client: &MockClient{}, signingKey: "signingKey", publicKey: pk}, false},
44+
{"ok with uri", args{&MockClient{
45+
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
46+
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
47+
},
48+
}, "cloudkms:resource=signingKey"}, &Signer{client: &MockClient{}, signingKey: "signingKey", publicKey: pk}, false},
49+
{"ok with opaque uri", args{&MockClient{
50+
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
51+
return &kmspb.PublicKey{Pem: string(pemBytes)}, nil
52+
},
53+
}, "cloudkms:signingKey"}, &Signer{client: &MockClient{}, signingKey: "signingKey", publicKey: pk}, false},
4454
{"fail get public key", args{&MockClient{
4555
getPublicKey: func(_ context.Context, _ *kmspb.GetPublicKeyRequest, _ ...gax.CallOption) (*kmspb.PublicKey, error) {
4656
return nil, fmt.Errorf("an error")

0 commit comments

Comments
 (0)