public override EncryptResult Encrypt(EncryptParameters parameters, CancellationToken cancellationToken) { Argument.AssertNotNull(parameters, nameof(parameters)); ThrowIfTimeInvalid(); EncryptionAlgorithm algorithm = parameters.Algorithm; RSAEncryptionPadding padding = algorithm.GetRsaEncryptionPadding(); if (padding is null) { KeysEventSource.Singleton.AlgorithmNotSupported(nameof(Encrypt), algorithm); return(null); } byte[] ciphertext = Encrypt(parameters.Plaintext, padding); EncryptResult result = null; if (ciphertext != null) { result = new EncryptResult { Algorithm = algorithm, Ciphertext = ciphertext, KeyId = KeyMaterial.Id, }; } return(result); }
/// <summary> /// Encrypts the specified plain text. /// </summary> /// <param name="algorithm">The <see cref="EncryptionAlgorithm"/> to use.</param> /// <param name="plaintext">The data to encrypt.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> to cancel the operation.</param> /// <returns> /// The result of the encrypt operation. The returned <see cref="EncryptResult"/> contains the encrypted data /// along with all other information needed to decrypt it. This information should be stored with the encrypted data. /// </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 EncryptResult Encrypt(EncryptionAlgorithm algorithm, byte[] plaintext, CancellationToken cancellationToken = default) { EncryptResult result = null; if (_provider.SupportsOperation(KeyOperation.Encrypt)) { result = _provider.Encrypt(algorithm, plaintext, cancellationToken); } return(result ?? throw LocalCryptographyProvider.CreateOperationNotSupported(nameof(KeyOperation.Encrypt))); }
/// <summary> /// Encrypts the specified plain text. /// </summary> /// <param name="algorithm">The <see cref="EncryptionAlgorithm"/> to use.</param> /// <param name="plaintext">The data to encrypt.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> to cancel the operation.</param> /// <returns> /// The result of the encrypt operation. The returned <see cref="EncryptResult"/> contains the encrypted data /// along with all other information needed to decrypt it. This information should be stored with the encrypted data. /// </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 <EncryptResult> EncryptAsync(EncryptionAlgorithm algorithm, byte[] plaintext, CancellationToken cancellationToken = default) { EncryptResult result = null; if (_provider.SupportsOperation(KeyOperation.Encrypt)) { result = await _provider.EncryptAsync(algorithm, plaintext, cancellationToken).ConfigureAwait(false); } return(result ?? throw LocalCryptographyProvider.CreateOperationNotSupported(nameof(KeyOperation.Encrypt))); }
/// <summary> /// Encrypts plaintext. /// </summary> /// <param name="parameters">An <see cref="EncryptParameters"/> containing the data to encrypt and other parameters for algorithm-dependent encryption.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> to cancel the operation.</param> /// <returns> /// The result of the encrypt operation. The returned <see cref="EncryptResult"/> contains the encrypted data /// along with all other information needed to decrypt it. This information should be stored with the encrypted data. /// </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 <EncryptResult> EncryptAsync(EncryptParameters parameters, CancellationToken cancellationToken = default) { Argument.AssertNotNull(parameters, nameof(parameters)); EncryptResult result = null; if (_provider.SupportsOperation(KeyOperation.Encrypt)) { result = await _provider.EncryptAsync(parameters, cancellationToken).ConfigureAwait(false); } return(result ?? throw LocalCryptographyProvider.CreateOperationNotSupported(nameof(KeyOperation.Encrypt))); }
/// <summary> /// Encrypts plaintext. /// </summary> /// <param name="parameters">An <see cref="EncryptParameters"/> containing the data to encrypt and other parameters for algorithm-dependent encryption.</param> /// <param name="cancellationToken">A <see cref="CancellationToken"/> to cancel the operation.</param> /// <returns> /// The result of the encrypt operation. The returned <see cref="EncryptResult"/> contains the encrypted data /// along with all other information needed to decrypt it. This information should be stored with the encrypted data. /// </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 EncryptResult Encrypt(EncryptParameters parameters, CancellationToken cancellationToken = default) { Argument.AssertNotNull(parameters, nameof(parameters)); EncryptResult result = null; if (_provider.SupportsOperation(KeyOperation.Encrypt)) { result = _provider.Encrypt(parameters, cancellationToken); } return(result ?? throw LocalCryptographyProvider.CreateOperationNotSupported(nameof(KeyOperation.Encrypt))); }
public EncryptResult Encrypt(EncryptionAlgorithm algorithm, byte[] plaintext, byte[] iv, byte[] authenticationData, CancellationToken cancellationToken) { Argument.AssertNotNull(plaintext, nameof(plaintext)); RSAEncryptionPadding padding = algorithm.GetRsaEncryptionPadding(); byte[] ciphertext = Encrypt(plaintext, padding); EncryptResult result = null; if (ciphertext != null) { result = new EncryptResult { Algorithm = algorithm, Ciphertext = ciphertext, KeyId = _jwk.Id, }; } return(result); }
public override EncryptResult Encrypt(EncryptionAlgorithm algorithm, byte[] plaintext, CancellationToken cancellationToken) { Argument.AssertNotNull(plaintext, nameof(plaintext)); ThrowIfTimeInvalid(); RSAEncryptionPadding padding = algorithm.GetRsaEncryptionPadding(); byte[] ciphertext = Encrypt(plaintext, padding); EncryptResult result = null; if (ciphertext != null) { result = new EncryptResult { Algorithm = algorithm, Ciphertext = ciphertext, KeyId = KeyMaterial.Id, }; } return(result); }
public virtual Task <EncryptResult> EncryptAsync(EncryptParameters parameters, CancellationToken cancellationToken = default) { EncryptResult result = Encrypt(parameters, cancellationToken); return(Task.FromResult(result)); }
public virtual Task <EncryptResult> EncryptAsync(EncryptionAlgorithm algorithm, byte[] plaintext, CancellationToken cancellationToken = default) { EncryptResult result = Encrypt(algorithm, plaintext, cancellationToken); return(Task.FromResult(result)); }
public Task <EncryptResult> EncryptAsync(EncryptionAlgorithm algorithm, byte[] plaintext, byte[] iv, byte[] authenticationData, CancellationToken cancellationToken) { EncryptResult result = Encrypt(algorithm, plaintext, iv, authenticationData, cancellationToken); return(Task.FromResult(result)); }
public virtual Task <EncryptResult> EncryptAsync(EncryptOptions options, CancellationToken cancellationToken = default) { EncryptResult result = Encrypt(options, cancellationToken); return(Task.FromResult(result)); }