Пример #1
0
 // helpers
 private void WriteIdentifier(ASN1Class asn1Class, bool constructed, ASN1UniversalTag tag)
 {
     WriteIdentifier(asn1Class, constructed, (byte)tag);
 }
Пример #2
0
        private ASN1Object ReadUniversal(bool constructed, ASN1UniversalTag tag)
        {
            if (tag == ASN1UniversalTag.LongForm)
            {
                throw new NotImplementedException();
            }

            var length = ReadLength();

            // ignoring:
            // * 8.5 Encoding of a real value

            if (!constructed)
            {
                switch (tag)
                {
                case ASN1UniversalTag.Boolean:
                    return(ReadBoolean(length));

                case ASN1UniversalTag.Integer:
                case ASN1UniversalTag.Enumerated:
                    return(ReadInteger(length));

                case ASN1UniversalTag.BitString:
                    return(ReadPrimitiveBitString(length));

                case ASN1UniversalTag.OctetString:
                    return(ReadPrimitiveOctetString(length));

                case ASN1UniversalTag.Null:
                    return(new ASN1Null());

                case ASN1UniversalTag.ObjectIdentifier:
                    return(ReadObjectIdentifier(length));

                case ASN1UniversalTag.PrintableString:
                    return(ReadPrintableString(length));

                case ASN1UniversalTag.UTF8String:
                    return(ReadUTF8String(length));

                case ASN1UniversalTag.UTCTime:
                    return(ReadUTCTime(length));
                }
            }
            else
            {
                switch (tag)
                {
                case ASN1UniversalTag.Sequence:
                    return(ReadSequence(length));

                case ASN1UniversalTag.Set:
                    return(ReadSet(length));

                case ASN1UniversalTag.UTCTime:
                    return(ReadUTCTime(length));
                }
            }

            throw new NotImplementedException();
        }
Пример #3
0
 // helpers
 private void WriteIdentifier(ASN1Class asn1Class, bool constructed, ASN1UniversalTag tag)
 {
     WriteIdentifier(asn1Class, constructed, (byte)tag);
 }
Пример #4
0
        private ASN1Object ReadUniversal(bool constructed, ASN1UniversalTag tag)
        {
            if (tag == ASN1UniversalTag.LongForm)
            {
                throw new NotImplementedException();
            }

            var length = ReadLength();

            // ignoring:
            // * 8.5 Encoding of a real value 
            
            if (!constructed)
            {
                switch (tag)
                {
                    case ASN1UniversalTag.Boolean:
                        return ReadBoolean(length);
                    case ASN1UniversalTag.Integer:
                    case ASN1UniversalTag.Enumerated:
                        return ReadInteger(length);
                    case ASN1UniversalTag.BitString:
                        return ReadPrimitiveBitString(length);
                    case ASN1UniversalTag.OctetString:
                        return ReadPrimitiveOctetString(length);
                    case ASN1UniversalTag.Null:
                        return new ASN1Null();
                    case ASN1UniversalTag.ObjectIdentifier:
                        return ReadObjectIdentifier(length);
                    case ASN1UniversalTag.UTF8String:
                        return ReadUTF8String(length);
                    case ASN1UniversalTag.UTCTime:
                        return ReadUTCTime(length);
                }
            }
            else
            {
                switch (tag)
                {
                    case ASN1UniversalTag.Sequence:
                        return ReadSequence(length);
                    case ASN1UniversalTag.Set:
                        return ReadSet(length);
                    case ASN1UniversalTag.UTCTime:
                        return ReadUTCTime(length);
                }
            }

            throw new NotImplementedException();
        }