Example #1
0
        void encode()
        {
            List <Byte> rawData = new List <Byte>(IssuerName.RawData);

            rawData.AddRange(Asn1Utils.Encode(AsnFormatter.StringToBinary(SerialNumber, EncodingType.HexRaw), 4));
            RawData = rawData.ToArray();
        }
        void encode()
        {
            var rawData = new List <Byte>(IssuerName.RawData);

            rawData.AddRange(Asn1Utils.Encode(AsnFormatter.StringToBinary(SerialNumber, EncodingType.HexRaw), (Byte)Asn1Type.INTEGER));
            _rawData.AddRange(Asn1Utils.Encode(rawData.ToArray(), 48));
        }
Example #3
0
        static IntPtr get_thumbptr(String thumbprint)
        {
            Byte[] thBytes  = AsnFormatter.StringToBinary(thumbprint, EncodingType.HexAny);
            IntPtr thumbPtr = Marshal.AllocHGlobal(thBytes.Length);

            Marshal.Copy(thBytes, 0, thumbPtr, thBytes.Length);
            return(thumbPtr);
        }
        void initializeFromKeyId(String keyId, Boolean critical)
        {
            Oid                = _oid;
            Critical           = critical;
            IncludedComponents = AuthorityKeyIdentifierFlags.KeyIdentifier;

            Byte[] keyIdBytes = AsnFormatter.StringToBinary(keyId);
            KeyIdentifier = AsnFormatter.BinaryToString(keyIdBytes, EncodingType.HexRaw, EncodingFormat.NOCRLF);
            RawData       = Asn1Utils.Encode(AsnFormatter.StringToBinary(keyId, EncodingType.Hex), 0x80);
            RawData       = Asn1Utils.Encode(RawData, 48);
        }
 void generateSerialNumber()
 {
     if (String.IsNullOrWhiteSpace(SerialNumber))
     {
         using (MD5 hasher = MD5.Create()) {
             serialNumber = hasher.ComputeHash(Guid.NewGuid().ToByteArray());
         }
     }
     else
     {
         serialNumber = AsnFormatter.StringToBinary(SerialNumber, EncodingType.Hex);
     }
 }
        /// <summary>
        /// Encodes current instance of CTL entry to ASN.1-encoded byte array.
        /// </summary>
        /// <returns>
        /// ASN.1-encoded byte array.
        /// </returns>
        public Byte[] Encode()
        {
            Byte[] thumbBytes = AsnFormatter.StringToBinary(Thumbprint, EncodingType.HexRaw);
            var    retValue   = new List <Byte>(Asn1Utils.Encode(thumbBytes, (Byte)Asn1Type.OCTET_STRING));

            if (_attributes.Count == 0)
            {
                return(Asn1Utils.Encode(retValue.ToArray(), 48));
            }
            var asn = new Asn1Reader(Attributes.Encode());

            retValue.AddRange(Asn1Utils.Encode(asn.GetPayload(), 49));
            return(Asn1Utils.Encode(retValue.ToArray(), 48));
        }
Example #7
0
 /// <summary>
 /// Converts input string to a byte array. See <strong>Remarks</strong> for more details.
 /// </summary>
 /// <param name="anyString">
 ///     A string encoded in Base64, hex or binary text.
 /// </param>
 /// <exception cref="Win32Exception">If the input string cannot be recognized and/or decoded.</exception>
 /// <exception cref="ArgumentNullException">Input string is null or empty.</exception>
 /// <returns>Decoded bytes</returns>
 /// <remarks>
 ///     This method is used to decode cryptographic messages formatted in various ways, such Base64 with or
 ///     without headers, hex string, with or without address and ASCII panels or pure binary text.
 ///     <para>This method attempts to decode string in the following order:</para>
 ///     <list type="bullet">
 ///         <item>CRYPT_STRING_HEXADDR</item>
 ///         <item>CRYPT_STRING_HEXASCIIADDR</item>
 ///         <item>CRYPT_STRING_HEX</item>
 ///         <item>CRYPT_STRING_HEXRAW</item>
 ///         <item>CRYPT_STRING_HEXASCII</item>
 ///         <item>CRYPT_STRING_BASE64HEADER</item>
 ///         <item>CRYPT_STRING_BASE64</item>
 ///         <item>CRYPT_STRING_BINARY</item>
 ///     </list>
 /// </remarks>
 public static Byte[] AnyToBinary(String anyString)
 {
     if (String.IsNullOrEmpty(anyString))
     {
         throw new ArgumentNullException(nameof(anyString));
     }
     try {
         return(AsnFormatter.StringToBinary(anyString, EncodingType.HexAny));
     } catch {
         try {
             return(AsnFormatter.StringToBinary(anyString, EncodingType.Base64Any));
         } catch {
             return(AsnFormatter.StringToBinary(anyString, EncodingType.Binary));
         }
     }
 }
Example #8
0
 public static IEnumerable <Byte> AnyToBinary(String anyString)
 {
     try {
         return(AsnFormatter.StringToBinary(anyString, EncodingType.HexAny));
     } catch {
         try {
             return(AsnFormatter.StringToBinary(anyString, EncodingType.StringAny));
         } catch {
             try {
                 return(AsnFormatter.StringToBinary(anyString, EncodingType.Binary));
             } catch {
                 Tools.MsgBox("Error", "The data is invalid");
                 return(null);
             }
         }
     }
 }
Example #9
0
        /// <summary>
        /// Encodes current object to an ASN.1 format.
        /// </summary>
        /// <returns>ASN.1-encoded byte array that represents current object.</returns>
        public Byte[] Encode()
        {
            var retValue = new List <Byte>();

            switch (Type)
            {
            case SubjectIdentifierType.IssuerAndSerialNumber:
                retValue.AddRange(((X509IssuerSerial)Value).RawData);
                break;

            case SubjectIdentifierType.SubjectKeyIdentifier:
                retValue.AddRange(Asn1Utils.Encode(AsnFormatter.StringToBinary(Value.ToString(), EncodingType.HexRaw), 0x80));
                break;

            default:
                throw new ArgumentException("Invalid CMS issuer identifier type.");
            }
            return(retValue.ToArray());
        }
Example #10
0
        /// <summary>
        /// Encodes revocation entry to a ASN.1-encoded byte array.
        /// </summary>
        /// <returns>ASN.1-encoded byte array</returns>
        public Byte[] Encode()
        {
            if (String.IsNullOrEmpty(SerialNumber))
            {
                throw new UninitializedObjectException();
            }
            List <Byte> rawData = new List <Byte>(AsnFormatter.StringToBinary(SerialNumber, EncodingType.HexAny));

            rawData = new List <Byte>(Asn1Utils.Encode(rawData.ToArray(), (Byte)Asn1Type.INTEGER));
            rawData.AddRange(Asn1Utils.EncodeDateTime(RevocationDate));
            if (ReasonCode != 0)
            {
                Byte[] reasonEnum                     = new Byte[] { 10, 1, (Byte)ReasonCode };
                X509ExtensionCollection exts          = new X509ExtensionCollection();
                X509Extension           CRlReasonCode = new X509Extension("2.5.29.21", reasonEnum, false);
                exts.Add(CRlReasonCode);
                rawData.AddRange(Crypt32Managed.EncodeX509Extensions(exts));
            }
            return(Asn1Utils.Encode(rawData.ToArray(), 48));
        }
Example #11
0
 /// <summary>
 /// Encodes current object to a DER-encoded byte array. Returned array is used to construct initial OCSP Request structure.
 /// </summary>
 /// <returns>Returns a DER-encoded byte array.</returns>
 /// <value>System.Byte[]</value>
 public Byte[] Encode()
 {
     if (!String.IsNullOrEmpty(SerialNumber))
     {
         if (issuerPublicKey != null)
         {
             initializeFromCertAndIssuer();
         }
         // algorithm identifier
         var rawData = new List <Byte>(Asn1Utils.EncodeObjectIdentifier(hashAlgorithm));
         rawData.AddRange(Asn1Utils.EncodeNull());
         rawData = new List <Byte>(Asn1Utils.Encode(rawData.ToArray(), 48));
         // IssuerNameId
         rawData.AddRange(Asn1Utils.Encode(AsnFormatter.StringToBinary(IssuerNameId, EncodingType.HexRaw), 4));
         // IssuerKeyId
         rawData.AddRange(Asn1Utils.Encode(AsnFormatter.StringToBinary(IssuerKeyId, EncodingType.HexRaw), 4));
         // SerialNumber
         rawData.AddRange(Asn1Utils.Encode(serialNumber, 2));
         IsReadOnly = true;
         return(Asn1Utils.Encode(rawData.ToArray(), 48));
     }
     throw new UninitializedObjectException();
 }
Example #12
0
 public static Byte[] EncodeHex(Byte tag, String hexString, Byte unusedBits)
 {
     Byte[] hexBytes = AsnFormatter.StringToBinary(hexString, EncodingType.Hex);
     return(Asn1Utils.Encode(hexBytes, tag));
 }
Example #13
0
 public static Byte[] HexToBinary(String hexString)
 {
     return(AsnFormatter.StringToBinary(hexString, EncodingType.Hex));
 }