/// <summary> /// Decrypts the specified cipher text. /// </summary> /// <param name="algorithm">The <see cref="EncryptionAlgorithm"/> to use.</param> /// <param name="ciphertext">The encrypted data to decrypt.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> to cancel the operation.</param> /// <returns> /// The result of the decrypt operation. The returned <see cref="DecryptResult"/> contains the encrypted data /// along with information regarding the algorithm and key used to decrypt it. /// </returns> /// <exception cref="ArgumentException">The specified <paramref name="algorithm"/> does not match the key corresponding to the key identifier.</exception> /// <exception cref="CryptographicException">The local cryptographic provider threw an exception.</exception> /// <exception cref="InvalidOperationException">The key is invalid for the current operation.</exception> /// <exception cref="NotSupportedException">The operation is not supported with the specified key.</exception> public virtual async Task <DecryptResult> DecryptAsync(EncryptionAlgorithm algorithm, byte[] ciphertext, CancellationToken cancellationToken = default) { DecryptResult result = null; if (_provider.SupportsOperation(KeyOperation.Decrypt)) { result = await _provider.DecryptAsync(algorithm, ciphertext, cancellationToken).ConfigureAwait(false); } return(result ?? throw LocalCryptographyProvider.CreateOperationNotSupported(nameof(KeyOperation.Decrypt))); }
/// <summary> /// Decrypts ciphertext. /// </summary> /// <param name="parameters">A <see cref="DecryptParameters"/> containing the data to decrypt and other parameters for algorithm-dependent decryption.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> to cancel the operation.</param> /// <returns> /// The result of the decrypt operation. The returned <see cref="DecryptResult"/> contains the encrypted data /// along with information regarding the algorithm and key used to decrypt it. /// </returns> /// <exception cref="ArgumentException">The specified algorithm does not match the key corresponding to the key identifier.</exception> /// <exception cref="ArgumentNullException"><paramref name="parameters"/> is null.</exception> /// <exception cref="CryptographicException">The local cryptographic provider threw an exception.</exception> /// <exception cref="InvalidOperationException">The key is invalid for the current operation.</exception> /// <exception cref="NotSupportedException">The operation is not supported with the specified key.</exception> public virtual async Task <DecryptResult> DecryptAsync(DecryptParameters parameters, CancellationToken cancellationToken = default) { Argument.AssertNotNull(parameters, nameof(parameters)); DecryptResult result = null; if (_provider.SupportsOperation(KeyOperation.Decrypt)) { result = await _provider.DecryptAsync(parameters, cancellationToken).ConfigureAwait(false); } return(result ?? throw LocalCryptographyProvider.CreateOperationNotSupported(nameof(KeyOperation.Decrypt))); }
/// <summary> /// Decrypts the specified cipher text. /// </summary> /// <param name="algorithm">The algorithm to use</param> /// <param name="ciphertext">The encrypted data to decrypt</param> /// <param name="iv"> /// The initialization vector. This should only be specified when using symmetric encryption algorithms, /// otherwise the caller must omit the parameter or pass null. /// </param> /// <param name="authenticationData"> /// The authentication data. This should only be specified when using authenticated symmetric encryption algorithms, /// otherwise the caller must omit the parameter or pass null. /// </param> /// <param name="authenticationTag">The authentication tag. This should only be specified when using authenticated /// symmetric encryption algorithms, otherwise the caller must omit the parameter or pass null. /// </param> /// <param name="cancellationToken">Cancellation token</param> /// <returns> /// The result of the decrypt operation. The returned <see cref="DecryptResult"/> contains the encrypted data /// along with information regarding the algorithm and key used to decrypt it. /// </returns> public virtual async Task <DecryptResult> DecryptAsync(EncryptionAlgorithm algorithm, byte[] ciphertext, byte[] iv = default, byte[] authenticationData = default, byte[] authenticationTag = default, CancellationToken cancellationToken = default) { using DiagnosticScope scope = _pipeline.CreateScope("Azure.Security.KeyVault.Keys.Cryptography.CryptographyClient.Decrypt"); scope.AddAttribute("key", _keyId); scope.Start(); try { return(await _cryptoProvider.DecryptAsync(algorithm, ciphertext, iv, authenticationData, authenticationTag, cancellationToken).ConfigureAwait(false)); } catch (Exception e) { scope.Failed(e); throw; } }
public async Task <IActionResult> Decrypt(string ciphertext) { var result = await _cryptographyProvider.DecryptAsync(ciphertext); return(Json(result)); }