Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pkg/common/cryptoutil/keys.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ func RSAKeyMatches(privateKey *rsa.PrivateKey, publicKey *rsa.PublicKey) bool {
}

func GetPublicKey(ctx context.Context, km keymanager.KeyManager, keyID string) (crypto.PublicKey, error) {
ctx, cancel := context.WithTimeout(ctx, keymanager.RPCTimeout)
defer cancel()

resp, err := km.GetPublicKey(ctx, &keymanager.GetPublicKeyRequest{
KeyId: keyID,
})
Expand Down
8 changes: 7 additions & 1 deletion pkg/common/cryptoutil/signer.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,16 @@ func (s *KeyManagerSigner) Sign(_ io.Reader, digest []byte, opts crypto.SignerOp
// rand is purposefully ignored since it can't be communicated between
// the plugin boundary. The crypto.Signer interface implies this is ok
// when it says "possibly using entropy from rand".
return s.SignContext(context.Background(), digest, opts)
ctx, cancel := context.WithTimeout(context.Background(), keymanager.RPCTimeout)
defer cancel()

return s.SignContext(ctx, digest, opts)
}

func GenerateKeyRaw(ctx context.Context, km keymanager.KeyManager, keyID string, keyType keymanager.KeyType) ([]byte, error) {
ctx, cancel := context.WithTimeout(ctx, keymanager.RPCTimeout)
defer cancel()

resp, err := km.GenerateKey(ctx, &keymanager.GenerateKeyRequest{
KeyId: keyID,
KeyType: keyType,
Expand Down
4 changes: 4 additions & 0 deletions pkg/common/telemetry/server/keymanager/wrapper.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ func WithMetrics(km keymanager.KeyManager, metrics telemetry.Metrics) keymanager
func (w serverKeyManagerWrapper) GenerateKey(ctx context.Context, req *keymanager.GenerateKeyRequest) (_ *keymanager.GenerateKeyResponse, err error) {
callCounter := StartGenerateKeyCall(w.m)
defer callCounter.Done(&err)

ctx, cancel := context.WithTimeout(ctx, keymanager.RPCTimeout)
defer cancel()

return w.k.GenerateKey(ctx, req)
}

Expand Down
4 changes: 4 additions & 0 deletions pkg/server/ca/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -690,6 +690,10 @@ func (m *Manager) loadJWTKeySlotFromEntry(ctx context.Context, entry *JWTKeyEntr

func (m *Manager) makeSigner(ctx context.Context, keyID string) (crypto.Signer, error) {
km := m.c.Catalog.GetKeyManager()

ctx, cancel := context.WithTimeout(ctx, keymanager.RPCTimeout)
defer cancel()

resp, err := km.GetPublicKey(ctx, &keymanager.GetPublicKeyRequest{
KeyId: keyID,
})
Expand Down
6 changes: 6 additions & 0 deletions pkg/server/endpoints/bundle/acme_auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ type acmeKeyStore struct {
func (ks *acmeKeyStore) GetPrivateKey(ctx context.Context, id string) (crypto.Signer, error) {
keyID := acmeKeyPrefix + id

ctx, cancel := context.WithTimeout(ctx, keymanager.RPCTimeout)
defer cancel()

resp, err := ks.km.GetPublicKey(ctx, &keymanager.GetPublicKeyRequest{
KeyId: keyID,
})
Expand All @@ -127,6 +130,9 @@ func (ks *acmeKeyStore) NewPrivateKey(ctx context.Context, id string, keyType au
return nil, errs.New("unsupported key type: %d", keyType)
}

ctx, cancel := context.WithTimeout(ctx, keymanager.RPCTimeout)
defer cancel()

resp, err := ks.km.GenerateKey(ctx, &keymanager.GenerateKeyRequest{
KeyId: keyID,
KeyType: kmKeyType,
Expand Down
5 changes: 5 additions & 0 deletions pkg/server/plugin/keymanager/constant.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package keymanager

import "time"

const RPCTimeout = 30 * time.Second