Methods Summary |
---|
private java.math.BigInteger[] | derDecode(byte[] encoding)
ByteArrayInputStream bIn = new ByteArrayInputStream(encoding);
DERInputStream dIn = new DERInputStream(bIn);
ASN1Sequence s = (ASN1Sequence)dIn.readObject();
BigInteger[] sig = new BigInteger[2];
sig[0] = ((DERInteger)s.getObjectAt(0)).getValue();
sig[1] = ((DERInteger)s.getObjectAt(1)).getValue();
return sig;
|
private byte[] | derEncode(java.math.BigInteger r, java.math.BigInteger s)
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
DEROutputStream dOut = new DEROutputStream(bOut);
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(new DERInteger(r));
v.add(new DERInteger(s));
dOut.writeObject(new DERSequence(v));
return bOut.toByteArray();
|
protected java.lang.Object | engineGetParameter(java.lang.String param)
throw new UnsupportedOperationException("engineSetParameter unsupported");
|
protected void | engineInitSign(java.security.PrivateKey privateKey, java.security.SecureRandom random)
this.random = random;
engineInitSign(privateKey);
|
protected void | engineInitSign(java.security.PrivateKey privateKey)
CipherParameters param = null;
if (privateKey instanceof ECKey)
{
param = ECUtil.generatePrivateKeyParameter(privateKey);
}
else
{
param = DSAUtil.generatePrivateKeyParameter(privateKey);
}
digest.reset();
if (random != null)
{
signer.init(true, new ParametersWithRandom(param, random));
}
else
{
signer.init(true, param);
}
|
protected void | engineInitVerify(java.security.PublicKey publicKey)
CipherParameters param = null;
if (publicKey instanceof ECKey)
{
param = ECUtil.generatePublicKeyParameter(publicKey);
}
else if (publicKey instanceof DSAKey)
{
param = DSAUtil.generatePublicKeyParameter(publicKey);
}
else
{
try
{
/*
byte[] bytes = publicKey.getEncoded();
publicKey = JDKKeyFactory.createPublicKeyFromDERStream(
new ByteArrayInputStream(bytes));
if (publicKey instanceof ECKey)
{
param = ECUtil.generatePublicKeyParameter(publicKey);
}
else if (publicKey instanceof DSAKey)
{
param = DSAUtil.generatePublicKeyParameter(publicKey);
}
else
{
*/
throw new InvalidKeyException("can't recognise key type in DSA based signer");
//}
}
catch (Exception e)
{
throw new InvalidKeyException("can't recognise key type in DSA based signer");
}
}
digest.reset();
signer.init(false, param);
|
protected void | engineSetParameter(java.lang.String param, java.lang.Object value)
throw new UnsupportedOperationException("engineSetParameter unsupported");
|
protected void | engineSetParameter(java.security.spec.AlgorithmParameterSpec params)
throw new UnsupportedOperationException("engineSetParameter unsupported");
|
protected byte[] | engineSign()
byte[] hash = new byte[digest.getDigestSize()];
digest.doFinal(hash, 0);
try
{
BigInteger[] sig = signer.generateSignature(hash);
return derEncode(sig[0], sig[1]);
}
catch (Exception e)
{
throw new SignatureException(e.toString());
}
|
protected void | engineUpdate(byte b)
digest.update(b);
|
protected void | engineUpdate(byte[] b, int off, int len)
digest.update(b, off, len);
|
protected boolean | engineVerify(byte[] sigBytes)
byte[] hash = new byte[digest.getDigestSize()];
digest.doFinal(hash, 0);
BigInteger[] sig;
try
{
sig = derDecode(sigBytes);
}
catch (Exception e)
{
throw new SignatureException("error decoding signature bytes.");
}
return signer.verifySignature(hash, sig[0], sig[1]);
|