public static GetInstance ( Asn1TaggedObject obj, bool explicitly ) : |
||
obj | Asn1TaggedObject | |
explicitly | bool | |
return |
internal TbsCertificateStructure( Asn1Sequence seq) { int seqStart = 0; this.seq = seq; // // some certficates don't include a version number - we assume v1 // if (seq[0] is DerTaggedObject) { version = DerInteger.GetInstance((Asn1TaggedObject)seq[0], true); } else { seqStart = -1; // field 0 is missing! version = new DerInteger(0); } serialNumber = DerInteger.GetInstance(seq[seqStart + 1]); signature = AlgorithmIdentifier.GetInstance(seq[seqStart + 2]); issuer = X509Name.GetInstance(seq[seqStart + 3]); // // before and after dates // Asn1Sequence dates = (Asn1Sequence)seq[seqStart + 4]; startDate = Time.GetInstance(dates[0]); endDate = Time.GetInstance(dates[1]); subject = X509Name.GetInstance(seq[seqStart + 5]); // // public key info. // subjectPublicKeyInfo = SubjectPublicKeyInfo.GetInstance(seq[seqStart + 6]); for (int extras = seq.Count - (seqStart + 6) - 1; extras > 0; extras--) { DerTaggedObject extra = (DerTaggedObject)seq[seqStart + 6 + extras]; switch (extra.TagNo) { case 1: issuerUniqueID = DerBitString.GetInstance(extra, false); break; case 2: subjectUniqueID = DerBitString.GetInstance(extra, false); break; case 3: extensions = X509Extensions.GetInstance(extra); break; } } }
internal TbsCertificateStructure(Asn1Sequence seq) { int num = 0; this.seq = seq; if (seq[0] is DerTaggedObject) { this.version = DerInteger.GetInstance((Asn1TaggedObject)seq[0], true); } else { num = -1; this.version = new DerInteger(0); } this.serialNumber = DerInteger.GetInstance(seq[num + 1]); this.signature = AlgorithmIdentifier.GetInstance(seq[num + 2]); this.issuer = X509Name.GetInstance(seq[num + 3]); Asn1Sequence asn1Sequence = (Asn1Sequence)seq[num + 4]; this.startDate = Time.GetInstance(asn1Sequence[0]); this.endDate = Time.GetInstance(asn1Sequence[1]); this.subject = X509Name.GetInstance(seq[num + 5]); this.subjectPublicKeyInfo = SubjectPublicKeyInfo.GetInstance(seq[num + 6]); for (int i = seq.Count - (num + 6) - 1; i > 0; i--) { DerTaggedObject derTaggedObject = (DerTaggedObject)seq[num + 6 + i]; switch (derTaggedObject.TagNo) { case 1: this.issuerUniqueID = DerBitString.GetInstance(derTaggedObject, false); break; case 2: this.subjectUniqueID = DerBitString.GetInstance(derTaggedObject, false); break; case 3: this.extensions = X509Extensions.GetInstance(derTaggedObject); break; } } }
internal TbsCertificateStructure( Asn1Sequence seq) { int seqStart = 0; this.seq = seq; // // some certficates don't include a version number - we assume v1 // if (seq[0] is DerTaggedObject) { version = DerInteger.GetInstance((Asn1TaggedObject)seq[0], true); } else { seqStart = -1; // field 0 is missing! version = new DerInteger(0); } bool isV1 = false; bool isV2 = false; if (version.Value.Equals(BigInteger.Zero)) { isV1 = true; } else if (version.Value.Equals(BigInteger.One)) { isV2 = true; } else if (!version.Value.Equals(BigInteger.Two)) { throw new ArgumentException("version number not recognised"); } serialNumber = DerInteger.GetInstance(seq[seqStart + 1]); signature = AlgorithmIdentifier.GetInstance(seq[seqStart + 2]); issuer = X509Name.GetInstance(seq[seqStart + 3]); // // before and after dates // Asn1Sequence dates = (Asn1Sequence)seq[seqStart + 4]; startDate = Time.GetInstance(dates[0]); endDate = Time.GetInstance(dates[1]); subject = X509Name.GetInstance(seq[seqStart + 5]); // // public key info. // subjectPublicKeyInfo = SubjectPublicKeyInfo.GetInstance(seq[seqStart + 6]); int extras = seq.Count - (seqStart + 6) - 1; if (extras != 0 && isV1) { throw new ArgumentException("version 1 certificate contains extra data"); } while (extras > 0) { DerTaggedObject extra = (DerTaggedObject)seq[seqStart + 6 + extras]; switch (extra.TagNo) { case 1: { issuerUniqueID = DerBitString.GetInstance(extra, false); break; } case 2: { subjectUniqueID = DerBitString.GetInstance(extra, false); break; } case 3: { if (isV2) { throw new ArgumentException("version 2 certificate cannot contain extensions"); } extensions = X509Extensions.GetInstance(extra); break; } } extras--; } }
public static SubjectPublicKeyInfo GetInstance(Asn1TaggedObject obj, bool explicitly) { return(SubjectPublicKeyInfo.GetInstance(Asn1Sequence.GetInstance(obj, explicitly))); }