123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cms
- {
- /**
- * Produce an object suitable for an Asn1OutputStream.
- * <pre>
- * AuthenticatedData ::= SEQUENCE {
- * version CMSVersion,
- * originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
- * recipientInfos RecipientInfos,
- * macAlgorithm MessageAuthenticationCodeAlgorithm,
- * digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
- * encapContentInfo EncapsulatedContentInfo,
- * authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
- * mac MessageAuthenticationCode,
- * unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
- *
- * AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
- *
- * UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
- *
- * MessageAuthenticationCode ::= OCTET STRING
- * </pre>
- */
- public class AuthenticatedDataParser
- {
- private Asn1SequenceParser seq;
- private DerInteger version;
- private IAsn1Convertible nextObject;
- private bool originatorInfoCalled;
- public AuthenticatedDataParser(
- Asn1SequenceParser seq)
- {
- this.seq = seq;
- this.version = (DerInteger)seq.ReadObject();
- }
- public DerInteger Version
- {
- get { return version; }
- }
- public OriginatorInfo GetOriginatorInfo()
- {
- originatorInfoCalled = true;
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- if (nextObject is Asn1TaggedObjectParser && ((Asn1TaggedObjectParser)nextObject).TagNo == 0)
- {
- Asn1SequenceParser originatorInfo = (Asn1SequenceParser) ((Asn1TaggedObjectParser)nextObject).GetObjectParser(Asn1Tags.Sequence, false);
- nextObject = null;
- return OriginatorInfo.GetInstance(originatorInfo.ToAsn1Object());
- }
- return null;
- }
- public Asn1SetParser GetRecipientInfos()
- {
- if (!originatorInfoCalled)
- {
- GetOriginatorInfo();
- }
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- Asn1SetParser recipientInfos = (Asn1SetParser)nextObject;
- nextObject = null;
- return recipientInfos;
- }
- public AlgorithmIdentifier GetMacAlgorithm()
- {
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- if (nextObject != null)
- {
- Asn1SequenceParser o = (Asn1SequenceParser)nextObject;
- nextObject = null;
- return AlgorithmIdentifier.GetInstance(o.ToAsn1Object());
- }
- return null;
- }
- public AlgorithmIdentifier GetDigestAlgorithm()
- {
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- if (nextObject is Asn1TaggedObjectParser)
- {
- AlgorithmIdentifier obj = AlgorithmIdentifier.GetInstance(
- (Asn1TaggedObject)nextObject.ToAsn1Object(), false);
- nextObject = null;
- return obj;
- }
- return null;
- }
- public ContentInfoParser GetEnapsulatedContentInfo()
- {
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- if (nextObject != null)
- {
- Asn1SequenceParser o = (Asn1SequenceParser)nextObject;
- nextObject = null;
- return new ContentInfoParser(o);
- }
- return null;
- }
- public Asn1SetParser GetAuthAttrs()
- {
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- if (nextObject is Asn1TaggedObjectParser)
- {
- IAsn1Convertible o = nextObject;
- nextObject = null;
- return (Asn1SetParser)((Asn1TaggedObjectParser)o).GetObjectParser(Asn1Tags.Set, false);
- }
- return null;
- }
- public Asn1OctetString GetMac()
- {
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- IAsn1Convertible o = nextObject;
- nextObject = null;
- return Asn1OctetString.GetInstance(o.ToAsn1Object());
- }
- public Asn1SetParser GetUnauthAttrs()
- {
- if (nextObject == null)
- {
- nextObject = seq.ReadObject();
- }
- if (nextObject != null)
- {
- IAsn1Convertible o = nextObject;
- nextObject = null;
- return (Asn1SetParser)((Asn1TaggedObjectParser)o).GetObjectParser(Asn1Tags.Set, false);
- }
- return null;
- }
- }
- }
- #pragma warning restore
- #endif
|