private AttributeCertificateInfo(ASN1Sequence seq) {
    if (seq.size() < 6 || seq.size() > 9) {
      throw new IllegalArgumentException("Bad sequence size: " + seq.size());
    }

    int start;
    if (seq.getObjectAt(0) instanceof ASN1Integer) // in version 1 certs version is DEFAULT  v1(0)
    {
      this.version = ASN1Integer.getInstance(seq.getObjectAt(0));
      start = 1;
    } else {
      this.version = new ASN1Integer(0);
      start = 0;
    }

    this.holder = Holder.getInstance(seq.getObjectAt(start));
    this.issuer = AttCertIssuer.getInstance(seq.getObjectAt(start + 1));
    this.signature = AlgorithmIdentifier.getInstance(seq.getObjectAt(start + 2));
    this.serialNumber = ASN1Integer.getInstance(seq.getObjectAt(start + 3));
    this.attrCertValidityPeriod = AttCertValidityPeriod.getInstance(seq.getObjectAt(start + 4));
    this.attributes = ASN1Sequence.getInstance(seq.getObjectAt(start + 5));

    for (int i = start + 6; i < seq.size(); i++) {
      ASN1Encodable obj = seq.getObjectAt(i);

      if (obj instanceof DERBitString) {
        this.issuerUniqueID = DERBitString.getInstance(seq.getObjectAt(i));
      } else if (obj instanceof ASN1Sequence || obj instanceof Extensions) {
        this.extensions = Extensions.getInstance(seq.getObjectAt(i));
      }
    }
  }
 public Template() {
   seqt = new SEQUENCE.Template();
   seqt.addElement(CertificationRequestInfo.getTemplate());
   // seqt.addElement( new ANY.Template() );
   seqt.addElement(AlgorithmIdentifier.getTemplate());
   seqt.addElement(BIT_STRING.getTemplate());
 }
Esempio n. 3
0
  public AttributeCertificate(ASN1Sequence seq) {
    if (seq.size() != 3) {
      throw new IllegalArgumentException("Bad sequence size: " + seq.size());
    }

    this.acinfo = AttributeCertificateInfo.getInstance(seq.getObjectAt(0));
    this.signatureAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
    this.signatureValue = DERBitString.getInstance(seq.getObjectAt(2));
  }
  /**
   * Verifies the signature on this CertificationRequest, using the given public key and
   * CryptoToken. Does not indicate the CertificationRequest is valid at any specific time.
   */
  public void verify(PublicKey key, CryptoToken token)
      throws NoSuchAlgorithmException, CertificateException, TokenException, SignatureException,
          InvalidKeyException {
    Signature sig = token.getSignatureContext(SignatureAlgorithm.fromOID(algId.getOID()));

    sig.initVerify(key);
    sig.update(infoEncoding);
    if (!sig.verify(signature)) {
      throw new CertificateException("Signature is invalid");
    }
  }
 public String toString() {
   StringBuffer buffer = new StringBuffer();
   buffer.append("X.509 Certificate:\n[\n"); // $NON-NLS-1$
   tbsCertificate.dumpValue(buffer);
   buffer.append("\n  Algorithm: ["); // $NON-NLS-1$
   signatureAlgorithm.dumpValue(buffer);
   buffer.append(']');
   buffer.append("\n  Signature Value:\n"); // $NON-NLS-1$
   buffer.append(Array.toString(signatureValue, "")); // $NON-NLS-1$
   buffer.append(']');
   return buffer.toString();
 }
  public X509CertificateStructure(ASN1Sequence seq) {
    this.seq = seq;

    //
    // correct x509 certficate
    //
    if (seq.size() == 3) {
      tbsCert = TBSCertificateStructure.getInstance(seq.getObjectAt(0));
      sigAlgId = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));

      sig = (DERBitString) seq.getObjectAt(2);
    }
  }
  public TBSCertificateStructure(ASN1Sequence seq) {
    int seqStart = 0;

    this.seq = seq;

    //
    // some certficates don't include a version number - we assume v1
    //
    if (seq.getObjectAt(0) instanceof DERTaggedObject) {
      version = DERInteger.getInstance(seq.getObjectAt(0));
    } else {
      seqStart = -1; // field 0 is missing!
      version = new DERInteger(0);
    }

    serialNumber = DERInteger.getInstance(seq.getObjectAt(seqStart + 1));

    signature = AlgorithmIdentifier.getInstance(seq.getObjectAt(seqStart + 2));
    issuer = X509Name.getInstance(seq.getObjectAt(seqStart + 3));

    //
    // before and after dates
    //
    ASN1Sequence dates = (ASN1Sequence) seq.getObjectAt(seqStart + 4);

    startDate = Time.getInstance(dates.getObjectAt(0));
    endDate = Time.getInstance(dates.getObjectAt(1));

    subject = X509Name.getInstance(seq.getObjectAt(seqStart + 5));

    //
    // public key info.
    //
    subjectPublicKeyInfo = SubjectPublicKeyInfo.getInstance(seq.getObjectAt(seqStart + 6));

    for (int extras = seq.size() - (seqStart + 6) - 1; extras > 0; extras--) {
      DERTaggedObject extra = (DERTaggedObject) seq.getObjectAt(seqStart + 6 + extras);

      switch (extra.getTagNo()) {
        case 1:
          issuerUniqueId = DERBitString.getInstance(extra);
          break;
        case 2:
          subjectUniqueId = DERBitString.getInstance(extra);
          break;
        case 3:
          extensions = X509Extensions.getInstance(extra);
      }
    }
  }