static Signer createSigner(int keyAlgorithm, int hashAlgorithm) throws PGPException { switch(keyAlgorithm) { case PublicKeyAlgorithmTags.RSA_GENERAL: case PublicKeyAlgorithmTags.RSA_SIGN: return new RSADigestSigner(createDigest(hashAlgorithm)); case PublicKeyAlgorithmTags.DSA: return new DSADigestSigner(new DSASigner(), createDigest(hashAlgorithm)); case PublicKeyAlgorithmTags.ECDSA: return new DSADigestSigner(new ECDSASigner(), createDigest(hashAlgorithm)); default: throw new PGPException("cannot recognise keyAlgorithm: " + keyAlgorithm); } }
protected Signer createSigner(AlgorithmIdentifier sigAlgId) throws OperatorCreationException { AlgorithmIdentifier digAlg = digestAlgorithmFinder.find(sigAlgId); Digest dig = digestProvider.get(digAlg); return new DSADigestSigner(new DSASigner(), dig); }
protected Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException { Digest dig = digestProvider.get(digAlgId); return new DSADigestSigner(new DSASigner(), dig); }
protected Signer createSigner(AlgorithmIdentifier sigAlgId, AlgorithmIdentifier digAlgId) throws OperatorCreationException { if (!AlgorithmUtil.isDSASigAlg(sigAlgId)) { throw new OperatorCreationException( "the given algorithm is not a valid DSA signature algirthm '" + sigAlgId.getAlgorithm().getId() + "'"); } Digest dig = digestProvider.get(digAlgId); DSASigner dsaSigner = new DSASigner(); return plain ? new DSAPlainDigestSigner(dsaSigner, dig) : new DSADigestSigner(dsaSigner, dig); }
static Signer createSigner(int keyAlgorithm, int hashAlgorithm) throws PGPException { switch(keyAlgorithm) { case PublicKeyAlgorithmTags.RSA_GENERAL: case PublicKeyAlgorithmTags.RSA_SIGN: return new RSADigestSigner(createDigest(hashAlgorithm)); case PublicKeyAlgorithmTags.DSA: return new DSADigestSigner(new DSASigner(), createDigest(hashAlgorithm)); default: throw new PGPException("cannot recognise keyAlgorithm"); } }
public byte[] calculateRawSignature(AsymmetricKeyParameter privateKey, byte[] md5andsha1) throws CryptoException { // Note: Only use the SHA1 part of the hash Signer sig = new DSADigestSigner(new DSASigner(), new NullDigest()); sig.init(true, privateKey); sig.update(md5andsha1, 16, 20); return sig.generateSignature(); }
protected DSA createDSAImpl() { return new DSASigner(); }
protected DSA createDSAImpl(short hashAlgorithm) { return new DSASigner(new HMacDSAKCalculator(TlsUtils.createHash(hashAlgorithm))); }
public void performTest() { BigInteger r = new BigInteger("68076202252361894315274692543577577550894681403"); BigInteger s = new BigInteger("1089214853334067536215539335472893651470583479365"); DSAParametersGenerator pGen = new DSAParametersGenerator(); pGen.init(512, 80, random); DSAParameters params = pGen.generateParameters(); DSAValidationParameters pValid = params.getValidationParameters(); if (pValid.getCounter() != 105) { fail("Counter wrong"); } if (!pValue.equals(params.getP()) || !qValue.equals(params.getQ())) { fail("p or q wrong"); } DSAKeyPairGenerator dsaKeyGen = new DSAKeyPairGenerator(); DSAKeyGenerationParameters genParam = new DSAKeyGenerationParameters(keyRandom, params); dsaKeyGen.init(genParam); AsymmetricCipherKeyPair pair = dsaKeyGen.generateKeyPair(); ParametersWithRandom param = new ParametersWithRandom(pair.getPrivate(), keyRandom); DSASigner dsa = new DSASigner(); dsa.init(true, param); byte[] message = BigIntegers.asUnsignedByteArray(new BigInteger("968236873715988614170569073515315707566766479517")); BigInteger[] sig = dsa.generateSignature(message); if (!r.equals(sig[0])) { fail("r component wrong.", r, sig[0]); } if (!s.equals(sig[1])) { fail("s component wrong.", s, sig[1]); } dsa.init(false, pair.getPublic()); if (!dsa.verifySignature(message, sig[0], sig[1])) { fail("verification fails"); } dsa2Test1(); dsa2Test2(); dsa2Test3(); dsa2Test4(); }
private void doTestHMACDetDSASample(Digest digest, DSAPrivateKeyParameters privKey, BigInteger r, BigInteger s) { doTestHMACDetECDSA(new DSASigner(new HMacDSAKCalculator(digest)), digest, SAMPLE, privKey, r, s); }
private void doTestHMACDetDSATest(Digest digest, DSAPrivateKeyParameters privKey, BigInteger r, BigInteger s) { doTestHMACDetECDSA(new DSASigner(new HMacDSAKCalculator(digest)), digest, TEST, privKey, r, s); }
public void performTest() { BigInteger r = new BigInteger("68076202252361894315274692543577577550894681403"); BigInteger s = new BigInteger("1089214853334067536215539335472893651470583479365"); DSAParametersGenerator pGen = new DSAParametersGenerator(); pGen.init(512, 20, random); DSAParameters params = pGen.generateParameters(); DSAValidationParameters pValid = params.getValidationParameters(); if (pValid.getCounter() != 105) { fail("Counter wrong"); } if (!pValue.equals(params.getP()) || !qValue.equals(params.getQ())) { fail("p or q wrong"); } DSAKeyPairGenerator dsaKeyGen = new DSAKeyPairGenerator(); DSAKeyGenerationParameters genParam = new DSAKeyGenerationParameters(keyRandom, params); dsaKeyGen.init(genParam); AsymmetricCipherKeyPair pair = dsaKeyGen.generateKeyPair(); ParametersWithRandom param = new ParametersWithRandom(pair.getPrivate(), keyRandom); DSASigner dsa = new DSASigner(); dsa.init(true, param); byte[] message = BigIntegers.asUnsignedByteArray(new BigInteger("968236873715988614170569073515315707566766479517")); BigInteger[] sig = dsa.generateSignature(message); if (!r.equals(sig[0])) { fail("r component wrong.", r, sig[0]); } if (!s.equals(sig[1])) { fail("s component wrong.", s, sig[1]); } dsa.init(false, pair.getPublic()); if (!dsa.verifySignature(message, sig[0], sig[1])) { fail("verification fails"); } //dsa2Test1(); //dsa2Test2(); //dsa2Test3(); //dsa2Test4(); }
public Signer createVerifyer(AsymmetricKeyParameter publicKey) { Signer s = new DSADigestSigner(new DSASigner(), new SHA1Digest()); s.init(false, publicKey); return s; }
/** * Creates a new DSA signature class that uses the given digest algorithm * for message digest computation. * * @param d * Message digest algorithm. */ public DSASignature(final DigestAlgorithm d) { super(ALGORITHM); digest = d; signer = new DSASigner(); }
private void testNONEwithDSA() throws Exception { byte[] dummySha1 = Hex.decode("01020304050607080910111213141516"); KeyPairGenerator kpGen = KeyPairGenerator.getInstance("DSA", "BC"); kpGen.initialize(512); KeyPair kp = kpGen.generateKeyPair(); Signature sig = Signature.getInstance("NONEwithDSA", "BC"); sig.initSign(kp.getPrivate()); sig.update(dummySha1); byte[] sigBytes = sig.sign(); sig.initVerify(kp.getPublic()); sig.update(dummySha1); sig.verify(sigBytes); // reset test sig.update(dummySha1); if (!sig.verify(sigBytes)) { fail("NONEwithDSA failed to reset"); } // lightweight test DSAPublicKey key = (DSAPublicKey)kp.getPublic(); DSAParameters params = new DSAParameters(key.getParams().getP(), key.getParams().getQ(), key.getParams().getG()); DSAPublicKeyParameters keyParams = new DSAPublicKeyParameters(key.getY(), params); DSASigner signer = new DSASigner(); ASN1Sequence derSig = ASN1Sequence.getInstance(ASN1Primitive.fromByteArray(sigBytes)); signer.init(false, keyParams); if (!signer.verifySignature(dummySha1, DERInteger.getInstance(derSig.getObjectAt(0)).getValue(), DERInteger.getInstance(derSig.getObjectAt(1)).getValue())) { fail("NONEwithDSA not really NONE!"); } }