📄 ecdsawithsha1signer.java
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi
// Source File Name: ECDSAwithSHA1Signer.java
package jit.crypto.signers;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import jit.asn1.*;
import jit.asn1.x509.AlgorithmIdentifier;
import jit.asn1.x9.*;
import jit.crypto.digests.SHA1Digest;
import jit.crypto.params.ECDomainParameters;
import jit.crypto.params.ECKeyParameters;
import jit.math.BigInteger;
import jit.math.ec.ECConstants;
import jit.security.SecureRandom;
// Referenced classes of package jit.crypto.signers:
// ECDSASigner
public class ECDSAwithSHA1Signer
implements ECConstants
{
ECKeyParameters key;
SecureRandom random;
public ECDSAwithSHA1Signer()
{
}
public void init(boolean forSigning, byte param[])
{
ByteArrayInputStream bis = new ByteArrayInputStream(param);
DERInputStream dis = new DERInputStream(bis);
if(forSigning)
try
{
ASN1Sequence seq = (ASN1Sequence)dis.readObject();
X9PrivateKeyInfo priKeyInfo = new X9PrivateKeyInfo(seq);
key = priKeyInfo.getPrivateKey();
}
catch(IOException e)
{
e.printStackTrace();
}
else
try
{
ASN1Sequence seq = (ASN1Sequence)dis.readObject();
X9PublicKeyInfo pubKeyInfo = new X9PublicKeyInfo(seq);
ECDomainParameters tECdomain = pubKeyInfo.getECDomainParameters();
key = pubKeyInfo.getECPublicKeyParameters();
}
catch(IOException e)
{
e.printStackTrace();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public DERObject signatureWithSHA(byte message[])
{
SHA1Digest sha = new SHA1Digest();
sha.update(message, 0, message.length);
message = new byte[sha.getDigestSize()];
sha.doFinal(message, 0);
ECDSASigner ecDSASigner = new ECDSASigner();
ecDSASigner.init(true, key);
BigInteger signedData[] = ecDSASigner.generateSignature(message);
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(new DERInteger(signedData[0]));
v.add(new DERInteger(signedData[1]));
return new DERSequence(v);
}
public boolean verifySignature(byte message[], byte signedData[])
{
BigInteger r = null;
BigInteger s = null;
SHA1Digest sha = new SHA1Digest();
sha.update(message, 0, message.length);
message = new byte[sha.getDigestSize()];
sha.doFinal(message, 0);
ByteArrayInputStream bis = new ByteArrayInputStream(signedData);
DERInputStream dis = new DERInputStream(bis);
try
{
ASN1Sequence tASN1meg = (ASN1Sequence)dis.readObject();
AlgorithmIdentifier algorithmID = new AlgorithmIdentifier((ASN1Sequence)tASN1meg.getObjectAt(0));
DERObjectIdentifier tID = algorithmID.getObjectId();
if(tID.equals(X9ObjectIdentifiers.ecdsa_with_SHA1))
{
ASN1Sequence tASN1rs = (ASN1Sequence)tASN1meg.getObjectAt(1);
DERInteger tDERr = (DERInteger)tASN1rs.getObjectAt(0);
r = tDERr.getValue();
DERInteger tDERs = (DERInteger)tASN1rs.getObjectAt(1);
s = tDERs.getValue();
}
}
catch(IOException e)
{
e.printStackTrace();
}
ECDSASigner ecDSASigner = new ECDSASigner();
ecDSASigner.init(false, key);
return ecDSASigner.verifySignature(message, r, s);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -