public void DisposeKeyRing(string keyRingId) { KeyManagementServiceClient client = KeyManagementServiceClient.Create(); var listKeysRequest = new ListCryptoKeysRequest { ParentAsKeyRingName = new KeyRingName(ProjectId, LocationId, keyRingId), }; foreach (var key in client.ListCryptoKeys(listKeysRequest)) { if (key.RotationPeriod != null || key.NextRotationTime != null) { client.UpdateCryptoKey(new UpdateCryptoKeyRequest { CryptoKey = new CryptoKey { CryptoKeyName = key.CryptoKeyName, RotationPeriod = null, NextRotationTime = null, }, UpdateMask = new FieldMask { Paths = { "rotation_period", "next_rotation_time" } }, }); } var listKeyVersionsRequest = new ListCryptoKeyVersionsRequest { ParentAsCryptoKeyName = key.CryptoKeyName, Filter = "state != DESTROYED AND state != DESTROY_SCHEDULED", }; foreach (var keyVersion in client.ListCryptoKeyVersions(listKeyVersionsRequest)) { client.DestroyCryptoKeyVersion(new DestroyCryptoKeyVersionRequest { CryptoKeyVersionName = keyVersion.CryptoKeyVersionName, }); } } }