openssl 编程中制作证书,宽字节码的一个问题(附代码)
时间:2011-06-28
来源:互联网
RT
C/C++ code
最近研究下openssl和x509证书,这段代码是网上找来学习的,使用这段代码添加到证书请求中,无论是中文还是英文结尾均已
\x00结尾,使用openssl命令就无此问题,字符编码转换我一直很头大,请问该怎么解决?
C/C++ code
bool Add_Name(X509_NAME * x509name, int type/*c\cn*/, char * iput/*中国*/, int ilen/*输入长度*/, char * outMsg)//支持中文名称 { wchar_t * ws = NULL; wchar_t wc; ASN1_STRING stmp, *str = &stmp; UCHAR cbuf[256] = { 0 }; int wslen, wcnt, i; char input[256] = { 0 }; strncpy(input, iput, ilen); wslen = strlen(input) + 1; memset(&stmp,0,sizeof(stmp)); if (wslen == 1) return TRUE; //wslen -= 1; /* REMOVE ws =new unsigned short[sizeof(wchar_t) * wslen]; */ ws = malloc(sizeof(wchar_t) * wslen); if ((wcnt = mbstowcs(ws, input, wslen)) == -1) { sprintf(outMsg, "mbstowcs convert error"); free(ws); return FALSE; } for (i = 0; i < (int) wcslen(ws); i++) { wc = ws[i]; cbuf[2*i] = wc / 256; cbuf[2*i + 1] = wc % 256; } //ASN1_mbstring_copy(&str, cbuf, 2 * wslen , MBSTRING_BMP, B_ASN1_UTF8STRING); ASN1_mbstring_copy(&str, cbuf, 2 * wslen , MBSTRING_BMP, B_ASN1_UTF8STRING); X509_NAME_add_entry_by_NID(x509name, type, V_ASN1_UTF8STRING, stmp.data, stmp.length, -1, 0); free(ws); return TRUE; }
最近研究下openssl和x509证书,这段代码是网上找来学习的,使用这段代码添加到证书请求中,无论是中文还是英文结尾均已
\x00结尾,使用openssl命令就无此问题,字符编码转换我一直很头大,请问该怎么解决?
作者: shiweifu 发布时间: 2011-06-28
\x00 是不是表示字符串结尾?
作者: justkk 发布时间: 2011-06-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28