CertStrToName (crypt32)
Last changed: -46.120.41.29

.
Summary
The CertStrToName function converts a null-terminated X.500 string to an encoded certificate name.

C# Signature:

[DllImport("crypt32.dll", SetLastError=true)]
public static extern bool CertStrToName(
        uint dwCertEncodingType,
        string pszX500,
        uint dwStrType,
        IntPtr pvReserved,
        byte[] pbEncoded,
        ref uint pcbEncoded,
        StringBuilder ppszError);

VB Signature:

    <DllImport("crypt32.dll", SetLastError:=True)> _
    Public Shared Function CertStrToName(dwCertEncodingType As UInteger, pszX500 As String, dwStrType As UInteger, pvReserved As IntPtr, pbEncoded As Byte(), ByRef pcbEncoded As UInteger, ppszError As StringBuilder) As Boolean
    End Function

User-Defined Types:

None.

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

Please add some!

C# Sample Code:

public byte[] Encode(string data)
    {
        const Int32 X509_ASN_ENCODING = 0x00000001;
        const Int32 CERT_OID_NAME_STR = 0x00000002;
        const Int32 CERT_NAME_STR_REVERSE_FLAG = 0x02000000;

        uint  cbEncoded=0;
        IntPtr pbNameEncoded;
        byte[] bData;
        CertStrToNameW(X509_ASN_ENCODING, data, CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, IntPtr.Zero, null, ref cbEncoded, null);
        bData = new byte[cbEncoded];
        pbNameEncoded = Marshal.AllocCoTaskMem((int)cbEncoded);
        CertStrToNameW(X509_ASN_ENCODING, data, CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, IntPtr.Zero, bData, ref cbEncoded, null);

        TraceHelper.WriteTrace(Diagnostics.TraceCategory.Warning, "Data = "+data + ", bData as UTF8= "+Encoding.UTF8.GetString(bData) + ", bData as ASCII= "+Encoding.ASCII.GetString(bData)+", bData as Unicode= " + Encoding.Unicode.GetString(bData));

        return (bData);
    }

contributed by Tamir Lavi

Documentation