Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.bouncycastle.jcajce.provider.asymmetric.dh;
  
  
 
 
 public class BCDHPublicKey
     implements DHPublicKey
 {
     static final long serialVersionUID = -216691575254424324L;
     
     private BigInteger              y;
 
     private transient DHParameterSpec         dhSpec;
     private transient SubjectPublicKeyInfo    info;
     
     BCDHPublicKey(
         DHPublicKeySpec spec)
     {
         this. = spec.getY();
         this. = new DHParameterSpec(spec.getP(), spec.getG());
     }
 
     BCDHPublicKey(
         DHPublicKey key)
     {
         this. = key.getY();
         this. = key.getParams();
     }
 
     BCDHPublicKey(
         DHPublicKeyParameters params)
     {
         this. = params.getY();
         this. = new DHParameterSpec(params.getParameters().getP(), params.getParameters().getG(), params.getParameters().getL());
     }
 
     BCDHPublicKey(
         BigInteger y,
         DHParameterSpec dhSpec)
     {
         this. = y;
         this. = dhSpec;
     }
 
     public BCDHPublicKey(
         SubjectPublicKeyInfo info)
     {
         this. = info;
 
         ASN1Integer              derY;
         try
         {
             derY = (ASN1Integer)info.parsePublicKey();
         }
         catch (IOException e)
         {
             throw new IllegalArgumentException("invalid info structure in DH public key");
         }
 
         this. = derY.getValue();
 
         ASN1Sequence seq = ASN1Sequence.getInstance(info.getAlgorithm().getParameters());
         ASN1ObjectIdentifier id = info.getAlgorithm().getAlgorithm();
 
         // we need the PKCS check to handle older keys marked with the X9 oid.
         if (id.equals(.) || isPKCSParam(seq))
         {
             DHParameter             params = DHParameter.getInstance(seq);
 
             if (params.getL() != null)
             {
                 this. = new DHParameterSpec(params.getP(), params.getG(), params.getL().intValue());
             }
             else
             {
                 this. = new DHParameterSpec(params.getP(), params.getG());
             }
         }
         else if (id.equals(.))
         {
             DHDomainParameters params = DHDomainParameters.getInstance(seq);
            this. = new DHParameterSpec(params.getP().getValue(), params.getG().getValue());
        }
        else
        {
            throw new IllegalArgumentException("unknown algorithm type: " + id);
        }
    }
    public String getAlgorithm()
    {
        return "DH";
    }
    public String getFormat()
    {
        return "X.509";
    }
    public byte[] getEncoded()
    {
        if ( != null)
        {
            return KeyUtil.getEncodedSubjectPublicKeyInfo();
        }
    }
    public DHParameterSpec getParams()
    {
        return ;
    }
    public BigInteger getY()
    {
        return ;
    }
    private boolean isPKCSParam(ASN1Sequence seq)
    {
        if (seq.size() == 2)
        {
            return true;
        }
        
        if (seq.size() > 3)
        {
            return false;
        }
        ASN1Integer l = ASN1Integer.getInstance(seq.getObjectAt(2));
        ASN1Integer p = ASN1Integer.getInstance(seq.getObjectAt(0));
        if (l.getValue().compareTo(BigInteger.valueOf(p.getValue().bitLength())) > 0)
        {
            return false;
        }
        return true;
    }
    public int hashCode()
    {
        return this.getY().hashCode() ^ this.getParams().getG().hashCode()
                ^ this.getParams().getP().hashCode() ^ this.getParams().getL();
    }
    public boolean equals(
        Object o)
    {
        if (!(o instanceof DHPublicKey))
        {
            return false;
        }
        DHPublicKey other = (DHPublicKey)o;
        return this.getY().equals(other.getY())
            && this.getParams().getG().equals(other.getParams().getG())
            && this.getParams().getP().equals(other.getParams().getP())
            && this.getParams().getL() == other.getParams().getL();
    }
    private void readObject(
        ObjectInputStream   in)
        throws IOExceptionClassNotFoundException
    {
        in.defaultReadObject();
        this. = new DHParameterSpec((BigInteger)in.readObject(), (BigInteger)in.readObject(), in.readInt());
        this. = null;
    }
    private void writeObject(
        ObjectOutputStream  out)
        throws IOException
    {
        out.defaultWriteObject();
        out.writeObject(.getP());
        out.writeObject(.getG());
        out.writeInt(.getL());
    }
New to GrepCode? Check out our FAQ X