MCPcopy Create free account
hub / github.com/getsops/sops / DecryptContext

Method DecryptContext

hckms/keysource.go:201–235  ·  view source on GitHub ↗

DecryptContext decrypts the EncryptedKey with HuaweiCloud KMS and returns the result.

(ctx context.Context)

Source from the content-addressed store, hash-verified

199
200// DecryptContext decrypts the EncryptedKey with HuaweiCloud KMS and returns the result.
201func (key *MasterKey) DecryptContext(ctx context.Context) ([]byte, error) {
202 client, err := key.createKMSClient(ctx)
203 if err != nil {
204 log.WithField("keyID", key.KeyID).Info("Decryption failed")
205 return nil, fmt.Errorf("failed to create HuaweiCloud KMS client: %w", err)
206 }
207
208 decryptAlgorithm := model.GetDecryptDataRequestBodyEncryptionAlgorithmEnum().SYMMETRIC_DEFAULT
209
210 request := &model.DecryptDataRequest{
211 Body: &model.DecryptDataRequestBody{
212 CipherText: key.EncryptedKey,
213 EncryptionAlgorithm: &decryptAlgorithm,
214 KeyId: &key.KeyUUID,
215 },
216 }
217
218 response, err := client.DecryptData(request)
219 if err != nil {
220 log.WithField("keyID", key.KeyID).Info("Decryption failed")
221 return nil, fmt.Errorf("failed to decrypt sops data key with HuaweiCloud KMS: %w", err)
222 }
223
224 if response.PlainText == nil {
225 return nil, fmt.Errorf("decryption response missing plaintext")
226 }
227 decrypted, err := base64.StdEncoding.DecodeString(*response.PlainText)
228 if err != nil {
229 log.WithField("keyID", key.KeyID).Info("Decryption failed")
230 return nil, fmt.Errorf("failed to base64 decode decrypted data key: %w", err)
231 }
232
233 log.WithField("keyID", key.KeyID).Info("Decryption succeeded")
234 return decrypted, nil
235}
236
237// NeedsRotation returns whether the data key needs to be rotated or not.
238func (key *MasterKey) NeedsRotation() bool {

Callers 1

DecryptMethod · 0.95

Calls 1

createKMSClientMethod · 0.95

Tested by

no test coverage detected