Example #1
0
        public override bool TrySign(ReadOnlySpan <byte> data, Span <byte> destination, out int bytesWritten)
        {
            if (data.IsEmpty)
            {
                ThrowHelper.ThrowArgumentNullException(ExceptionArgument.data);
            }

            if (_disposed)
            {
                ThrowHelper.ThrowObjectDisposedException(GetType());
            }

            if (_canOnlyVerify)
            {
                ThrowHelper.ThrowInvalidOperationException_RequirePrivateKey();
            }

            var rsa = _rsaPool.Get();

            try
            {
#if !NETSTANDARD2_0 && !NET461
                return(rsa.TrySignData(data, destination, _hashAlgorithm, _signaturePadding, out bytesWritten));
#else
                var result = rsa.SignData(data.ToArray(), _hashAlgorithm, _signaturePadding);
                bytesWritten = result.Length;
                result.CopyTo(destination);
                return(true);
#endif
            }
            finally
            {
                _rsaPool.Return(rsa);
            }
        }