Demo.RSACryptoServiceProviderExtension.CryptStringToBinary C# (CSharp) Method

CryptStringToBinary() private method

private CryptStringToBinary ( string sPEM, UInt32 sPEMLength, CRYPT_STRING_FLAGS dwFlags, [ pbBinary, UInt32 &pcbBinary, UInt32 &pdwSkip, UInt32 &pdwFlags ) : bool
sPEM string
sPEMLength System.UInt32
dwFlags CRYPT_STRING_FLAGS
pbBinary [
pcbBinary System.UInt32
pdwSkip System.UInt32
pdwFlags System.UInt32
return bool
        internal static extern bool CryptStringToBinary(string sPEM, UInt32 sPEMLength, CRYPT_STRING_FLAGS dwFlags, [Out] byte[] pbBinary, ref UInt32 pcbBinary, out UInt32 pdwSkip, out UInt32 pdwFlags);

Usage Example

        /// <summary>Extracts the binary data from a PEM file.</summary>
        internal static byte[] GetDERFromPEM(string sPEM)
        {
            UInt32 dwSkip, dwFlags;
            UInt32 dwBinarySize = 0;

            if (!RSACryptoServiceProviderExtension.CryptStringToBinary(sPEM, (UInt32)sPEM.Length, CRYPT_STRING_FLAGS.CRYPT_STRING_BASE64HEADER, null, ref dwBinarySize, out dwSkip, out dwFlags))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }

            byte[] decodedData = new byte[dwBinarySize];
            if (!RSACryptoServiceProviderExtension.CryptStringToBinary(sPEM, (UInt32)sPEM.Length, CRYPT_STRING_FLAGS.CRYPT_STRING_BASE64HEADER, decodedData, ref dwBinarySize, out dwSkip, out dwFlags))
            {
                throw new Win32Exception(Marshal.GetLastWin32Error());
            }
            return(decodedData);
        }