コード例 #1
0
        public PublicKey(byte[] certData)
        {
            HSMPublicKey = certData;
            //HSMPublicKey = new byte[certData.Length - 2];
            //Array.Copy(certData, 2, HSMPublicKey, 0, certData.Length-2);
            //public certificate
            Asn1.Asn1Reader reader = new Asn1.Asn1Reader(certData);
            reader.MoveNext();
            byte[] FirstDataSeq = reader.GetPayload();

            string FirstDataSeqHex = HexByteUtils.ByteArrayToHex(FirstDataSeq);

            keyBytesData  = FirstDataSeq;
            keyStringData = FirstDataSeqHex;

            //public modulus
            reader.MoveNext();
            byte[] SecondDataSeq    = reader.GetTagRawData();
            string SecondDataSeqHex = HexByteUtils.ByteArrayToHex(SecondDataSeq);

            byte[] modulus = new byte[3];
            Array.Copy(SecondDataSeq, 2, modulus, 0, 3);


            //create modulus object
            mod = new Modulus(modulus);
        }
コード例 #2
0
        public static String GetViewValue(Asn1Reader asn)
        {
            if (asn.PayloadLength == 0 && asn.Tag != (Byte)Asn1Type.NULL)
            {
                return("NULL");
            }
            switch (asn.Tag)
            {
            case (Byte)Asn1Type.BOOLEAN: return(DecodeBoolean(asn));

            case (Byte)Asn1Type.INTEGER: return(DecodeInteger(asn));

            case (Byte)Asn1Type.BIT_STRING: return(DecodeBitString(asn));

            case (Byte)Asn1Type.OCTET_STRING: return(DecodeOctetString(asn));

            case (Byte)Asn1Type.NULL: return(null);

            case (Byte)Asn1Type.OBJECT_IDENTIFIER: return(DecodeObjectIdentifier(asn));

            case (Byte)Asn1Type.UTF8String: return(DecodeUTF8String(asn.GetTagRawData()));

            case (Byte)Asn1Type.NumericString:
            case (Byte)Asn1Type.PrintableString:
            case (Byte)Asn1Type.TeletexString:
            case (Byte)Asn1Type.VideotexString:
            case (Byte)Asn1Type.IA5String:
                return(DecodeAsciiString(asn));

            case (Byte)Asn1Type.UTCTime:
                return(DecodeUtcTime(asn));

            case (Byte)Asn1Type.BMPString: return(DecodeBMPString(asn));

            case (Byte)Asn1Type.Generalizedtime:
                return(DecodeGeneralizedTime(asn));

            default:
                return((asn.Tag & (Byte)Asn1Type.TAG_MASK) == 6
                                                ? DecodeUTF8String(asn)
                                                : DecodeOctetString(asn));
            }
        }
コード例 #3
0
 /// <summary>
 /// Initializes a new instance of the <strong>ASN1</strong> class from an existing
 /// <strong>ASN1</strong> object.
 /// </summary>
 /// <param name="asn">An existing <strong>ASN1</strong> object.</param>
 /// <remarks>
 ///		This constructor creates a copy of a current position of an exisiting <strong>ASN1</strong> object.
 /// </remarks>
 public Asn1Reader(Asn1Reader asn) : this(asn.GetTagRawData())
 {
 }