我使用CertCreateSelfSignCertificate創建自簽名證書。這有效,我可以使用它加密/簽名/解密/驗證數據。限制新創建的自簽名證書的預期用途
我想限制證書的預期用途,但我總是以「<所有>」爲目的啓用的證書結束。這是我使用準備pExtensions
參數爲CertCreateSelfSignCertificate
調用的代碼:
BYTE key_usage_value = CERT_DATA_ENCIPHERMENT_KEY_USAGE |
CERT_DIGITAL_SIGNATURE_KEY_USAGE;
CERT_KEY_USAGE_RESTRICTION_INFO key_usage = {
0, NULL,
{ sizeof(key_usage_value), &key_usage_value }
};
auto key_usage_data = EncodeObject(szOID_KEY_USAGE_RESTRICTION, &key_usage);
CERT_EXTENSION extension[] = {
{ szOID_KEY_USAGE_RESTRICTION, TRUE, {
key_usage_data.size(), key_usage_data.data()
} }
};
CERT_EXTENSIONS extensions = {
elemsof(extension),
extension
};
EncodeObject
簡單地調用CryptEncodeObject並返回結果爲std::vector
。
我還沒有找到太多的文件,所以我不確定這是我應該做的。任何人都可以指出我做錯了什麼?
那麼這將是'szOID_ENHANCED_KEY_USAGE'?我記得我看過,但'szOID_KEY_USAGE_RESTRICTION'似乎更合適。我今晚會試試這個...... – Fozi
它是如何在@Fozi – srbob
是的,這個工作,但有更多的它。我會就我所做的事發表一個答案,但是你把我推向了正確的方向,所以我很樂意給你獎勵。 – Fozi