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

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.pkcs;
  2. import java.io.*;
  3. import java.util.Enumeration;
  4. import java.math.BigInteger;
  5. import org.bouncycastle.asn1.*;
  6. public class RSAPrivateKeyStructure
  7.     implements DEREncodable
  8. {
  9.     private BigInteger  modulus;
  10.     private BigInteger  publicExponent;
  11.     private BigInteger  privateExponent;
  12.     private BigInteger  prime1;
  13.     private BigInteger  prime2;
  14.     private BigInteger  exponent1;
  15.     private BigInteger  exponent2;
  16.     private BigInteger  coefficient;
  17.     public RSAPrivateKeyStructure(
  18.         BigInteger  modulus,
  19.         BigInteger  publicExponent,
  20.         BigInteger  privateExponent,
  21.         BigInteger  prime1,
  22.         BigInteger  prime2,
  23.         BigInteger  exponent1,
  24.         BigInteger  exponent2,
  25.         BigInteger  coefficient)
  26.     {
  27.         this.modulus = modulus;
  28.         this.publicExponent = publicExponent;
  29.         this.privateExponent = privateExponent;
  30.         this.prime1 = prime1;
  31.         this.prime2 = prime2;
  32.         this.exponent1 = exponent1;
  33.         this.exponent2 = exponent2;
  34.         this.coefficient = coefficient;
  35.     }
  36.     public RSAPrivateKeyStructure(
  37.         ASN1Sequence  seq)
  38.     {
  39.         Enumeration e = seq.getObjects();
  40.         BigInteger  version = ((DERInteger)e.nextElement()).getValue();
  41.         if (version.intValue() != 0)
  42.         {
  43.             throw new IllegalArgumentException("wrong version for RSA private key");
  44.         }
  45.         modulus = ((DERInteger)e.nextElement()).getValue();
  46.         publicExponent = ((DERInteger)e.nextElement()).getValue();
  47.         privateExponent = ((DERInteger)e.nextElement()).getValue();
  48.         prime1 = ((DERInteger)e.nextElement()).getValue();
  49.         prime2 = ((DERInteger)e.nextElement()).getValue();
  50.         exponent1 = ((DERInteger)e.nextElement()).getValue();
  51.         exponent2 = ((DERInteger)e.nextElement()).getValue();
  52.         coefficient = ((DERInteger)e.nextElement()).getValue();
  53.     }
  54.     public BigInteger getModulus()
  55.     {
  56.         return modulus;
  57.     }
  58.     public BigInteger getPublicExponent()
  59.     {
  60.         return publicExponent;
  61.     }
  62.     public BigInteger getPrivateExponent()
  63.     {
  64.         return privateExponent;
  65.     }
  66.     public BigInteger getPrime1()
  67.     {
  68.         return prime1;
  69.     }
  70.     public BigInteger getPrime2()
  71.     {
  72.         return prime2;
  73.     }
  74.     public BigInteger getExponent1()
  75.     {
  76.         return exponent1;
  77.     }
  78.     public BigInteger getExponent2()
  79.     {
  80.         return exponent2;
  81.     }
  82.     public BigInteger getCoefficient()
  83.     {
  84.         return coefficient;
  85.     }
  86.     /**
  87.      * This outputs the key in PKCS1v2 format.
  88.      * <pre>
  89.      *      RSAPrivateKey ::= SEQUENCE {
  90.      *                          version Version,
  91.      *                          modulus INTEGER, -- n
  92.      *                          publicExponent INTEGER, -- e
  93.      *                          privateExponent INTEGER, -- d
  94.      *                          prime1 INTEGER, -- p
  95.      *                          prime2 INTEGER, -- q
  96.      *                          exponent1 INTEGER, -- d mod (p-1)
  97.      *                          exponent2 INTEGER, -- d mod (q-1)
  98.      *                          coefficient INTEGER -- (inverse of q) mod p
  99.      *                      }
  100.      *
  101.      *      Version ::= INTEGER
  102.      * </pre>
  103.      * <p>
  104.      * This routine is written to output PKCS1 version 0, private keys.
  105.      */
  106.     public DERObject getDERObject()
  107.     {
  108.         ASN1EncodableVector  v = new ASN1EncodableVector();
  109.         v.add(new DERInteger(0));                       // version
  110.         v.add(new DERInteger(getModulus()));
  111.         v.add(new DERInteger(getPublicExponent()));
  112.         v.add(new DERInteger(getPrivateExponent()));
  113.         v.add(new DERInteger(getPrime1()));
  114.         v.add(new DERInteger(getPrime2()));
  115.         v.add(new DERInteger(getExponent1()));
  116.         v.add(new DERInteger(getExponent2()));
  117.         v.add(new DERInteger(getCoefficient()));
  118.         return new DERSequence(v);
  119.     }
  120. }