/// <summary> /// Unwraps a symmetric key using the specified wrapping key and algorithm. /// </summary> /// <param name="wrappingKey">The wrapping key</param> /// <param name="wrappedKey">The symmetric key to unwrap</param> /// <param name="algorithm">The algorithm to use</param> /// <returns>The unwrapped key</returns> public static async Task <KeyOperationResult> UnwrapKeyAsync(this KeyVaultClient client, KeyBundle wrappingKey, byte[] wrappedKey, string algorithm) { if (wrappingKey == null) { throw new ArgumentNullException("wrappingKey"); } return(await client.UnwrapKeyAsync(wrappingKey.Key, wrappedKey, algorithm).ConfigureAwait(false)); }
public Task <byte[]> UnwrapKeyAsync(byte[] ciphertext, string algorithm = null, CancellationToken token = default(CancellationToken)) { if (_implementation == null) { throw new ObjectDisposedException("KeyVaultKey"); } if (string.IsNullOrWhiteSpace(algorithm)) { algorithm = DefaultKeyWrapAlgorithm; } // Never local return(_client.UnwrapKeyAsync(_implementation.Kid, algorithm, ciphertext, token) .ContinueWith(result => result.Result.Result, token)); }