RSAPublicKeyStructure.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.x509;
  2. import java.util.Enumeration;
  3. import java.math.BigInteger;
  4. import org.bouncycastle.asn1.*;
  5. public class RSAPublicKeyStructure
  6.     implements DEREncodable
  7. {
  8.     private BigInteger  modulus;
  9.     private BigInteger  publicExponent;
  10.     public static RSAPublicKeyStructure getInstance(
  11.         ASN1TaggedObject obj,
  12.         boolean          explicit)
  13.     {
  14.         return getInstance(ASN1Sequence.getInstance(obj, explicit));
  15.     }
  16.     public static RSAPublicKeyStructure getInstance(
  17.         Object obj)
  18.     {
  19.         if(obj == null || obj instanceof RSAPublicKeyStructure) 
  20.         {
  21.             return (RSAPublicKeyStructure)obj;
  22.         }
  23.         
  24.         if(obj instanceof ASN1Sequence) 
  25.         {
  26.             return new RSAPublicKeyStructure((ASN1Sequence)obj);
  27.         }
  28.         
  29.         throw new IllegalArgumentException("Invalid RSAPublicKeyStructure: " + obj.getClass().getName());
  30.     }
  31.     
  32.     public RSAPublicKeyStructure(
  33.         BigInteger  modulus,
  34.         BigInteger  publicExponent)
  35.     {
  36.         this.modulus = modulus;
  37.         this.publicExponent = publicExponent;
  38.     }
  39.     public RSAPublicKeyStructure(
  40.         ASN1Sequence  seq)
  41.     {
  42.         Enumeration e = seq.getObjects();
  43.         modulus = ((DERInteger)e.nextElement()).getPositiveValue();
  44.         publicExponent = ((DERInteger)e.nextElement()).getPositiveValue();
  45.     }
  46.     public BigInteger getModulus()
  47.     {
  48.         return modulus;
  49.     }
  50.     public BigInteger getPublicExponent()
  51.     {
  52.         return publicExponent;
  53.     }
  54.     /**
  55.      * This outputs the key in PKCS1v2 format.
  56.      * <pre>
  57.      *      RSAPublicKey ::= SEQUENCE {
  58.      *                          modulus INTEGER, -- n
  59.      *                          publicExponent INTEGER, -- e
  60.      *                      }
  61.      * </pre>
  62.      * <p>
  63.      */
  64.     public DERObject getDERObject()
  65.     {
  66.         ASN1EncodableVector  v = new ASN1EncodableVector();
  67.         v.add(new DERInteger(getModulus()));
  68.         v.add(new DERInteger(getPublicExponent()));
  69.         return new DERSequence(v);
  70.     }
  71. }