// Cert361.cpp // // 注意: // Crypt32.lib以外にCryptui.libをリンクしてください。 // このサンプルは、WindowXPとWindows Server 2003 でのみ動作します。 // #include "stdafx.h" #include #include #include int _tmain(int argc, _TCHAR* argv[]) { HCRYPTPROV hProv; HCERTSTORE hStore; // CSPハンドルの取得 if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, NULL)) { if(!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET)) { fprintf(stderr, "CryptAcquireContext error\n"); return 1; } } // 証明書ストアーのオープン hStore = CertOpenSystemStore( hProv, "MY"); if(!hStore) { fprintf(stderr, "CertOpenSystemStore error\n"); return 2; } // 電子証明書の取り出し PCCERT_CONTEXT pcCert; pcCert = CryptUIDlgSelectCertificateFromStore( hStore, NULL, NULL, NULL, 0, 0, NULL); if(!pcCert) { CertCloseStore(hStore, 0); CryptReleaseContext(hProv, 0); return 1; } // 利用期間の検証 switch(CertVerifyTimeValidity( NULL, // 今現在の時刻と比較 pcCert->pCertInfo)) // 検証される電子証明書情報 { case -1: printf("電子証明書の利用開始日に至っていません。\n"); break; case 0: printf("電子証明書の利用期間内です。\n"); break; case +1: printf("電子証明書の利用期間を過ぎています。\n"); break; } // 後始末 CertFreeCertificateContext(pcCert); CertCloseStore(hStore, 0); CryptReleaseContext(hProv, 0); return 0; }