in fakekms/crypto_key_rpcs.go [154:186]
func (f *fakeKMS) UpdateCryptoKey(ctx context.Context, req *kmspb.UpdateCryptoKeyRequest) (*kmspb.CryptoKey, error) {
if err := allowlist("crypto_key", "update_mask").check(req); err != nil {
return nil, err
}
if len(req.UpdateMask.GetPaths()) == 0 {
return nil, errInvalidArgument("no fields selected for update")
}
name, err := parseCryptoKeyName(req.CryptoKey.Name)
if err != nil {
return nil, err
}
ck, err := f.cryptoKey(name)
if err != nil {
return nil, err
}
for _, p := range req.UpdateMask.Paths {
switch p {
case "version_template.algorithm":
if err := validateAlgorithm(req.CryptoKey.VersionTemplate.Algorithm, ck.pb.Purpose); err != nil {
return nil, err
}
ck.pb.VersionTemplate.Algorithm = req.CryptoKey.VersionTemplate.Algorithm
default:
return nil, errInvalidArgument("unsupported update path: %s", p)
}
}
return ck.pb, nil
}