private static string GetNameForKeyEncryptionKeyAlgorithm(KeyEncryptionKeyAlgorithm algorithm) { if (algorithm == KeyEncryptionKeyAlgorithm.RSA_OAEP) { return(EncryptionKeyStoreProviderImpl.RsaOaepWrapAlgorithm); } throw new InvalidOperationException(string.Format("Unexpected algorithm {0}", algorithm)); }
public override byte[] UnwrapKey(string encryptionKeyId, KeyEncryptionKeyAlgorithm algorithm, byte[] encryptedKey) { // since we do not expose GetOrCreateDataEncryptionKey we first look up the cache. // Cache miss results in call to UnWrapCore which updates the cache after UnwrapKeyAsync is called. return(this.GetOrCreateDataEncryptionKey(encryptedKey.ToHexString(), UnWrapKeyCore)); // delegate that is called by GetOrCreateDataEncryptionKey, which unwraps the key and updates the cache in case of cache miss. byte[] UnWrapKeyCore() { return(this.keyEncryptionKeyResolver .Resolve(encryptionKeyId) .UnwrapKey(EncryptionKeyStoreProviderImpl.GetNameForKeyEncryptionKeyAlgorithm(algorithm), encryptedKey)); } }
public override byte[] WrapKey(string encryptionKeyId, KeyEncryptionKeyAlgorithm algorithm, byte[] key) { return(this.keyEncryptionKeyResolver .Resolve(encryptionKeyId) .WrapKey(EncryptionKeyStoreProviderImpl.GetNameForKeyEncryptionKeyAlgorithm(algorithm), key)); }