public static byte[] GetMD5Fingerprint(this ISshKey aKey)
{
try {
using (MD5 md5 = MD5.Create()) {
if (aKey.GetPublicKeyParameters() is RsaKeyParameters && aKey.Version == SshVersion.SSH1) {
var rsaKeyParameters = aKey.GetPublicKeyParameters() as RsaKeyParameters;
int modSize = rsaKeyParameters.Modulus.ToByteArrayUnsigned().Length;
int expSize = rsaKeyParameters.Exponent.ToByteArrayUnsigned().Length;
byte[] md5Buffer = new byte[modSize + expSize];
rsaKeyParameters.Modulus.ToByteArrayUnsigned().CopyTo(md5Buffer, 0);
rsaKeyParameters.Exponent.ToByteArrayUnsigned().CopyTo(md5Buffer, modSize);
return md5.ComputeHash(md5Buffer);
}
return md5.ComputeHash(aKey.GetPublicKeyBlob());
}
} catch (Exception) {
return null;
}
}