private X500Name loadCertificateIssuer() { if (!isIndirect) { return(null); } byte[] ext = GetExtensionValue(X509Extensions.CertificateIssuer); if (ext == null) { return(previousCertificateIssuer); } try { GeneralName[] names = GeneralNames.GetInstance(ext).GetNames(); for (int i = 0; i < names.Length; i++) { if (names[i].TagNo == GeneralName.DirectoryName) { return(X500Name.GetInstance(names[i].Name)); } } } catch (Exception) { } return(null); }
public static ResponderID GetInstance( object obj) { if (obj == null || obj is ResponderID) { return((ResponderID)obj); } if (obj is DerOctetString) { return(new ResponderID((DerOctetString)obj)); } if (obj is Asn1TaggedObject) { Asn1TaggedObject o = (Asn1TaggedObject)obj; if (o.TagNo == 1) { return(new ResponderID(X500Name.GetInstance(o, true))); } return(new ResponderID(Asn1OctetString.GetInstance(o, true))); } return(new ResponderID(X500Name.GetInstance(obj))); }
private object[] GetNames( GeneralName[] names) { int count = 0; for (int i = 0; i != names.Length; i++) { if (names[i].TagNo == GeneralName.DirectoryName) { ++count; } } object[] result = new object[count]; int pos = 0; for (int i = 0; i != names.Length; i++) { if (names[i].TagNo == GeneralName.DirectoryName) { result[pos++] = X500Name.GetInstance(names[i].Name); } } return(result); }
public override string ToString() { StringBuilder buf = new StringBuilder(); buf.Append(tag); buf.Append(": "); switch (tag) { case Rfc822Name: case DnsName: case UniformResourceIdentifier: buf.Append(DerIA5String.GetInstance(obj).GetString()); break; case DirectoryName: buf.Append(X500Name.GetInstance(obj).ToString()); break; default: buf.Append(obj.ToString()); break; } return(buf.ToString()); }
private bool MatchesDN( X500Name subject, GeneralNames targets) { GeneralName[] names = targets.GetNames(); for (int i = 0; i != names.Length; i++) { GeneralName gn = names[i]; if (gn.TagNo == GeneralName.DirectoryName) { try { if (X500Name.GetInstance(gn.Name).Equivalent(subject)) { return(true); } } catch (Exception) { } } } return(false); }
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 = X500Name.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 = X500Name.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; } } }
public static GeneralName GetInstance( object obj) { if (obj == null || obj is GeneralName) { return((GeneralName)obj); } if (obj is Asn1TaggedObject) { Asn1TaggedObject tagObj = (Asn1TaggedObject)obj; int tag = tagObj.TagNo; switch (tag) { case OtherName: return(new GeneralName(tag, Asn1Sequence.GetInstance(tagObj, false))); case Rfc822Name: return(new GeneralName(tag, DerIA5String.GetInstance(tagObj, false))); case DnsName: return(new GeneralName(tag, DerIA5String.GetInstance(tagObj, false))); case X400Address: throw new ArgumentException("unknown tag: " + tag); case DirectoryName: return(new GeneralName(tag, X500Name.GetInstance(tagObj, true))); case EdiPartyName: return(new GeneralName(tag, Asn1Sequence.GetInstance(tagObj, false))); case UniformResourceIdentifier: return(new GeneralName(tag, DerIA5String.GetInstance(tagObj, false))); case IPAddress: return(new GeneralName(tag, Asn1OctetString.GetInstance(tagObj, false))); case RegisteredID: return(new GeneralName(tag, DerObjectIdentifier.GetInstance(tagObj, false))); } } if (obj is byte[]) { try { return(GetInstance(Asn1Object.FromByteArray((byte[])obj))); } catch (IOException) { throw new ArgumentException("unable to parse encoded general name"); } } throw new ArgumentException("unknown object in GetInstance: " + Platform.GetTypeName(obj), "obj"); }
internal static ICollection GetAlternativeName( byte[] extVal) { IList temp = Platform.CreateArrayList(); if (extVal != null) { try { Asn1Sequence seq = Asn1Sequence.GetInstance(extVal); foreach (GeneralName genName in seq) { IList list = Platform.CreateArrayList(); list.Add(genName.TagNo); switch (genName.TagNo) { case GeneralName.EdiPartyName: case GeneralName.X400Address: case GeneralName.OtherName: list.Add(genName.Name.ToAsn1Object()); break; case GeneralName.DirectoryName: list.Add(X500Name.GetInstance(genName.Name).ToString()); break; case GeneralName.DnsName: case GeneralName.Rfc822Name: case GeneralName.UniformResourceIdentifier: list.Add(((IAsn1String)genName.Name).GetString()); break; case GeneralName.RegisteredID: list.Add(DerObjectIdentifier.GetInstance(genName.Name).Id); break; case GeneralName.IPAddress: list.Add(DerOctetString.GetInstance(genName.Name).GetOctets()); break; default: throw new IOException("Bad tag number: " + genName.TagNo); } temp.Add(list); } } catch (Exception e) { throw new CertificateParsingException(e.Message); } } return(temp); }
private ServiceLocator( Asn1Sequence seq) { this.issuer = X500Name.GetInstance(seq[0]); if (seq.Count > 1) { this.locator = seq[1].ToAsn1Object(); } }
private IssuerAndSerialNumber( Asn1Sequence seq) { if (seq.Count != 2) { throw new ArgumentException("Wrong number of elements in sequence", "seq"); } this.name = X500Name.GetInstance(seq[0]); this.certSerialNumber = DerInteger.GetInstance(seq[1]); }
private CertTemplate(Asn1Sequence seq) { this.seq = seq; foreach (Asn1TaggedObject tObj in seq) { switch (tObj.TagNo) { case 0: version = DerInteger.GetInstance(tObj, false); break; case 1: serialNumber = DerInteger.GetInstance(tObj, false); break; case 2: signingAlg = AlgorithmIdentifier.GetInstance(tObj, false); break; case 3: issuer = X500Name.GetInstance(tObj, true); // CHOICE break; case 4: validity = OptionalValidity.GetInstance(Asn1Sequence.GetInstance(tObj, false)); break; case 5: subject = X500Name.GetInstance(tObj, true); // CHOICE break; case 6: publicKey = SubjectPublicKeyInfo.GetInstance(tObj, false); break; case 7: issuerUID = DerBitString.GetInstance(tObj, false); break; case 8: subjectUID = DerBitString.GetInstance(tObj, false); break; case 9: extensions = X509Extensions.GetInstance(tObj, false); break; default: throw new ArgumentException("unknown tag: " + tObj.TagNo, "seq"); } } }
internal TbsCertificateList( Asn1Sequence seq) { if (seq.Count < 3 || seq.Count > 7) { throw new ArgumentException("Bad sequence size: " + seq.Count); } int seqPos = 0; this.seq = seq; if (seq[seqPos] is DerInteger) { version = DerInteger.GetInstance(seq[seqPos++]); } else { version = new DerInteger(0); } signature = AlgorithmIdentifier.GetInstance(seq[seqPos++]); issuer = X500Name.GetInstance(seq[seqPos++]); thisUpdate = Time.GetInstance(seq[seqPos++]); if (seqPos < seq.Count && (seq[seqPos] is DerUtcTime || seq[seqPos] is DerGeneralizedTime || seq[seqPos] is Time)) { nextUpdate = Time.GetInstance(seq[seqPos++]); } if (seqPos < seq.Count && !(seq[seqPos] is DerTaggedObject)) { revokedCertificates = Asn1Sequence.GetInstance(seq[seqPos++]); } if (seqPos < seq.Count && seq[seqPos] is DerTaggedObject) { crlExtensions = X509Extensions.GetInstance(seq[seqPos]); } }
private CrlIdentifier( Asn1Sequence seq) { if (seq == null) { throw new ArgumentNullException("seq"); } if (seq.Count < 2 || seq.Count > 3) { throw new ArgumentException("Bad sequence size: " + seq.Count, "seq"); } this.crlIssuer = X500Name.GetInstance(seq[0]); this.crlIssuedTime = DerUtcTime.GetInstance(seq[1]); if (seq.Count > 2) { this.crlNumber = DerInteger.GetInstance(seq[2]); } }
private object[] GetNames() { GeneralNames name; if (form is V2Form) { name = ((V2Form)form).IssuerName; } else { name = (GeneralNames)form; } GeneralName[] names = name.GetNames(); int count = 0; for (int i = 0; i != names.Length; i++) { if (names[i].TagNo == GeneralName.DirectoryName) { ++count; } } object[] result = new object[count]; int pos = 0; for (int i = 0; i != names.Length; i++) { if (names[i].TagNo == GeneralName.DirectoryName) { result[pos++] = X500Name.GetInstance(names[i].Name); } } return(result); }
private CertificationRequestInfo( Asn1Sequence seq) { version = (DerInteger)seq[0]; subject = X500Name.GetInstance(seq[1]); subjectPKInfo = SubjectPublicKeyInfo.GetInstance(seq[2]); // // some CertificationRequestInfo objects seem to treat this field // as optional. // if (seq.Count > 3) { DerTaggedObject tagobj = (DerTaggedObject)seq[3]; attributes = Asn1Set.GetInstance(tagobj, false); } if (subject == null || version == null || subjectPKInfo == null) { throw new ArgumentException( "Not all mandatory fields set in CertificationRequestInfo generator."); } }
private IssuerAndSerialNumber( Asn1Sequence seq) { this.name = X500Name.GetInstance(seq[0]); this.serialNumber = (DerInteger)seq[1]; }