/** * return a table of the unprotected attributes indexed by * the OID of the attribute. * @throws IOException */ public Asn1.Cms.AttributeTable GetUnprotectedAttributes() { if (_unprotectedAttributes == null && _attrNotRead) { Asn1SetParser asn1Set = this.envelopedData.GetUnprotectedAttrs(); _attrNotRead = false; if (asn1Set != null) { Asn1EncodableVector v = new Asn1EncodableVector(); IAsn1Convertible o; while ((o = asn1Set.ReadObject()) != null) { Asn1SequenceParser seq = (Asn1SequenceParser)o; v.Add(seq.ToAsn1Object()); } _unprotectedAttributes = new Asn1.Cms.AttributeTable(new DerSet(v)); } } return(_unprotectedAttributes); }
/** * return a table of the unauthenticated attributes indexed by * the OID of the attribute. * @exception java.io.IOException */ public AttributeTable GetUnauthAttrs() { if (unauthAttrs == null && unauthAttrNotRead) { Asn1SetParser s = authData.GetUnauthAttrs(); unauthAttrNotRead = false; if (s != null) { Asn1EncodableVector v = new Asn1EncodableVector(); IAsn1Convertible o; while ((o = s.ReadObject()) != null) { Asn1SequenceParser seq = (Asn1SequenceParser)o; v.Add(seq.ToAsn1Object()); } unauthAttrs = new AttributeTable(new DerSet(v)); } } return(unauthAttrs); }
public SignerInformationStore GetSignerInfos() { if (_signerInfoStore == null) { PopulateCertCrlSets(); IList list = Platform.CreateArrayList(); IDictionary dictionary = Platform.CreateHashtable(); foreach (object key in _digests.Keys) { dictionary[key] = DigestUtilities.DoFinal((IDigest)_digests[key]); } try { Asn1SetParser signerInfos = _signedData.GetSignerInfos(); IAsn1Convertible asn1Convertible; while ((asn1Convertible = signerInfos.ReadObject()) != null) { SignerInfo instance = SignerInfo.GetInstance(asn1Convertible.ToAsn1Object()); string digestAlgName = Helper.GetDigestAlgName(instance.DigestAlgorithm.Algorithm.Id); byte[] digest = (byte[])dictionary[digestAlgName]; list.Add(new SignerInformation(instance, _signedContentType, null, new BaseDigestCalculator(digest))); } } catch (IOException ex) { throw new CmsException("io exception: " + ex.Message, ex); } _signerInfoStore = new SignerInformationStore(list); } return(_signerInfoStore); }
public CmsSignedDataParser(CmsTypedStream signedContent, Stream sigData) : base(sigData) { //IL_0130: Expected O, but got Unknown try { _signedContent = signedContent; _signedData = SignedDataParser.GetInstance(contentInfo.GetContent(16)); _digests = Platform.CreateHashtable(); _digestOids = new HashSet(); Asn1SetParser digestAlgorithms = _signedData.GetDigestAlgorithms(); IAsn1Convertible asn1Convertible; while ((asn1Convertible = digestAlgorithms.ReadObject()) != null) { AlgorithmIdentifier instance = AlgorithmIdentifier.GetInstance(asn1Convertible.ToAsn1Object()); try { string id = instance.Algorithm.Id; string digestAlgName = Helper.GetDigestAlgName(id); if (!_digests.Contains((object)digestAlgName)) { _digests.set_Item((object)digestAlgName, (object)Helper.GetDigestInstance(digestAlgName)); _digestOids.Add(id); } } catch (SecurityUtilityException) { } } ContentInfoParser encapContentInfo = _signedData.GetEncapContentInfo(); Asn1OctetStringParser asn1OctetStringParser = (Asn1OctetStringParser)encapContentInfo.GetContent(4); if (asn1OctetStringParser != null) { CmsTypedStream cmsTypedStream = new CmsTypedStream(encapContentInfo.ContentType.Id, asn1OctetStringParser.GetOctetStream()); if (_signedContent == null) { _signedContent = cmsTypedStream; } else { cmsTypedStream.Drain(); } } _signedContentType = ((_signedContent == null) ? encapContentInfo.ContentType : new DerObjectIdentifier(_signedContent.ContentType)); } catch (IOException val) { IOException val2 = val; throw new CmsException("io exception: " + ((global::System.Exception)(object) val2).get_Message(), (global::System.Exception)(object) val2); } }
public SignerInformationStore GetSignerInfos() { //IL_00e9: Expected O, but got Unknown if (_signerInfoStore == null) { PopulateCertCrlSets(); global::System.Collections.IList list = Platform.CreateArrayList(); IDictionary val = Platform.CreateHashtable(); { global::System.Collections.IEnumerator enumerator = ((global::System.Collections.IEnumerable)_digests.get_Keys()).GetEnumerator(); try { while (enumerator.MoveNext()) { object current = enumerator.get_Current(); val.set_Item(current, (object)DigestUtilities.DoFinal((IDigest)_digests.get_Item(current))); } } finally { global::System.IDisposable disposable = enumerator as global::System.IDisposable; if (disposable != null) { disposable.Dispose(); } } } try { Asn1SetParser signerInfos = _signedData.GetSignerInfos(); IAsn1Convertible asn1Convertible; while ((asn1Convertible = signerInfos.ReadObject()) != null) { SignerInfo instance = SignerInfo.GetInstance(asn1Convertible.ToAsn1Object()); string digestAlgName = Helper.GetDigestAlgName(instance.DigestAlgorithm.Algorithm.Id); byte[] digest = (byte[])val.get_Item((object)digestAlgName); list.Add((object)new SignerInformation(instance, _signedContentType, null, new BaseDigestCalculator(digest))); } } catch (IOException val2) { IOException val3 = val2; throw new CmsException("io exception: " + ((global::System.Exception)(object) val3).get_Message(), (global::System.Exception)(object) val3); } _signerInfoStore = new SignerInformationStore((global::System.Collections.ICollection)list); } return(_signerInfoStore); }
public CmsSignedDataParser(CmsTypedStream signedContent, Stream sigData) : base(sigData) { try { this._signedContent = signedContent; this._signedData = SignedDataParser.GetInstance(this.contentInfo.GetContent(16)); this._digests = Platform.CreateHashtable(); this._digestOids = new HashSet(); Asn1SetParser digestAlgorithms = this._signedData.GetDigestAlgorithms(); IAsn1Convertible asn1Convertible; while ((asn1Convertible = digestAlgorithms.ReadObject()) != null) { AlgorithmIdentifier instance = AlgorithmIdentifier.GetInstance(asn1Convertible.ToAsn1Object()); try { string id = instance.ObjectID.Id; string digestAlgName = CmsSignedDataParser.Helper.GetDigestAlgName(id); if (!this._digests.Contains(digestAlgName)) { this._digests[digestAlgName] = CmsSignedDataParser.Helper.GetDigestInstance(digestAlgName); this._digestOids.Add(id); } } catch (SecurityUtilityException) { } } ContentInfoParser encapContentInfo = this._signedData.GetEncapContentInfo(); Asn1OctetStringParser asn1OctetStringParser = (Asn1OctetStringParser)encapContentInfo.GetContent(4); if (asn1OctetStringParser != null) { CmsTypedStream cmsTypedStream = new CmsTypedStream(encapContentInfo.ContentType.Id, asn1OctetStringParser.GetOctetStream()); if (this._signedContent == null) { this._signedContent = cmsTypedStream; } else { cmsTypedStream.Drain(); } } this._signedContentType = ((this._signedContent == null) ? encapContentInfo.ContentType : new DerObjectIdentifier(this._signedContent.ContentType)); } catch (IOException ex) { throw new CmsException("io exception: " + ex.Message, ex); } }
/** * return the collection of signers that are associated with the * signatures for the message. * @throws CmsException */ public SignerInformationStore GetSignerInfos() { if (_signerInfoStore == null) { IList signerInfos = new ArrayList(); IDictionary hashes = new Hashtable(); foreach (object digestKey in _digests.Keys) { hashes[digestKey] = DigestUtilities.DoFinal( (IDigest)_digests[digestKey]); } try { Asn1SetParser s = _signedData.GetSignerInfos(); IAsn1Convertible o; while ((o = s.ReadObject()) != null) { SignerInfo info = SignerInfo.GetInstance(o.ToAsn1Object()); string digestName = Helper.GetDigestAlgName( info.DigestAlgorithm.ObjectID.Id); byte[] hash = (byte[])hashes[digestName]; signerInfos.Add( new SignerInformation( info, new DerObjectIdentifier(_signedContent.ContentType), null, hash)); } } catch (IOException e) { throw new CmsException("io exception: " + e.Message, e); } _signerInfoStore = new SignerInformationStore(signerInfos); } return(_signerInfoStore); }
public Org.BouncyCastle.Asn1.Cms.AttributeTable GetUnprotectedAttributes() { if (_unprotectedAttributes == null && _attrNotRead) { Asn1SetParser unprotectedAttrs = envelopedData.GetUnprotectedAttrs(); _attrNotRead = false; if (unprotectedAttrs != null) { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(); IAsn1Convertible asn1Convertible; while ((asn1Convertible = unprotectedAttrs.ReadObject()) != null) { Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)asn1Convertible; asn1EncodableVector.Add(asn1SequenceParser.ToAsn1Object()); } _unprotectedAttributes = new Org.BouncyCastle.Asn1.Cms.AttributeTable(new DerSet(asn1EncodableVector)); } } return(_unprotectedAttributes); }
public Org.BouncyCastle.Asn1.Cms.AttributeTable GetUnauthAttrs() { if (unauthAttrs == null && unauthAttrNotRead) { Asn1SetParser asn1SetParser = authData.GetUnauthAttrs(); unauthAttrNotRead = false; if (asn1SetParser != null) { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(); IAsn1Convertible asn1Convertible; while ((asn1Convertible = asn1SetParser.ReadObject()) != null) { Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)asn1Convertible; asn1EncodableVector.Add(asn1SequenceParser.ToAsn1Object()); } unauthAttrs = new Org.BouncyCastle.Asn1.Cms.AttributeTable(new DerSet(asn1EncodableVector)); } } return(unauthAttrs); }
/** * return the collection of signers that are associated with the * signatures for the message. * @throws CmsException */ public SignerInformationStore GetSignerInfos() { if (_signerInfoStore == null) { PopulateCertCrlSets(); IList signerInfos = BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.CreateArrayList(); IDictionary hashes = BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.CreateHashtable(); foreach (object digestKey in _digests.Keys) { hashes[digestKey] = DigestUtilities.DoFinal( (IDigest)_digests[digestKey]); } try { Asn1SetParser s = _signedData.GetSignerInfos(); IAsn1Convertible o; while ((o = s.ReadObject()) != null) { SignerInfo info = SignerInfo.GetInstance(o.ToAsn1Object()); string digestName = Helper.GetDigestAlgName( info.DigestAlgorithm.Algorithm.Id); byte[] hash = (byte[])hashes[digestName]; signerInfos.Add(new SignerInformation(info, _signedContentType, null, new BaseDigestCalculator(hash))); } } catch (IOException e) { throw new CmsException("io exception: " + e.Message, e); } _signerInfoStore = new SignerInformationStore(signerInfos); } return(_signerInfoStore); }
public CmsAuthenticatedDataParser( Stream envelopedData) : base(envelopedData) { this.authAttrNotRead = true; this.authData = new AuthenticatedDataParser( (Asn1SequenceParser)contentInfo.GetContent(Asn1Tags.Sequence)); // TODO Validate version? //DerInteger version = this.authData.getVersion(); // // load the RecipientInfoStore // Asn1SetParser s = authData.GetRecipientInfos(); IList baseInfos = new ArrayList(); IAsn1Convertible entry; while ((entry = s.ReadObject()) != null) { baseInfos.Add(RecipientInfo.GetInstance(entry.ToAsn1Object())); } this.macAlg = authData.GetMacAlgorithm(); // // read the encrypted content info // ContentInfoParser data = authData.GetEnapsulatedContentInfo(); // // prime the recipients // Stream contentStream = ((Asn1OctetStringParser)data.GetContent(Asn1Tags.OctetString)).GetOctetStream(); IList infos = CmsEnvelopedHelper.ReadRecipientInfos( baseInfos, contentStream, null, macAlg, null); _recipientInfoStore = new RecipientInformationStore(infos); }
public CmsEnvelopedDataParser( Stream envelopedData) : base(envelopedData) { this._attrNotRead = true; this.envelopedData = new EnvelopedDataParser( (Asn1SequenceParser)this.contentInfo.GetContent(Asn1Tags.Sequence)); // TODO Validate version? //DerInteger version = this.envelopedData.Version; // // load the RecipientInfoStore // Asn1SetParser s = this.envelopedData.GetRecipientInfos(); IList baseInfos = new ArrayList(); IAsn1Convertible entry; while ((entry = s.ReadObject()) != null) { baseInfos.Add(RecipientInfo.GetInstance(entry.ToAsn1Object())); } // // read the encrypted content info // EncryptedContentInfoParser encInfo = this.envelopedData.GetEncryptedContentInfo(); this._encAlg = encInfo.ContentEncryptionAlgorithm; // // prime the recipients // Stream contentStream = ((Asn1OctetStringParser)encInfo.GetEncryptedContent(Asn1Tags.OctetString)).GetOctetStream(); IList infos = CmsEnvelopedHelper.ReadRecipientInfos( baseInfos, contentStream, _encAlg, null, null); this.recipientInfoStore = new RecipientInformationStore(infos); }
/** * base constructor * * @param signedContent the content that was signed. * @param sigData the signature object. */ public CmsSignedDataParser( CmsTypedStream signedContent, Stream sigData) : base(sigData) { try { this._signedContent = signedContent; this._signedData = SignedDataParser.GetInstance(this.contentInfo.GetContent(Asn1Tags.Sequence)); this._digests = Platform.CreateHashtable(); this._digestOids = new HashSet(); Asn1SetParser digAlgs = _signedData.GetDigestAlgorithms(); IAsn1Convertible o; while ((o = digAlgs.ReadObject()) != null) { AlgorithmIdentifier id = AlgorithmIdentifier.GetInstance(o.ToAsn1Object()); try { string digestOid = id.ObjectID.Id; string digestName = Helper.GetDigestAlgName(digestOid); if (!this._digests.Contains(digestName)) { this._digests[digestName] = Helper.GetDigestInstance(digestName); this._digestOids.Add(digestOid); } } catch (SecurityUtilityException) { // TODO Should do something other than ignore it } } // // If the message is simply a certificate chain message GetContent() may return null. // ContentInfoParser cont = _signedData.GetEncapContentInfo(); Asn1OctetStringParser octs = (Asn1OctetStringParser) cont.GetContent(Asn1Tags.OctetString); if (octs != null) { CmsTypedStream ctStr = new CmsTypedStream( cont.ContentType.Id, octs.GetOctetStream()); if (_signedContent == null) { this._signedContent = ctStr; } else { // // content passed in, need to read past empty encapsulated content info object if present // ctStr.Drain(); } } _signedContentType = _signedContent == null ? cont.ContentType : new DerObjectIdentifier(_signedContent.ContentType); } catch (IOException e) { throw new CmsException("io exception: " + e.Message, e); } if (_digests.Count < 1) { throw new CmsException("no digests could be created for message."); } }
public CmsEnvelopedDataParser( Stream envelopedData) : base(envelopedData) { this._attrNotRead = true; this.envelopedData = new EnvelopedDataParser( (Asn1SequenceParser)this.contentInfo.GetContent(Asn1Tags.Sequence)); // TODO Validate version? // DerInteger version = this.envelopedData.Version; // // load the RecipientInfoStore // Asn1SetParser s = this.envelopedData.GetRecipientInfos(); IList baseInfos = new ArrayList(); IAsn1Convertible entry; while ((entry = s.ReadObject()) != null) { baseInfos.Add(RecipientInfo.GetInstance(entry.ToAsn1Object())); } // // read the encrypted content info // EncryptedContentInfoParser encInfo = this.envelopedData.GetEncryptedContentInfo(); this._encAlg = encInfo.ContentEncryptionAlgorithm; // // prime the recipients // IList infos = new ArrayList(); Stream dataStream = ((Asn1OctetStringParser)encInfo.GetEncryptedContent(Asn1Tags.OctetString)).GetOctetStream(); foreach (Asn1.Cms.RecipientInfo info in baseInfos) { Asn1Encodable recipInfo = info.Info; if (recipInfo is Asn1.Cms.KeyTransRecipientInfo) { infos.Add(new KeyTransRecipientInformation( (KeyTransRecipientInfo)recipInfo, _encAlg, dataStream)); } else if (recipInfo is Asn1.Cms.KekRecipientInfo) { infos.Add(new KekRecipientInformation( (KekRecipientInfo)recipInfo, _encAlg, dataStream)); } else if (recipInfo is KeyAgreeRecipientInfo) { infos.Add(new KeyAgreeRecipientInformation( (KeyAgreeRecipientInfo)recipInfo, _encAlg, dataStream)); } else if (recipInfo is PasswordRecipientInfo) { infos.Add(new PasswordRecipientInformation( (PasswordRecipientInfo)recipInfo, _encAlg, dataStream)); } } this.recipientInfoStore = new RecipientInformationStore(infos); }
/** * base constructor * * @param signedContent the content that was signed. * @param sigData the signature object. */ public CmsSignedDataParser( CmsTypedStream signedContent, Stream sigData) : base(sigData) { try { this._signedContent = signedContent; this._signedData = SignedDataParser.GetInstance(this.contentInfo.GetContent(Asn1Tags.Sequence)); this._digests = new Hashtable(); Asn1SetParser digAlgs = _signedData.GetDigestAlgorithms(); IAsn1Convertible o; while ((o = digAlgs.ReadObject()) != null) { AlgorithmIdentifier id = AlgorithmIdentifier.GetInstance(o.ToAsn1Object()); try { string digestName = Helper.GetDigestAlgName(id.ObjectID.Id); IDigest dig = DigestUtilities.GetDigest(digestName); this._digests[digestName] = dig; } catch (SecurityUtilityException) { // ignore } } if (_signedContent == null) { // // If the message is simply a certificate chain message GetContent() may return null. // Asn1OctetStringParser octs = (Asn1OctetStringParser) _signedData.GetEncapContentInfo().GetContent(Asn1Tags.OctetString); if (octs != null) { this._signedContent = new CmsTypedStream(octs.GetOctetStream()); } } else { // // content passed in, need to read past empty encapsulated content info object if present // Asn1OctetStringParser octs = (Asn1OctetStringParser) _signedData.GetEncapContentInfo().GetContent(Asn1Tags.OctetString); if (octs != null) { Stream inStream = octs.GetOctetStream(); while (inStream.ReadByte() >= 0) { // ignore } } } } catch (IOException e) { throw new CmsException("io exception: " + e.Message, e); } if (_digests.Count < 1) { throw new CmsException("no digests could be created for message."); } }