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; } } }
private SignedData(Asn1Sequence seq) { IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); this.version = (DerInteger)enumerator.Current; enumerator.MoveNext(); this.digestAlgorithms = (Asn1Set)enumerator.Current; enumerator.MoveNext(); this.contentInfo = Org.BouncyCastle.Asn1.Pkcs.ContentInfo.GetInstance(enumerator.Current); while (enumerator.MoveNext()) { Asn1Object current = (Asn1Object)enumerator.Current; if (current is DerTaggedObject) { DerTaggedObject obj3 = (DerTaggedObject)current; switch (obj3.TagNo) { case 0: { this.certificates = Asn1Set.GetInstance(obj3, false); continue; } case 1: { this.crls = Asn1Set.GetInstance(obj3, false); continue; } } throw new ArgumentException("unknown tag value " + obj3.TagNo); } this.signerInfos = (Asn1Set)current; } }
private string GetOcspUrlFromCertificate(X509Certificate cert) { var derId = new DerObjectIdentifier(X509Extensions.AuthorityInfoAccess.Id); byte[] extensionValue = cert.GetExtensionValue(derId).GetOctets(); Asn1Sequence asn1Seq = (Asn1Sequence)Asn1Object.FromByteArray(extensionValue); // AuthorityInfoAccessSyntax // Enumeration <?> objects = asn1Seq.Objects; string result = null; foreach (Asn1Sequence obj in asn1Seq) { DerObjectIdentifier oid = (DerObjectIdentifier)obj[0]; // accessMethod DerTaggedObject location = (DerTaggedObject)obj[1]; // accessLocation if (location.TagNo == GeneralName.UniformResourceIdentifier) { DerOctetString uri = (DerOctetString)location.GetObject(); String str = Encoding.Default.GetString(uri.GetOctets()); if (oid.Equals(X509ObjectIdentifiers.IdADOcsp)) { result = str; break; } } } //while (objects.hasMoreElements()) //{ // ASN1Sequence obj = (ASN1Sequence)objects.nextElement(); // AccessDescription //} return(result); }
private Accuracy(Asn1Sequence seq) { for (int i = 0; i < seq.Count; i++) { if (seq[i] is DerInteger) { this.seconds = (DerInteger)seq[i]; } else if (seq[i] is DerTaggedObject) { DerTaggedObject derTaggedObject = (DerTaggedObject)seq[i]; switch (derTaggedObject.TagNo) { case 0: this.millis = DerInteger.GetInstance(derTaggedObject, false); if (this.millis.Value.IntValue < 1 || this.millis.Value.IntValue > 999) { throw new ArgumentException("Invalid millis field : not in (1..999)."); } break; case 1: this.micros = DerInteger.GetInstance(derTaggedObject, false); if (this.micros.Value.IntValue < 1 || this.micros.Value.IntValue > 999) { throw new ArgumentException("Invalid micros field : not in (1..999)."); } break; default: throw new ArgumentException("Invalig tag number"); } } } }
private CertificationRequestInfo( Asn1Sequence seq) { version = (DerInteger)seq[0]; subject = X509Name.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); } ValidateAttributes(attributes); if (subject == null || version == null || subjectPKInfo == null) { throw new ArgumentException( "Not all mandatory fields set in CertificationRequestInfo generator."); } }
public override byte[] ToArray() { DerTaggedObject tag = new DerTaggedObject(GetValue("TagNo").Value, _noVerify ? new DummyAsn1Object(this["Object"].ToArray()) : Asn1Object.FromByteArray(this["Object"].ToArray())); return(GetDerEncoded(tag)); }
public CertBag( Asn1Sequence seq) { if (seq.Count != 2) throw new ArgumentException("Wrong number of elements in sequence", "seq"); // this.seq = seq; this.certID = DerObjectIdentifier.GetInstance(seq[0]); this.certValue = DerTaggedObject.GetInstance(seq[1]).GetObject(); }
public override void Build( X509V3CertificateGenerator certGen, Pkcs10CertificationRequest request, X509Certificate caCert) { certGen.AddExtension( X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(caCert) ); certGen.AddExtension( X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(request.GetPublicKey()) ); certGen.AddExtension( X509Extensions.KeyUsage, true, new KeyUsage(0xa0) ); certGen.AddExtension( X509Extensions.ExtendedKeyUsage, true, new ExtendedKeyUsage(new[] { new DerObjectIdentifier("1.3.6.1.4.1.311.20.2.2"), new DerObjectIdentifier("1.3.6.1.5.5.7.3.2") }) ); ApplyCrlExtension(certGen, crlLink); var otherName = new Asn1EncodableVector { new DerObjectIdentifier("1.3.6.1.4.1.311.20.2.3"), new DerTaggedObject(true, GeneralName.OtherName, new DerUtf8String(upnName)) }; var upn = new DerTaggedObject(false, 0, new DerSequence(otherName)); var generalNames = new Asn1EncodableVector { upn }; certGen.AddExtension( X509Extensions.SubjectAlternativeName, false, new DerSequence(generalNames) ); }
private void TestTaggedObject() { // boolean explicit, int tagNo, ASN1Encodable obj bool isExplicit = false; // Type1 ::= VisibleString DerVisibleString type1 = new DerVisibleString("Jones"); if (!Arrays.AreEqual(Hex.Decode("1A054A6F6E6573"), type1.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type2 ::= [APPLICATION 3] IMPLICIT Type1 isExplicit = false; DerApplicationSpecific type2 = new DerApplicationSpecific(isExplicit, 3, type1); // type2.isConstructed() if (!Arrays.AreEqual(Hex.Decode("43054A6F6E6573"), type2.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type3 ::= [2] Type2 isExplicit = true; DerTaggedObject type3 = new DerTaggedObject(isExplicit, 2, type2); if (!Arrays.AreEqual(Hex.Decode("A20743054A6F6E6573"), type3.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type4 ::= [APPLICATION 7] IMPLICIT Type3 isExplicit = false; DerApplicationSpecific type4 = new DerApplicationSpecific(isExplicit, 7, type3); if (!Arrays.AreEqual(Hex.Decode("670743054A6F6E6573"), type4.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type5 ::= [2] IMPLICIT Type2 isExplicit = false; DerTaggedObject type5 = new DerTaggedObject(isExplicit, 2, type2); // type5.isConstructed() if (!Arrays.AreEqual(Hex.Decode("82054A6F6E6573"), type5.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } }
public void Read_WithInvalidMicroseconds_Throws(int microseconds) { var derMicroseconds = new DerTaggedObject( explicitly: false, tagNo: 1, obj: new DerInteger(BigInteger.ValueOf(microseconds))); var bcAccuracy = new DerSequence(derMicroseconds); var bytes = bcAccuracy.GetDerEncoded(); var exception = Assert.Throws <CryptographicException>( () => Accuracy.Read(bytes)); Assert.Equal("The ASN.1 data is invalid.", exception.Message); }
private TstInfo(Asn1Sequence seq) { IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); version = DerInteger.GetInstance(enumerator.Current); enumerator.MoveNext(); tsaPolicyId = DerObjectIdentifier.GetInstance(enumerator.Current); enumerator.MoveNext(); messageImprint = MessageImprint.GetInstance(enumerator.Current); enumerator.MoveNext(); serialNumber = DerInteger.GetInstance(enumerator.Current); enumerator.MoveNext(); genTime = DerGeneralizedTime.GetInstance(enumerator.Current); ordering = DerBoolean.False; while (enumerator.MoveNext()) { Asn1Object asn1Object = (Asn1Object)enumerator.Current; if (asn1Object is Asn1TaggedObject) { DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Object; switch (derTaggedObject.TagNo) { case 0: tsa = GeneralName.GetInstance(derTaggedObject, explicitly: true); break; case 1: extensions = X509Extensions.GetInstance(derTaggedObject, explicitly: false); break; default: throw new ArgumentException("Unknown tag value " + derTaggedObject.TagNo); } } if (asn1Object is DerSequence) { accuracy = Accuracy.GetInstance(asn1Object); } if (asn1Object is DerBoolean) { ordering = DerBoolean.GetInstance(asn1Object); } if (asn1Object is DerInteger) { nonce = DerInteger.GetInstance(asn1Object); } } }
private TstInfo(Asn1Sequence seq) { //IL_00fa: Unknown result type (might be due to invalid IL or missing references) global::System.Collections.IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); version = DerInteger.GetInstance(enumerator.get_Current()); enumerator.MoveNext(); tsaPolicyId = DerObjectIdentifier.GetInstance(enumerator.get_Current()); enumerator.MoveNext(); messageImprint = MessageImprint.GetInstance(enumerator.get_Current()); enumerator.MoveNext(); serialNumber = DerInteger.GetInstance(enumerator.get_Current()); enumerator.MoveNext(); genTime = DerGeneralizedTime.GetInstance(enumerator.get_Current()); ordering = DerBoolean.False; while (enumerator.MoveNext()) { Asn1Object asn1Object = (Asn1Object)enumerator.get_Current(); if (asn1Object is Asn1TaggedObject) { DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Object; switch (derTaggedObject.TagNo) { case 0: tsa = GeneralName.GetInstance(derTaggedObject, explicitly: true); break; case 1: extensions = X509Extensions.GetInstance(derTaggedObject, explicitly: false); break; default: throw new ArgumentException(string.Concat((object)"Unknown tag value ", (object)derTaggedObject.TagNo)); } } if (asn1Object is DerSequence) { accuracy = Accuracy.GetInstance(asn1Object); } if (asn1Object is DerBoolean) { ordering = DerBoolean.GetInstance(asn1Object); } if (asn1Object is DerInteger) { nonce = DerInteger.GetInstance(asn1Object); } } }
private CertificationRequestInfo(Asn1Sequence seq) { version = (DerInteger)seq[0]; subject = X509Name.GetInstance(seq[1]); subjectPKInfo = SubjectPublicKeyInfo.GetInstance(seq[2]); if (seq.Count > 3) { DerTaggedObject obj = (DerTaggedObject)seq[3]; attributes = Asn1Set.GetInstance(obj, explicitly: false); } if (subject == null || version == null || subjectPKInfo == null) { throw new ArgumentException("Not all mandatory fields set in CertificationRequestInfo generator."); } }
private SignedData( Asn1Sequence seq) { IEnumerator e = seq.GetEnumerator(); e.MoveNext(); version = (DerInteger)e.Current; e.MoveNext(); digestAlgorithms = (Asn1Set)e.Current; e.MoveNext(); contentInfo = ContentInfo.GetInstance(e.Current); while (e.MoveNext()) { Asn1Object o = (Asn1Object)e.Current; // // an interesting feature of SignedData is that there appear to be varying implementations... // for the moment we ignore anything which doesn't fit. // if (o is DerTaggedObject) { DerTaggedObject tagged = (DerTaggedObject)o; switch (tagged.TagNo) { case 0: certificates = Asn1Set.GetInstance(tagged, false); break; case 1: crls = Asn1Set.GetInstance(tagged, false); break; default: throw new ArgumentException("unknown tag value " + tagged.TagNo); } } else { signerInfos = (Asn1Set)o; } } }
private SignerAttribute(object obj) { Asn1Sequence asn1Sequence = (Asn1Sequence)obj; DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Sequence[0]; if (derTaggedObject.TagNo == 0) { this.claimedAttributes = Asn1Sequence.GetInstance(derTaggedObject, true); return; } if (derTaggedObject.TagNo == 1) { this.certifiedAttributes = AttributeCertificate.GetInstance(derTaggedObject); return; } throw new ArgumentException("illegal tag.", "obj"); }
private void TestTaggedObject() { // boolean explicit, int tagNo, ASN1Encodable obj bool isExplicit = false; // Type1 ::= VisibleString DerVisibleString type1 = new DerVisibleString("Jones"); if (!Arrays.AreEqual(Hex.Decode("1A054A6F6E6573"), type1.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type2 ::= [APPLICATION 3] IMPLICIT Type1 isExplicit = false; DerApplicationSpecific type2 = new DerApplicationSpecific(isExplicit, 3, type1); // type2.isConstructed() if (!Arrays.AreEqual(Hex.Decode("43054A6F6E6573"), type2.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type3 ::= [2] Type2 isExplicit = true; DerTaggedObject type3 = new DerTaggedObject(isExplicit, 2, type2); if (!Arrays.AreEqual(Hex.Decode("A20743054A6F6E6573"), type3.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type4 ::= [APPLICATION 7] IMPLICIT Type3 isExplicit = false; DerApplicationSpecific type4 = new DerApplicationSpecific(isExplicit, 7, type3); if (!Arrays.AreEqual(Hex.Decode("670743054A6F6E6573"), type4.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } // Type5 ::= [2] IMPLICIT Type2 isExplicit = false; DerTaggedObject type5 = new DerTaggedObject(isExplicit, 2, type2); // type5.isConstructed() if (!Arrays.AreEqual(Hex.Decode("82054A6F6E6573"), type5.GetEncoded())) { Fail("ERROR: expected value doesn't match!"); } }
public OtherInfo(Asn1Sequence seq) { global::System.Collections.IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); keyInfo = new KeySpecificInfo((Asn1Sequence)enumerator.get_Current()); while (enumerator.MoveNext()) { DerTaggedObject derTaggedObject = (DerTaggedObject)enumerator.get_Current(); if (derTaggedObject.TagNo == 0) { partyAInfo = (Asn1OctetString)derTaggedObject.GetObject(); } else if (derTaggedObject.TagNo == 2) { suppPubInfo = (Asn1OctetString)derTaggedObject.GetObject(); } } }
private SignerAttribute(object obj) { //IL_0050: Unknown result type (might be due to invalid IL or missing references) Asn1Sequence asn1Sequence = (Asn1Sequence)obj; DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Sequence[0]; if (derTaggedObject.TagNo == 0) { claimedAttributes = Asn1Sequence.GetInstance(derTaggedObject, explicitly: true); return; } if (derTaggedObject.TagNo == 1) { certifiedAttributes = AttributeCertificate.GetInstance(derTaggedObject); return; } throw new ArgumentException("illegal tag.", "obj"); }
public OtherInfo(Asn1Sequence seq) { IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); this.keyInfo = new KeySpecificInfo((Asn1Sequence)enumerator.Current); while (enumerator.MoveNext()) { DerTaggedObject derTaggedObject = (DerTaggedObject)enumerator.Current; if (derTaggedObject.TagNo == 0) { this.partyAInfo = (Asn1OctetString)derTaggedObject.GetObject(); } else if (derTaggedObject.TagNo == 2) { this.suppPubInfo = (Asn1OctetString)derTaggedObject.GetObject(); } } }
private SignerAttribute( object obj) { Asn1Sequence seq = (Asn1Sequence)obj; DerTaggedObject taggedObject = (DerTaggedObject)seq[0]; if (taggedObject.TagNo == 0) { claimedAttributes = Asn1Sequence.GetInstance(taggedObject, true); } else if (taggedObject.TagNo == 1) { certifiedAttributes = AttributeCertificate.GetInstance(taggedObject); } else { throw new ArgumentException("illegal tag.", "obj"); } }
private Accuracy(Asn1Sequence seq) { //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < seq.Count; i++) { if (seq[i] is DerInteger) { seconds = (DerInteger)seq[i]; } else { if (!(seq[i] is DerTaggedObject)) { continue; } DerTaggedObject derTaggedObject = (DerTaggedObject)seq[i]; switch (derTaggedObject.TagNo) { case 0: millis = DerInteger.GetInstance(derTaggedObject, isExplicit: false); if (millis.Value.IntValue < 1 || millis.Value.IntValue > 999) { throw new ArgumentException("Invalid millis field : not in (1..999)."); } break; case 1: micros = DerInteger.GetInstance(derTaggedObject, isExplicit: false); if (micros.Value.IntValue < 1 || micros.Value.IntValue > 999) { throw new ArgumentException("Invalid micros field : not in (1..999)."); } break; default: throw new ArgumentException("Invalig tag number"); } } } }
private Accuracy( Asn1Sequence seq) { for (int i = 0; i < seq.Count; ++i) { // seconds if (seq[i] is DerInteger) { seconds = (DerInteger)seq[i]; } else if (seq[i] is DerTaggedObject) { DerTaggedObject extra = (DerTaggedObject)seq[i]; switch (extra.TagNo) { case 0: millis = DerInteger.GetInstance(extra, false); if (millis.Value.IntValue < MinMillis || millis.Value.IntValue > MaxMillis) { throw new ArgumentException( "Invalid millis field : not in (1..999)."); } break; case 1: micros = DerInteger.GetInstance(extra, false); if (micros.Value.IntValue < MinMicros || micros.Value.IntValue > MaxMicros) { throw new ArgumentException( "Invalid micros field : not in (1..999)."); } break; default: throw new ArgumentException("Invalig tag number"); } } } }
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; } } }
private void checkConstruction( DeclarationOfMajority decl, DeclarationOfMajority.Choice type, DerGeneralizedTime dateOfBirth, int notYoungerThan) { checkValues(decl, type, dateOfBirth, notYoungerThan); decl = DeclarationOfMajority.GetInstance(decl); checkValues(decl, type, dateOfBirth, notYoungerThan); Asn1InputStream aIn = new Asn1InputStream(decl.ToAsn1Object().GetEncoded()); DerTaggedObject info = (DerTaggedObject)aIn.ReadObject(); decl = DeclarationOfMajority.GetInstance(info); checkValues(decl, type, dateOfBirth, notYoungerThan); }
private string GetResponderName(ResponderID responderId, ref bool byKey) { DerTaggedObject derTaggedObject = (DerTaggedObject)responderId.ToAsn1Object(); if (derTaggedObject.TagNo != 1) { if (derTaggedObject.TagNo != 2) { return(null); } Asn1TaggedObject asn1TaggedObject = (Asn1TaggedObject)responderId.ToAsn1Object(); Asn1OctetString asn1OctetString = (Asn1OctetString)asn1TaggedObject.GetObject(); byKey = true; return(Convert.ToBase64String(asn1OctetString.GetOctets())); } X509Name instance = X509Name.GetInstance(derTaggedObject.GetObject()); byKey = false; return(instance.ToString()); }
public static ECPrivateKeyParameters GetPrivateKey(byte[] privateKey) { Asn1Object version = new DerInteger(1); Asn1Object derEncodedKey = new DerOctetString(privateKey); Asn1Object keyTypeParameters = new DerTaggedObject(0, new DerObjectIdentifier(@"1.2.840.10045.3.1.7")); Asn1Object derSequence = new DerSequence(version, derEncodedKey, keyTypeParameters); var base64EncodedDerSequence = Convert.ToBase64String(derSequence.GetDerEncoded()); var pemKey = "-----BEGIN EC PRIVATE KEY-----\n"; pemKey += base64EncodedDerSequence; pemKey += "\n-----END EC PRIVATE KEY----"; var reader = new StringReader(pemKey); var pemReader = new PemReader(reader); var keyPair = (AsymmetricCipherKeyPair)pemReader.ReadObject(); return((ECPrivateKeyParameters)keyPair.Private); }
private void IncorporateOCSPRefs(CompleteRevocationRefs completeRevocationRefs , ValidationContext ctx) { if (!ctx.GetNeededOCSPResp().IsEmpty()) { var ocsp = ctx.GetNeededOCSPResp()[0]; //TODO jbonill Digest parameter? byte[] ocspDigest = DigestUtilities.CalculateDigest("SHA-1", ocsp.GetEncoded()); MSXades.OCSPRef incOCSPRef = new MSXades.OCSPRef(); //TODO jbonilla Digest parameter? incOCSPRef.CertDigest.DigestMethod.Algorithm = SignedXml.XmlDsigSHA1Url; incOCSPRef.CertDigest.DigestValue = ocspDigest; //TODO jbonilla //incOCSPRef.OCSPIdentifier.UriAttribute = ""; incOCSPRef.OCSPIdentifier.ProducedAt = ocsp.ProducedAt; string responderIdText = ""; RespID respId = ocsp.ResponderId; ResponderID ocspResponderId = respId.ToAsn1Object(); DerTaggedObject derTaggedObject = (DerTaggedObject)ocspResponderId.ToAsn1Object(); if (2 == derTaggedObject.TagNo) { responderIdText = Convert.ToBase64String(ocspResponderId.GetKeyHash()); } else { responderIdText = ocspResponderId.Name.ToString(); } incOCSPRef.OCSPIdentifier.ResponderID = responderIdText; completeRevocationRefs.OCSPRefs.OCSPRefCollection.Add(incOCSPRef); } }
public void explode(byte[] fileContents) { try { Asn1Sequence sequenza = Asn1Sequence.GetInstance(fileContents); DerObjectIdentifier tsdOIDFile = sequenza[0] as DerObjectIdentifier; if (tsdOIDFile != null) { if (tsdOIDFile.Id == CmsObjectIdentifiers.timestampedData.Id) //TSD { DerTaggedObject taggedObject = sequenza[1] as DerTaggedObject; if (taggedObject != null) { Asn1Sequence asn1seq = Asn1Sequence.GetInstance(taggedObject, true); TimeStampedData tsd = TimeStampedData.GetInstance(asn1seq); _p7m = new CryptoFile { Content = tsd.Content.GetOctets(), MessageFileType = fileType.Binary, Name = "default.p7m" }; TimeStampAndCrl[] crlTS = tsd.TemporalEvidence.TstEvidence.ToTimeStampAndCrlArray(); foreach (TimeStampAndCrl tokCRL in crlTS) { TimeStampToken tsToken = new TimeStampToken(tokCRL.TimeStampToken); ContentInfo o = tokCRL.TimeStampToken; Org.BouncyCastle.Asn1.Cmp.PkiStatusInfo si = new Org.BouncyCastle.Asn1.Cmp.PkiStatusInfo(0); Org.BouncyCastle.Asn1.Tsp.TimeStampResp re = new Org.BouncyCastle.Asn1.Tsp.TimeStampResp(si, o); string serial = tsToken.TimeStampInfo.SerialNumber.ToString(); _tsr.Add(new CryptoFile { Content = re.GetEncoded(), Name = String.Format("default.{0}.tsr", serial), MessageFileType = fileType.Binary }); } } } } } catch (Exception e) { throw e; } }
public OtherInfo( Asn1Sequence seq) { IEnumerator e = seq.GetEnumerator(); e.MoveNext(); keyInfo = new KeySpecificInfo((Asn1Sequence)e.Current); while (e.MoveNext()) { DerTaggedObject o = (DerTaggedObject)e.Current; if (o.TagNo == 0) { partyAInfo = (Asn1OctetString)o.GetObject(); } else if ((int)o.TagNo == 2) { suppPubInfo = (Asn1OctetString)o.GetObject(); } } }
private string GetResponderName(ResponderID responderId, ref bool byKey) { DerTaggedObject dt = (DerTaggedObject)responderId.ToAsn1Object(); if (dt.TagNo == 1) { byKey = false; return(new X500DistinguishedName(dt.GetObject().GetEncoded()).Name); } else if (dt.TagNo == 2) { Asn1TaggedObject tagger = (Asn1TaggedObject)responderId.ToAsn1Object(); Asn1OctetString pubInfo = (Asn1OctetString)tagger.GetObject(); byKey = true; return(Convert.ToBase64String(pubInfo.GetOctets())); } else { return(null); } }
private SignedData(Asn1Sequence seq) { IEnumerator enumerator = seq.GetEnumerator(); enumerator.MoveNext(); this.version = (DerInteger)enumerator.Current; enumerator.MoveNext(); this.digestAlgorithms = (Asn1Set)enumerator.Current; enumerator.MoveNext(); this.contentInfo = ContentInfo.GetInstance(enumerator.Current); while (enumerator.MoveNext()) { Asn1Object asn1Object = (Asn1Object)enumerator.Current; if (asn1Object is DerTaggedObject) { DerTaggedObject derTaggedObject = (DerTaggedObject)asn1Object; switch (derTaggedObject.TagNo) { case 0: this.certificates = Asn1Set.GetInstance(derTaggedObject, false); break; case 1: this.crls = Asn1Set.GetInstance(derTaggedObject, false); break; default: throw new ArgumentException("unknown tag value " + derTaggedObject.TagNo); } } else { this.signerInfos = (Asn1Set)asn1Object; } } }
public override void PerformTest() { Asn1EncodableVector v = new Asn1EncodableVector(); byte[] data = new byte[10]; v.Add(new DerOctetString(data)); v.Add(new DerBitString(data)); v.Add(new DerInteger(100)); v.Add(DerBoolean.True); checkSortedSet(0, new DerSet(v)); v = new Asn1EncodableVector(); v.Add(new DerInteger(100)); v.Add(DerBoolean.True); v.Add(new DerOctetString(data)); v.Add(new DerBitString(data)); checkSortedSet(1, new DerSet(v)); v = new Asn1EncodableVector(); v.Add(DerBoolean.True); v.Add(new DerOctetString(data)); v.Add(new DerBitString(data)); v.Add(new DerInteger(100)); checkSortedSet(2, new DerSet(v)); v = new Asn1EncodableVector(); v.Add(new DerBitString(data)); v.Add(new DerOctetString(data)); v.Add(new DerInteger(100)); v.Add(DerBoolean.True); checkSortedSet(3, new DerSet(v)); v = new Asn1EncodableVector(); v.Add(new DerOctetString(data)); v.Add(new DerBitString(data)); v.Add(new DerInteger(100)); v.Add(DerBoolean.True); Asn1Set s = new BerSet(v); if (!(s[0] is DerOctetString)) { Fail("BER set sort order changed."); } // create an implicitly tagged "set" without sorting Asn1TaggedObject tag = new DerTaggedObject(false, 1, new DerSequence(v)); s = Asn1Set.GetInstance(tag, false); if (s[0] is DerBoolean) { Fail("sorted when shouldn't be."); } // equality test v = new Asn1EncodableVector(); v.Add(DerBoolean.True); v.Add(DerBoolean.True); v.Add(DerBoolean.True); s = new DerSet(v); }