⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecdsawithsha1signer.java

📁 进行与数字证书相关开发必须的java源码
💻 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 + -