<PackageReference Include="SSH.NET" Version="2020.0.1" />

EcdsaDigitalSignature

Implements ECDSA digital signature algorithm.
using System; namespace Renci.SshNet.Security.Cryptography { public class EcdsaDigitalSignature : DigitalSignature, IDisposable { private readonly EcdsaKey _key; private bool _isDisposed; public EcdsaDigitalSignature(EcdsaKey key) { if (key == null) throw new ArgumentNullException("key"); _key = key; } public override bool Verify(byte[] input, byte[] signature) { int sig_size = (_key.KeyLength == 521) ? 132 : (_key.KeyLength / 4); SshDataSignature sshDataSignature = new SshDataSignature(signature, sig_size); return _key.Ecdsa.VerifyData(input, sshDataSignature.Signature, _key.HashAlgorithm); } public override byte[] Sign(byte[] input) { byte[] array = _key.Ecdsa.SignData(input, _key.HashAlgorithm); return new SshDataSignature(array.Length) { Signature = array }.GetBytes(); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!_isDisposed && disposing) _isDisposed = true; } ~EcdsaDigitalSignature() { Dispose(false); } } }