using Google.Cloud.Kms.V1; using Google.Protobuf.WellKnownTypes; using System; namespace StellaOps.Cryptography.Kms; internal sealed partial class GcpKmsFacade { private static GcpCryptoKeyVersionState MapState(CryptoKeyVersion.Types.CryptoKeyVersionState state) => state switch { CryptoKeyVersion.Types.CryptoKeyVersionState.Enabled => GcpCryptoKeyVersionState.Enabled, CryptoKeyVersion.Types.CryptoKeyVersionState.Disabled => GcpCryptoKeyVersionState.Disabled, CryptoKeyVersion.Types.CryptoKeyVersionState.DestroyScheduled => GcpCryptoKeyVersionState.DestroyScheduled, CryptoKeyVersion.Types.CryptoKeyVersionState.Destroyed => GcpCryptoKeyVersionState.Destroyed, CryptoKeyVersion.Types.CryptoKeyVersionState.PendingGeneration => GcpCryptoKeyVersionState.PendingGeneration, CryptoKeyVersion.Types.CryptoKeyVersionState.PendingImport => GcpCryptoKeyVersionState.PendingImport, CryptoKeyVersion.Types.CryptoKeyVersionState.ImportFailed => GcpCryptoKeyVersionState.ImportFailed, CryptoKeyVersion.Types.CryptoKeyVersionState.GenerationFailed => GcpCryptoKeyVersionState.GenerationFailed, _ => GcpCryptoKeyVersionState.Unspecified, }; private DateTimeOffset ToDateTimeOffsetOrUtcNow(Timestamp? timestamp) { if (timestamp is null) { return _timeProvider.GetUtcNow(); } if (timestamp.Seconds == 0 && timestamp.Nanos == 0) { return _timeProvider.GetUtcNow(); } return timestamp.ToDateTimeOffset(); } }