CertCreateSelfSignCertificate을 사용하여 자체 서명 인증서를 만듭니다. 이것은 작동하며 암호화/서명/해독/확인이 가능합니다.새로 만든 자체 서명 인증서의 용도를 제한하십시오.
인증서의 용도를 제한하고 싶습니다만, "<All>"의 목적을 사용할 수있는 인증서로 항상 끝납니다.
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
같은 결과를 반환 :이 내가 CertCreateSelfSignCertificate
통화에 pExtensions
매개 변수를 준비하기 위해 사용하고 코드입니다.
나는 이것에 대한 많은 문서를 찾지 못했기 때문에 나는 이것이 내가해야 할 일이라는 것을 실제로 확신하지 못한다. 아무도 내가 잘못하고있는 것을 지적 할 수 있습니까?
그래서'szOID_ENHANCED_KEY_USAGE'가 될까요? 나는 그것을 보았지만'szOID_KEY_USAGE_RESTRICTION'이 더 적절하다고 생각했던 것을 기억합니다. 오늘 밤에 이걸 시험해 볼게. – Fozi
어땠어? @Fozi – srbob
네,이 방법이 효과가 있습니다. 내가 한 일에 대한 답변을 게시 하겠지만 올바른 방향으로 나를 밀어 넣었으므로 현상금을 드리겠습니다. – Fozi