/**
         * 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);
        }
Esempio n. 2
0
 public CompressedDataParser(
     Asn1SequenceParser seq)
 {
     this._version = (DerInteger)seq.ReadObject();
     this._compressionAlgorithm = AlgorithmIdentifier.GetInstance(seq.ReadObject().ToAsn1Object());
     this._encapContentInfo     = new ContentInfoParser((Asn1SequenceParser)seq.ReadObject());
 }
        private TimeStampedDataParser(Asn1SequenceParser parser)
        {
            this.parser = parser;
            this.version = DerInteger.GetInstance(parser.ReadObject());

            Asn1Object obj = parser.ReadObject().ToAsn1Object();

            if (obj is DerIA5String)
            {
                this.dataUri = DerIA5String.GetInstance(obj);
                obj = parser.ReadObject().ToAsn1Object();
            }

            if (//obj is MetaData ||
                obj is Asn1SequenceParser)
            {
                this.metaData = MetaData.GetInstance(obj.ToAsn1Object());
                obj = parser.ReadObject().ToAsn1Object();
            }

            if (obj is Asn1OctetStringParser)
            {
                this.content = (Asn1OctetStringParser)obj;
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Parse private key to raw data
 /// </summary>
 public static byte[] ParsePublicKey(string publicKey)
 {
     try {
         var parser = new Asn1StreamParser(Hex.Decode(publicKey));
         Asn1SequenceParser sequence = parser.ReadObject() as Asn1SequenceParser;
         if (sequence != null)
         {
             var o1  = sequence.ReadObject();
             var oid = sequence.ReadObject() as DerObjectIdentifier;
             if (oid.Id == "1.2.840.10045.2.1")
             {
                 oid = sequence.ReadObject() as DerObjectIdentifier;
                 if (oid.Id == "1.2.840.10045.3.1.7" || oid.Id == "1.3.132.0.10")
                 {
                     var bits = sequence.ReadObject() as DerBitString;
                     return(bits.GetBytes());
                 }
             }
             return(null);
         }
         else
         {
             return(null);
         }
     } catch {
         return(null);
     }
 }
Esempio n. 5
0
        private TimeStampedDataParser(Asn1SequenceParser parser)
        {
            this.parser  = parser;
            this.version = DerInteger.GetInstance(parser.ReadObject());

            Asn1Object obj = parser.ReadObject().ToAsn1Object();

            if (obj is DerIA5String)
            {
                this.dataUri = DerIA5String.GetInstance(obj);
                obj          = parser.ReadObject().ToAsn1Object();
            }

            if (//obj is MetaData ||
                obj is Asn1SequenceParser)
            {
                this.metaData = MetaData.GetInstance(obj.ToAsn1Object());
                obj           = parser.ReadObject().ToAsn1Object();
            }

            if (obj is Asn1OctetStringParser)
            {
                this.content = (Asn1OctetStringParser)obj;
            }
        }
 public EncryptedContentInfoParser(
     Asn1SequenceParser seq)
 {
     _contentType = (DerObjectIdentifier)seq.ReadObject();
     _contentEncryptionAlgorithm = AlgorithmIdentifier.GetInstance(seq.ReadObject().ToAsn1Object());
     _encryptedContent           = (Asn1TaggedObjectParser)seq.ReadObject();
 }
Esempio n. 7
0
        private void doTestParseWithNull(
            byte[] data)
        {
            Asn1StreamParser   aIn = new Asn1StreamParser(data);
            Asn1SequenceParser seq = (Asn1SequenceParser)aIn.ReadObject();
            object             o;
            int count = 0;

            Assert.IsNotNull(seq, "null sequence returned");

            while ((o = seq.ReadObject()) != null)
            {
                switch (count)
                {
                case 0:
                    Assert.IsTrue(o is Asn1Null);
                    break;

                case 1:
                    Assert.IsTrue(o is DerInteger);
                    break;

                case 2:
                    Assert.IsTrue(o is DerObjectIdentifier);
                    break;
                }
                count++;
            }

            Assert.AreEqual(3, count, "wrong number of objects in sequence");
        }
		public CompressedDataParser(
			Asn1SequenceParser seq)
		{
			this._version = (DerInteger)seq.ReadObject();
			this._compressionAlgorithm = AlgorithmIdentifier.GetInstance(seq.ReadObject().ToAsn1Object());
			this._encapContentInfo = new ContentInfoParser((Asn1SequenceParser)seq.ReadObject());
		}
		public EncryptedContentInfoParser(
			Asn1SequenceParser seq)
		{
			_contentType = (DerObjectIdentifier)seq.ReadObject();
			_contentEncryptionAlgorithm = AlgorithmIdentifier.GetInstance(seq.ReadObject().ToAsn1Object());
			_encryptedContent = (Asn1TaggedObjectParser)seq.ReadObject();
		}
Esempio n. 10
0
        public void TestBerReading()
        {
            Asn1StreamParser aIn = new Asn1StreamParser(berSeqData);

            Asn1SequenceParser seq = (Asn1SequenceParser)aIn.ReadObject();
            object             o   = null;
            int count = 0;

            Assert.IsNotNull(seq, "null sequence returned");

            while ((o = seq.ReadObject()) != null)
            {
                switch (count)
                {
                case 0:
                    Assert.IsTrue(o is DerInteger);
                    break;

                case 1:
                    Assert.IsTrue(o is DerObjectIdentifier);
                    break;
                }
                count++;
            }

            Assert.AreEqual(2, count, "wrong number of objects in sequence");
        }
Esempio n. 11
0
        /**
         * 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 AuthEnvelopedDataParser(
			Asn1SequenceParser	seq)
		{
			this.seq = seq;

			// TODO
			// "It MUST be set to 0."
			this.version = (DerInteger)seq.ReadObject();
		}
Esempio n. 13
0
        public AuthEnvelopedDataParser(
            Asn1SequenceParser seq)
        {
            this.seq = seq;

            // TODO
            // "It MUST be set to 0."
            this.version = (DerInteger)seq.ReadObject();
        }
        public AuthEnvelopedDataParser(
            Asn1SequenceParser seq)
        {
            this.seq = seq;

            // "It MUST be set to 0."
            this.version = (DerInteger)seq.ReadObject();
            if (!version.HasValue(0))
            {
                throw new Asn1ParsingException("AuthEnvelopedData version number must be 0");
            }
        }
Esempio n. 15
0
 public EncryptedContentInfoParser GetAuthEncryptedContentInfo()
 {
     if (nextObject == null)
     {
         nextObject = seq.ReadObject();
     }
     if (nextObject != null)
     {
         Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)nextObject;
         nextObject = null;
         return(new EncryptedContentInfoParser(asn1SequenceParser));
     }
     return(null);
 }
Esempio n. 16
0
 public EncryptedContentInfoParser GetEncryptedContentInfo()
 {
     if (this._nextObject == null)
     {
         this._nextObject = this._seq.ReadObject();
     }
     if (this._nextObject != null)
     {
         Asn1SequenceParser seq = (Asn1SequenceParser)this._nextObject;
         this._nextObject = null;
         return(new EncryptedContentInfoParser(seq));
     }
     return(null);
 }
Esempio n. 17
0
 public AlgorithmIdentifier GetMacAlgorithm()
 {
     if (nextObject == null)
     {
         nextObject = seq.ReadObject();
     }
     if (nextObject != null)
     {
         Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)nextObject;
         nextObject = null;
         return(AlgorithmIdentifier.GetInstance(asn1SequenceParser.ToAsn1Object()));
     }
     return(null);
 }
Esempio n. 18
0
 public ContentInfoParser GetEnapsulatedContentInfo()
 {
     if (nextObject == null)
     {
         nextObject = seq.ReadObject();
     }
     if (nextObject != null)
     {
         Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)nextObject;
         nextObject = null;
         return(new ContentInfoParser(asn1SequenceParser));
     }
     return(null);
 }
Esempio n. 19
0
 public OriginatorInfo GetOriginatorInfo()
 {
     this.originatorInfoCalled = true;
     if (this.nextObject == null)
     {
         this.nextObject = this.seq.ReadObject();
     }
     if (this.nextObject is Asn1TaggedObjectParser && ((Asn1TaggedObjectParser)this.nextObject).TagNo == 0)
     {
         Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)((Asn1TaggedObjectParser)this.nextObject).GetObjectParser(16, false);
         this.nextObject = null;
         return(OriginatorInfo.GetInstance(asn1SequenceParser.ToAsn1Object()));
     }
     return(null);
 }
Esempio n. 20
0
 public OriginatorInfo GetOriginatorInfo()
 {
     originatorInfoCalled = true;
     if (nextObject == null)
     {
         nextObject = seq.ReadObject();
     }
     if (nextObject is Asn1TaggedObjectParser && ((Asn1TaggedObjectParser)nextObject).TagNo == 0)
     {
         Asn1SequenceParser asn1SequenceParser = (Asn1SequenceParser)((Asn1TaggedObjectParser)nextObject).GetObjectParser(16, isExplicit: false);
         nextObject = null;
         return(OriginatorInfo.GetInstance(asn1SequenceParser.ToAsn1Object()));
     }
     return(null);
 }
        public EncryptedContentInfoParser GetEncryptedContentInfo()
        {
            if (_nextObject == null)
            {
                _nextObject = _seq.ReadObject();
            }

            if (_nextObject != null)
            {
                Asn1SequenceParser o = (Asn1SequenceParser)_nextObject;
                _nextObject = null;
                return(new EncryptedContentInfoParser(o));
            }

            return(null);
        }
        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 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);
 }
Esempio n. 25
0
        private void doTestNestedReading(
            byte[] data)
        {
            Asn1StreamParser aIn = new Asn1StreamParser(data);

            Asn1SequenceParser seq = (Asn1SequenceParser)aIn.ReadObject();
            object             o   = null;
            int count = 0;

            Assert.IsNotNull(seq, "null sequence returned");

            while ((o = seq.ReadObject()) != null)
            {
                switch (count)
                {
                case 0:
                    Assert.IsTrue(o is DerInteger);
                    break;

                case 1:
                    Assert.IsTrue(o is DerObjectIdentifier);
                    break;

                case 2:
                    Assert.IsTrue(o is Asn1SequenceParser);

                    Asn1SequenceParser s = (Asn1SequenceParser)o;

                    // NB: Must exhaust the nested parser
                    while (s.ReadObject() != null)
                    {
                        // Ignore
                    }

                    break;
                }
                count++;
            }

            Assert.AreEqual(3, count, "wrong number of objects in sequence");
        }
Esempio n. 26
0
    private TimeStampedDataParser(Asn1SequenceParser parser)
    {
        this.parser = parser;
        version     = DerInteger.GetInstance(parser.ReadObject());
        Asn1Object asn1Object = parser.ReadObject().ToAsn1Object();

        if (asn1Object is DerIA5String)
        {
            dataUri    = DerIA5String.GetInstance(asn1Object);
            asn1Object = parser.ReadObject().ToAsn1Object();
        }
        if (asn1Object is Asn1SequenceParser)
        {
            metaData   = MetaData.GetInstance(asn1Object.ToAsn1Object());
            asn1Object = parser.ReadObject().ToAsn1Object();
        }
        if (asn1Object is Asn1OctetStringParser)
        {
            content = (Asn1OctetStringParser)asn1Object;
        }
    }
 public ContentInfoParser(
     Asn1SequenceParser seq)
 {
     contentType = (DerObjectIdentifier)seq.ReadObject();
     content = (Asn1TaggedObjectParser)seq.ReadObject();
 }
Esempio n. 28
0
	    public AuthenticatedDataParser(
	        Asn1SequenceParser	seq)
	    {
	        this.seq = seq;
	        this.version = (DerInteger)seq.ReadObject();
	    }
 public SignedDataParser(Asn1SequenceParser seq)
 {
     _seq     = seq;
     _version = (DerInteger)seq.ReadObject();
 }
Esempio n. 30
0
		public SignedDataParser(
			Asn1SequenceParser seq)
		{
			this._seq = seq;
			this._version = (DerInteger)seq.ReadObject();
		}
Esempio n. 31
0
 public AuthenticatedDataParser(Asn1SequenceParser seq)
 {
     this.seq = seq;
     version  = (DerInteger)seq.ReadObject();
 }
Esempio n. 32
0
 public ContentInfoParser(
     Asn1SequenceParser seq)
 {
     contentType = (DerObjectIdentifier)seq.ReadObject();
     content     = (Asn1TaggedObjectParser)seq.ReadObject();
 }
 public EnvelopedDataParser(
     Asn1SequenceParser seq)
 {
     this._seq     = seq;
     this._version = (DerInteger)seq.ReadObject();
 }