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()); }
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); } } }