示例#1
0
        public string FormatValue()
        {
            if (Type == DERTagType.Universal)
            {
                UniversalTag tag = (UniversalTag)Tag;
                switch (tag)
                {
                case UniversalTag.GeneralString:
                    return(ReadGeneralString());

                case UniversalTag.OBJECT_IDENTIFIER:
                    return(ReadObjID());

                case UniversalTag.INTEGER:
                case UniversalTag.ENUMERATED:
                    return(FormatInteger());

                case UniversalTag.OCTET_STRING:
                    return(BitConverter.ToString(Data));

                case UniversalTag.BIT_STRING:
                    return(string.Join(",", ReadBitString().Cast <bool>().Select(b => b ? 1 : 0)));

                case UniversalTag.UTF8String:
                case UniversalTag.IA5String:
                    return(ReadString(tag));

                case UniversalTag.GeneralizedTime:
                    return(ReadGeneralizedTime());
                }
            }
            return($"Len: {Data.Length:X}");
        }
示例#2
0
 public string FormatValue()
 {
     if (Type == DERTagType.Universal)
     {
         UniversalTag tag = (UniversalTag)Tag;
         if (tag == UniversalTag.GeneralString)
         {
             return(ReadGeneralString());
         }
         if (tag == UniversalTag.OBJECT_IDENTIFIER)
         {
             return(ReadObjID());
         }
         if (tag == UniversalTag.INTEGER || tag == UniversalTag.ENUMERATED)
         {
             return(FormatInteger());
         }
         if (tag == UniversalTag.OCTET_STRING)
         {
             return(BitConverter.ToString(Data));
         }
         if (tag == UniversalTag.BIT_STRING)
         {
             return(string.Join(",", ReadBitString().Cast <bool>().Select(b => b ? 1 : 0)));
         }
     }
     return($"Len: {Data.Length:X}");
 }
示例#3
0
        public string ReadString(UniversalTag tag_type)
        {
            if (!CheckPrimitive(tag_type))
            {
                throw new InvalidDataException();
            }
            switch (tag_type)
            {
            case UniversalTag.GeneralString:
                return(Encoding.ASCII.GetString(Data));

            case UniversalTag.IA5String:
                return(Encoding.ASCII.GetString(Data));

            case UniversalTag.UTF8String:
                return(Encoding.UTF8.GetString(Data));

            case UniversalTag.GeneralizedTime:
                return(Encoding.ASCII.GetString(Data));

            default:
                throw new InvalidDataException();
            }
        }
示例#4
0
 public bool CheckPrimitive(UniversalTag tag)
 {
     return(Check(false, DERTagType.Universal, (int)tag));
 }
        public static void WriteUniversalValue(this BinaryWriter writer, bool constructed, UniversalTag tag, Action <BinaryWriter> data_builder)
        {
            MemoryStream stm = new MemoryStream();

            data_builder(new BinaryWriter(stm));

            WriteTaggedValue(writer, DERTagType.Universal, constructed, (int)tag, stm.ToArray());
        }
 public static void WriteUniversalValue(this BinaryWriter writer, bool constructed, UniversalTag tag, byte[] data)
 {
     WriteTaggedValue(writer, DERTagType.Universal, constructed, (int)tag, data);
 }
示例#7
0
 public ASN1PropertyAttribute(UniversalTag tag) : this(0, (int)tag)
 {
 }