/// <summary> /// Wraps a symmetric key and then unwrapps the wrapped key /// </summary> /// <param name="key"> key bundle </param> private static void WrapUnwrap(KeyBundle key) { KeyOperationResult wrappedKey; var algorithm = inputValidator.GetEncryptionAlgorithm(); byte[] symmetricKey = inputValidator.GetSymmetricKey(); string keyVersion = inputValidator.GetKeyVersion(); if (keyVersion != string.Empty) { var vaultAddress = inputValidator.GetVaultAddress(); string keyName = inputValidator.GetKeyName(true); wrappedKey = keyVaultClient.WrapKeyAsync(vaultAddress, keyName, keyVersion, algorithm, symmetricKey).GetAwaiter().GetResult(); } else { // If the key ID is not initialized get the key id from args var keyId = (key != null) ? key.Key.Kid : inputValidator.GetKeyId(); // Wrap the symmetric key wrappedKey = keyVaultClient.WrapKeyAsync(keyId, algorithm, symmetricKey).GetAwaiter().GetResult(); } Console.Out.WriteLine(string.Format("The symmetric key is wrapped using key id {0} and algorithm {1}", wrappedKey.Kid, algorithm)); // Unwrap the symmetric key var unwrappedKey = keyVaultClient.UnwrapKeyAsync(wrappedKey.Kid, algorithm, wrappedKey.Result).GetAwaiter().GetResult(); Console.Out.WriteLine(string.Format("The unwrapped key is{0}the same as the original key!", symmetricKey.SequenceEqual(unwrappedKey.Result) ? " " : " not ")); }