diff --git a/goKMS/kms/kmsintercom.go b/goKMS/kms/kmsintercom.go index 58e1c0236fb3437c8c663d215c835ad31aa6e6c5..e1b332b3dfcb7aede3a2016754401974d5591b2a 100644 --- a/goKMS/kms/kmsintercom.go +++ b/goKMS/kms/kmsintercom.go @@ -35,13 +35,21 @@ type kmsTalkerServer struct { func (s *kmsTalkerServer) InterComCapabilities(ctx context.Context, in *pb.InterComCapabilitiesRequest) (capReply *pb.InterComCapabilitiesReply, err error) { log.Debugf("Received InterComCapabilities request from peer KMS: %v", in.GetKmsId()) - peer, err := s.kms.FindPeerById(in.GetKmsId()) + peerKmsId := in.GetKmsId() + peer, err := s.kms.FindPeerById(peerKmsId) if err != nil { return nil, status.Errorf(codes.Aborted, err.Error(), in.GetKmsId()) } - peer.QuantumModule().Reset() - peer.QuantumModule().Initialize() + if in.ResetKeyStore { + log.Debugf("Resetting quantum module: %s for peer: %s", peerKmsId) + peer.QuantumModule().Reset() + log.Debugf("Initializing quantum module: %s for peer: %s", peerKmsId) + if err := peer.QuantumModule().Initialize(); err != nil { + return nil, status.Errorf(codes.Aborted, err.Error(), in.GetKmsId()) + } + log.Debugf("Successfully initialized quantum module: %s for peer %s", peer.QuantumModule().ID(), peerKmsId) + } // NOTE: InterComCapabilities should return the capabilities of the kms. // This could include supported key sizes, crypto algorithms, etc. @@ -148,7 +156,9 @@ func (s *kmsTalkerServer) SyncKeyIdsForBulk(ctx context.Context, in *pb.SyncKeyI } for keyId, key := range keyData { - eqm.KeyStore().AddKey(keyId, key) + if err := eqm.KeyStore().AddKey(keyId, key); err != nil { + log.Error(err) + } } delete(eqm.RawBulkKeys, in.GetBulkId()) diff --git a/goKMS/kms/peers/danetQuantummodule.go b/goKMS/kms/peers/danetQuantummodule.go index 08fabd86d0128cb868fb5c6358555c78fd0f10e7..fa1487c1545f18b2be7987aac3553c9ddfc930bb 100644 --- a/goKMS/kms/peers/danetQuantummodule.go +++ b/goKMS/kms/peers/danetQuantummodule.go @@ -120,7 +120,9 @@ func (qm *DanetQuantumModule) Sync() error { } for keyId, key := range keyData { - qm.keyStore.AddKey(keyId, key) + if err := qm.keyStore.AddKey(keyId, key); err != nil { + log.Error(err) + } } qm.RawBulkKeysMutex.Lock() diff --git a/goKMS/kms/peers/etsi14Quantummodule.go b/goKMS/kms/peers/etsi14Quantummodule.go index 0f0ee7f11e20e79afe0bed678b330d6b655f0973..41119283a6261e0b8299f03e64048df48288887d 100644 --- a/goKMS/kms/peers/etsi14Quantummodule.go +++ b/goKMS/kms/peers/etsi14Quantummodule.go @@ -118,16 +118,17 @@ func (qm *ETSI014HTTPQuantumModule) Initialize() error { // start polling keys if qm.master { go func() { - restartWaitingTime := time.Duration(20) * time.Second + restartWaitingTime := time.Duration(2) * time.Minute ticker := time.NewTicker(restartWaitingTime) defer ticker.Stop() - // immediately start with the ticker instead of waiting the defined amount RestartFetchLoop: for { + // immediately start with the ticker instead of waiting the defined amount + qm.doKeyFetching(ctx) select { case <-ticker.C: - qm.doKeyFetching(ctx) + continue case <-ctx.Done(): break RestartFetchLoop } diff --git a/goKMS/kms/store/kms-keystore.go b/goKMS/kms/store/kms-keystore.go index 652ff3373d53f66648a66905f16531c55f334f78..ef1a5212aa1933dc2ca104d64b72412bfb879c94 100644 --- a/goKMS/kms/store/kms-keystore.go +++ b/goKMS/kms/store/kms-keystore.go @@ -120,7 +120,9 @@ func AddETSIKeysToKeystore(keyStore *KmsKeyStore, keyContainer []etsi14.KeyConta return err } // add to keystore - keyStore.AddKey(keyId, key) + if err := keyStore.AddKey(keyId, key); err != nil { + log.Error(err) + } } log.Debugf("Current key store length: %d", keyStore.Length()) return nil