2016-06-01 6 views
1

Ich habe ein Problem, dass ich eine einfache Anwendung, die einige Daten wie Daumenabdruck exportieren möchten (so wie klicken Sie auf * .cer-Datei in Windows, und dann können Sie sehen Seriennummer der Zertifikatsdatei oder es ist Daumenabdruck, ....). Ich möchte diesen Job in C++ \ MFC ausführen, und ich werde dankbar sein, wenn jemand mich freundlich berät, wie gibt es irgendeine Klasse oder Bibliothek, um Daten von * .cer-Datei zu behandeln und abzurufen?Wie kann ich Thumbprint aus einer Zertifikatsdatei in C++ exportieren

+1

StackOverflow ist nicht für diese Art von ausweichenden Fragen konzipiert. Versuchen Sie etwas zu tun und kommen Sie mit spezifischen Fragen. – Caduchon

+0

@Cadchon eigentlich möchte ich über eine bestimmte gute Bibliothek wissen. – reza

Antwort

1

Wenn Sie nur eine Windows-Lösung suchen, würde ich Win32-API verwenden. Werfen Sie einen Blick auf CryptQueryObject und CryptMsgGetParam.

Es ist ein Beispiel dafür, wie Informationen von einem Zertifikat in den windows documentation zu erhalten:

WCHAR szFileName[] = L"certificate.cer"; 
DWORD dwEncoding, dwContentType, dwFormatType; 
DWORD dwSignerInfo; 
HCERTSTORE hStore = NULL; 
HCRYPTMSG hMsg = NULL; 

fResult = CryptQueryObject(CERT_QUERY_OBJECT_FILE, 
          szFileName, 
          CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED, 
          CERT_QUERY_FORMAT_FLAG_BINARY, 
          0, 
          &dwEncoding, 
          &dwContentType, 
          &dwFormatType, 
          &hStore, 
          &hMsg, 
          NULL); 


// Get signer information size. 
fResult = CryptMsgGetParam(hMsg, 
          CMSG_SIGNER_INFO_PARAM, 
          0, 
          NULL, 
          &dwSignerInfo); 

// Allocate memory for signer information. 
pSignerInfo = (PCMSG_SIGNER_INFO)LocalAlloc(LPTR, dwSignerInfo); 

// Get Signer Information. 
fResult = CryptMsgGetParam(hMsg, 
          CMSG_SIGNER_INFO_PARAM, 
          0, 
          (PVOID)pSignerInfo, 
          &dwSignerInfo); 

// use pSignerInfo->SerialNumber 

Natürlich können Sie Fehler behandeln sollen, das Beispiel ist detaillierter in dem obigen Link, aber es ist ein Anfang. Sie müssen genauer sein, was Sie suchen, wenn Sie eine detailliertere Antwort wünschen.

+0

Eigentlich brauche ich sowas. Danke, Mann – reza

Verwandte Themen