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); }
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)); } }
/// <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()) { }