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

DsaKey

public class DsaKey : Key, IDisposable
Contains DSA private and public key.
using Renci.SshNet.Common; using Renci.SshNet.Security.Cryptography; using System; using Renci.SshNet.Common; using Renci.SshNet.Security.Cryptography; using System; namespace Renci.SshNet.Security { public class RsaKey : Key, IDisposable { private bool _isDisposed; private RsaDigitalSignature _digitalSignature; public BigInteger Modulus => _privateKey[0]; public BigInteger Exponent => _privateKey[1]; public BigInteger D { get { if (_privateKey.Length > 2) return _privateKey[2]; return BigInteger.Zero; } } public BigInteger P { get { if (_privateKey.Length > 3) return _privateKey[3]; return BigInteger.Zero; } } public BigInteger Q { get { if (_privateKey.Length > 4) return _privateKey[4]; return BigInteger.Zero; } } public BigInteger DP { get { if (_privateKey.Length > 5) return _privateKey[5]; return BigInteger.Zero; } } public BigInteger DQ { get { if (_privateKey.Length > 6) return _privateKey[6]; return BigInteger.Zero; } } public BigInteger InverseQ { get { if (_privateKey.Length > 7) return _privateKey[7]; return BigInteger.Zero; } } public override int KeyLength => Modulus.BitLength; protected internal override DigitalSignature DigitalSignature { get { if (_digitalSignature == null) _digitalSignature = new RsaDigitalSignature(this); return _digitalSignature; } } public override BigInteger[] Public { get { return new BigInteger[2] { Exponent, Modulus }; } set { if (value.Length != 2) throw new InvalidOperationException("Invalid private key."); _privateKey = new BigInteger[2] { value[1], value[0] }; } } public override string ToString() { return "ssh-rsa"; } public RsaKey() { } public RsaKey(byte[] data) : base(data) { if (_privateKey.Length != 8) throw new InvalidOperationException("Invalid private key."); } public RsaKey(BigInteger modulus, BigInteger exponent, BigInteger d, BigInteger p, BigInteger q, BigInteger inverseQ) { _privateKey = new BigInteger[8] { modulus, exponent, d, p, q, PrimeExponent(d, p), PrimeExponent(d, q), inverseQ }; } private static BigInteger PrimeExponent(BigInteger privateExponent, BigInteger prime) { BigInteger divisor = prime - new BigInteger(1); BigInteger divisor; return privateExponent % divisor; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!_isDisposed && disposing) { RsaDigitalSignature digitalSignature = _digitalSignature; RsaDigitalSignature digitalSignature; if (digitalSignature != null) { digitalSignature.Dispose(); _digitalSignature = null; } _isDisposed = true; } } ~RsaKey() { Dispose(false); } } }