public static bool DoVerifyEcDsaSha256P256_old(IEnumerable <BufLen> bufs, I2PSigningPublicKey key, I2PSignature signed) { if (!SupportedSignatureType(signed.Certificate.SignatureType)) { throw new NotImplementedException(); } var sha = new Sha256Digest(); foreach (var buf in bufs) { sha.BlockUpdate(buf.BaseArray, buf.BaseArrayOffset, buf.Length); } var hash = new byte[sha.GetDigestSize()]; sha.DoFinal(hash, 0); var p = Org.BouncyCastle.Asn1.Nist.NistNamedCurves.GetByName("P-256"); var param = new ECDomainParameters(p.Curve, p.G, p.N, p.H); var pk = new ECPublicKeyParameters(p.Curve.DecodePoint(key.ToByteArray()), param); var dsa = new Org.BouncyCastle.Crypto.Signers.DsaSigner(); var sigsize = signed.Certificate.SignatureLength; var r = new BigInteger(1, signed.Sig.BaseArray, signed.Sig.BaseArrayOffset + 0, sigsize / 2); var s = new BigInteger(1, signed.Sig.BaseArray, signed.Sig.BaseArrayOffset + sigsize / 2, sigsize / 2); dsa.Init(false, pk); var result = dsa.VerifySignature(hash, r, s); DebugUtils.LogDebug("DoVerifyEcDsaSha256P256: " + result.ToString()); return(result); }
public static bool DoVerifyEcDsa( IEnumerable <BufLen> bufs, I2PSigningPublicKey key, I2PSignature signed, IDigest digest, X9ECParameters ecparam) { if (!SupportedSignatureType(signed.Certificate.SignatureType)) { throw new NotImplementedException(); } foreach (var buf in bufs) { digest.BlockUpdate(buf.BaseArray, buf.BaseArrayOffset, buf.Length); } var hash = new byte[digest.GetDigestSize()]; digest.DoFinal(hash, 0); var param = new ECDomainParameters(ecparam.Curve, ecparam.G, ecparam.N, ecparam.H); var pk = new ECPublicKeyParameters(ecparam.Curve.DecodePoint(key.ToByteArray()), param); var dsa = new Org.BouncyCastle.Crypto.Signers.DsaSigner(); var sigsize = signed.Certificate.SignatureLength; var r = new BigInteger(1, signed.Sig.BaseArray, signed.Sig.BaseArrayOffset, sigsize / 2); var s = new BigInteger(1, signed.Sig.BaseArray, signed.Sig.BaseArrayOffset + sigsize / 2, sigsize / 2); dsa.Init(false, pk); var result = dsa.VerifySignature(hash, r, s); DebugUtils.LogDebug("DoVerifyEcDsa: " + result.ToString() + ": " + digest.ToString()); return(result); }
public static bool DoVerifyEdDSASHA512Ed25519(IEnumerable <BufLen> bufs, I2PSigningPublicKey key, I2PSignature signed) { return(Chaos.NaCl.Ed25519.Verify( signed.Sig.ToByteArray(), bufs.SelectMany(b => b .ToByteArray()) .ToArray(), key.ToByteArray())); }