/** * <p>Verifies the given ECDSA signature against the message bytes using the public key bytes.</p> * * <p>When using native ECDSA verification, data must be 32 bytes, and no element may be * larger than 520 bytes.</p> * * @param data Hash of the data to verify. * @param signature signature. * @param pub The public key bytes to use. * * @return - */ public static boolean verify(byte[] data, ECDSASignature signature, byte[] pub) { ECDSASigner signer = new ECDSASigner(); ECPublicKeyParameters params = new ECPublicKeyParameters(CURVE.getCurve().decodePoint(pub), CURVE); signer.init(false, params); try { return signer.verifySignature(data, signature.r, signature.s); } catch (NullPointerException npe) { // Bouncy Castle contains a bug that can cause NPEs given specially crafted signatures. // Those signatures are inherently invalid/attack sigs so we just fail them here rather than crash the thread. logger.error("Caught NPE inside bouncy castle", npe); return false; } }
throw new MissingPrivateKeyException(); if (privKey instanceof BCECPrivateKey) { ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest())); ECPrivateKeyParameters privKeyParams = new ECPrivateKeyParameters(((BCECPrivateKey) privKey).getD(), CURVE); signer.init(true, privKeyParams); BigInteger[] components = signer.generateSignature(input); return new ECDSASignature(components[0], components[1]).toCanonicalised(); } else {
ECPrivateKeyParameters ecPriv = ...; // this is the user's EC private key (not ephemeral) FixedSecureRandom fsr_k = new FixedSecureRandom(); fsr_k.setBytes(tempKeyK); ECDSASigner signer = new ECDSASigner(); ParametersWithRandom ecdsaprivrand = new ParametersWithRandom(ecPriv, fsr_k); signer.init(true, ecdsaprivrand);
public detDSA384() { super(DigestFactory.createSHA384(), new org.spongycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(DigestFactory.createSHA384()))); } }
protected Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException { Digest dig = digestProvider.get(digAlgId); return new DSADigestSigner(new ECDSASigner(), dig); } }
protected DSA createDSAImpl() { return new ECDSASigner(); } }
protected void engineUpdate( byte[] b, int off, int len) throws SignatureException { pss.update(b, off, len); }
protected boolean engineVerify( byte[] sigBytes) throws SignatureException { boolean yes = signer.verifySignature(sigBytes); return yes; }
protected ISOSignatureSpi( Digest digest, AsymmetricBlockCipher cipher) { signer = new ISO9796d2Signer(cipher, digest, true); }
private boolean returnFalse(byte[] block) { messageLength = 0; clearBlock(mBuf); clearBlock(block); return false; }
/** * Default configuration, random K values. */ public DSASigner() { this.kCalculator = new RandomDSAKCalculator(); }
public SignatureSpi() { //TODO: Add default ua s-box //this.digest = new GOST3411Digest(DEFAULT_SBOX); this.signer = new DSTU4145Signer(); }
protected X931SignatureSpi( Digest digest, AsymmetricBlockCipher cipher) { signer = new X931Signer(cipher, digest); }
protected boolean engineVerify( byte[] sigBytes) throws SignatureException { boolean yes = signer.verifySignature(sigBytes); return yes; }
public detDSASha3_224() { super(DigestFactory.createSHA3_224(), new org.spongycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(DigestFactory.createSHA3_224()))); } }
protected void engineUpdate( byte[] b, int off, int len) throws SignatureException { pss.update(b, off, len); }
protected ISOSignatureSpi( Digest digest, AsymmetricBlockCipher cipher) { signer = new ISO9796d2Signer(cipher, digest, true); }
/** * Default configuration, random K values. */ public ECDSASigner() { this.kCalculator = new RandomDSAKCalculator(); }
public detDSA224() { super(DigestFactory.createSHA224(), new org.spongycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(DigestFactory.createSHA224()))); } }
public detDSA256() { super(DigestFactory.createSHA256(), new org.spongycastle.crypto.signers.DSASigner(new HMacDSAKCalculator(DigestFactory.createSHA256()))); } }