证书友好名称
Certificate Friendly Name
本文关键字:证书 更新时间:2023-10-16
当我使用以下代码将证书存储在计算机上时,我正在尝试在证书上设置友好名称:
CRYPT_DATA_BLOB fName = {_tcslen(FriendlyName) * sizeof(TCHAR), FriendlyName};
CertSetCertificateContextProperty(certContext, CERT_FRIENDLY_NAME_PROP_ID, 0, &fName));
显然,友好名称是指向友好名称的 LPWSTR,而 certContext 是将证书保存在存储中的有效证书上下文。 该函数正常工作,名称已写入证书中。 但是,当我在证书管理单元中查看它时,名称的最后一个字母被截断。 我尝试在名称的长度上添加一个,最终将名称切成两半。 我已经检查了友好名称和长度,以确保它们是正确的。 如果我将友好名称更改为 LPSTR,它将显示为汉字字符。 在 Microsoft 提供的示例中,它们执行以下操作:
BYTE *pName = (BYTE *)"Temp Name.";
CRYPT_DATA_BLOB Friendly_Name_Blob={32,pName};
我不知道他们从哪里得到32,也没有提供我能找到的解释。 当我使用 32 时,它再次截断名称。 知道我做错了什么以及如何纠正它吗?
要使用 CertSetCertificateContextProperty 设置CERT_FRIENDLY_NAME_PROP_ID
属性,您需要首先初始化CRYPT_DATA_BLOB
,然后将其用作 CertSetCertificateContextProperty
的最后一个参数。代码可能涉及以下内容:
LPWSTR pszFriendlyName = L"My test friendly name";
CRYPT_DATA_BLOB cryptBlob;
BOOL bResult;
cryptBlob.cbData = (lstrlenW(pszFriendlyName) + 1)*sizeof(WCHAR);
cryptBlob.pbData = (PBYTE)pszFriendlyName;
// pCertContext should be set before
bResult = CertSetCertificateContextProperty (pCertContext,
CERT_FRIENDLY_NAME_PROP_ID,
0, (LPVOID)&cryptBlob);
if (!bResult) {
// error
}
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何在C++中使用X509证书模在令牌中查找私钥
- OpenSSL TLS服务器-使用客户端证书白名单
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- c++ libCurl :如何使用libCurl接受过期的证书
- 以 x64 配置访问证书公钥
- 从网站复制证书,并使用脚本将其添加到受信任的根证书颁发机构
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 我需要帮助来缩短检索 SSL 证书的执行时间
- 如何使用QWebEngineView忽略SSL证书错误
- 如何以编程方式从PKCS7中提取CA、多个CA和公共证书/密钥
- 通过 OpenSSL C++从证书获取颁发者证书
- 如何使用openssl续订过期的证书密钥或创建自签名证书密钥any.pem Poco c ++
- 打开 SSL 查询客户端证书
- C++项目需要什么才能使用证书 (RSA-SHA256) 对文件进行签名
- 将私钥和证书存储在C++/OpenSSL中
- 将 PFX 证书转换为 PEM 格式
- CMake Ninja Git 自签名证书颁发机构密码提示
- 如何在 C++ 中将 X509 证书转换为公钥字符串