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

📄 jcedhpublickey.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
字号:
package org.bouncycastle.jce.provider;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.DERInteger;import org.bouncycastle.asn1.pkcs.DHParameter;import org.bouncycastle.asn1.x509.AlgorithmIdentifier;import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;import org.bouncycastle.crypto.params.DHPublicKeyParameters;import javax.crypto.interfaces.DHPublicKey;import javax.crypto.spec.DHParameterSpec;import javax.crypto.spec.DHPublicKeySpec;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.math.BigInteger;public class JCEDHPublicKey    implements DHPublicKey{    static final long serialVersionUID = -216691575254424324L;        private BigInteger              y;    private DHParameterSpec         dhSpec;    JCEDHPublicKey(        DHPublicKeySpec    spec)    {        this.y = spec.getY();        this.dhSpec = new DHParameterSpec(spec.getP(), spec.getG());    }    JCEDHPublicKey(        DHPublicKey    key)    {        this.y = key.getY();        this.dhSpec = key.getParams();    }    JCEDHPublicKey(        DHPublicKeyParameters  params)    {        this.y = params.getY();        this.dhSpec = new DHParameterSpec(params.getParameters().getP(), params.getParameters().getG(), params.getParameters().getL());    }    JCEDHPublicKey(        BigInteger        y,        DHParameterSpec   dhSpec)    {        this.y = y;        this.dhSpec = dhSpec;    }    JCEDHPublicKey(        SubjectPublicKeyInfo    info)    {        DHParameter             params = new DHParameter((ASN1Sequence)info.getAlgorithmId().getParameters());        DERInteger              derY = null;        try        {            derY = (DERInteger)info.getPublicKey();        }        catch (IOException e)        {            throw new IllegalArgumentException("invalid info structure in DH public key");        }        this.y = derY.getValue();        if (params.getL() != null)        {            this.dhSpec = new DHParameterSpec(params.getP(), params.getG(), params.getL().intValue());        }        else        {            this.dhSpec = new DHParameterSpec(params.getP(), params.getG());        }    }    public String getAlgorithm()    {        return "DH";    }    public String getFormat()    {        return "X.509";    }    public byte[] getEncoded()    {        SubjectPublicKeyInfo    info = new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.dhpublicnumber, new DHParameter(dhSpec.getP(), dhSpec.getG(), dhSpec.getL()).getDERObject()), new DERInteger(y));        return info.getDEREncoded();    }    public DHParameterSpec getParams()    {        return dhSpec;    }    public BigInteger getY()    {        return y;    }    private void readObject(        ObjectInputStream   in)        throws IOException, ClassNotFoundException    {        this.y = (BigInteger)in.readObject();        this.dhSpec = new DHParameterSpec((BigInteger)in.readObject(), (BigInteger)in.readObject(), in.readInt());    }    private void writeObject(        ObjectOutputStream  out)        throws IOException    {        out.writeObject(this.getY());        out.writeObject(dhSpec.getP());        out.writeObject(dhSpec.getG());        out.writeInt(dhSpec.getL());    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -