【发布时间】:2012-05-25 14:51:50
【问题描述】:
当我使用以下代码将证书存储在机器上时,我试图在证书上设置友好名称:
CRYPT_DATA_BLOB fName = {_tcslen(FriendlyName) * sizeof(TCHAR), FriendlyName};
CertSetCertificateContextProperty(certContext, CERT_FRIENDLY_NAME_PROP_ID, 0, &fName));
显然,FriendlyName 是一个指向友好名称的 LPWSTR,而 certContext 是将证书保存在存储中的有效证书上下文。该功能正常工作,并将名称写入证书。但是,当我在证书管理单元中查看它时,名称的最后一个字母被截断。我尝试在名称的长度上添加一个,最终将名称切成两半。我检查了 FriendlyName 和长度以确保它们是正确的。如果我将 FriendlyName 更改为 LPSTR,它会显示为 Kanjii 字符。在 Microsoft 提供的示例中,他们执行以下操作:
BYTE *pName = (BYTE *)"Temp Name.";
CRYPT_DATA_BLOB Friendly_Name_Blob={32,pName};
我不知道他们从哪里得到 32,他们也没有提供我能找到的解释。当我使用 32 时,它再次截断名称。知道我做错了什么以及如何纠正吗?
【问题讨论】:
标签: c++ certificate cryptoapi