110,535
社区成员
发帖
与我相关
我的任务
分享
[DllImport(@"D:/vs2012Space/ICCarUpdateClient/ICCarUpdateClient/bin/Debug/decodecert.dll", EntryPoint = "PemToDer", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public extern static int PemToDer(char[] pem, int pem_len, ref string cert, ref int cert_len); //其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
//public extern static int PemToDer(ref char[] pem, int pem_len, ref string cert, ref int cert_len); //返回值12
// public extern static int PemToDer( string pem, int pem_len, ref string cert, ref int cert_len); //返回值12
调用:
string SignCertPEM1 = "MIIEVzCCA8CgAwIBAgICW7swDQYJKoZIhvcNAQEFBQAwNDELMAkGA1UEBhMCY24xJTAjBgNVBAMeHHU1W1BT41y4U8x7l2zVAEMAQVvGeAFnOm1Li9UwHhcNMTgwNzI2MDAwMDAwWhcNMTgwNzI2MDAwMDAwWjAmMRUwEwYDVQQDHgxs1VuaTuOIaE66ADQxDTALBgNVBBIeBAA0ADkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAIQvRbO9RF3cNNLngFBnzr+mjAZPFw1I6vUjfSJvaCM3fVPYQMchWmKZVzWsc6FsJojC69doKDZCig9oEajT";
string publicKeyDER = SignCertPEM1 ;// Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(SignCertPEM));
int publicKeyDERLen=5000;
//pem编码转der编码
char []pem = SignCertPEM.ToCharArray();
//string pem = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(SignCertPEM));
//pem = Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(pem));
// char[] pem = SignCertPEM.ToCharArray();
// StringBuilder pem=new StringBuilder(SignCertPEM);
int pemLen = pem.Length;
ret = PemToDer( pem, pemLen, ref publicKeyDER, ref publicKeyDERLen); // 其他信息: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
//ret = PemToDer( ref pem, pemLen, ref publicKeyDER, ref publicKeyDERLen); //返回值12
[DllImport(@"D:/vs2012Space/ICCarUpdateClient/ICCarUpdateClient/bin/Debug/decodecert.dll", EntryPoint = "PemToDer", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public extern static int PemToDer(string pem, int pem_len, StringBuilder cert, ref int cert_len);
//调用前分配空间
StringBuilder publicKeyDER = new Stringbuilder(5000);