Крипто-Про CSP |
//-------------------------------------------------------------------- #define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING) void HandleError(char *s); //-------------------------------------------------------------------- // Начало main. void main() { //-------------------------------------------------------------------- // Объявление и инициализация переменных. HCRYPTPROV hCryptProv; HCRYPTKEY hOriginalKey; HCRYPTKEY hDuplicateKey; DWORD dwMode; BYTE pbData[16]; //-------------------------------------------------------------------- // Начало выполнения. printf("This program creates a session key and duplicates \n"); printf("that key. Next, parameters are added to the original \n"); printf("key. Finally, both keys are destroyed. \n\n"); //-------------------------------------------------------------------- // Получение дескриптора контекста криптографического провайдера. if(CryptAcquireContext( &hCryptProv, NULL, NULL, 75, 0)) { printf("CryptAcquireContext succeeded. \n"); } else { HandleError("Error during CryptAcquireContext!\n"); } //-------------------------------------------------------------------- // Генерация ключа. if (CryptGenKey( hCryptProv, CALG_G28147, 0, &hOriginalKey)) { printf("Original session key is created. \n"); } else { HandleError("ERROR - CryptGenKey."); } //-------------------------------------------------------------------- // Дублирование ключа. if (CryptDuplicateKey( hOriginalKey, NULL, 0, &hDuplicateKey)) { printf("The session key has been duplicated. \n"); } else { HandleError("ERROR - CryptDuplicateKey"); } //-------------------------------------------------------------------- // Установка дополнительных параметров исходного ключа. // В первую очередь, установка режима шифрования. dwMode = CRYPT_MODE_ECB; if(CryptSetKeyParam( hOriginalKey, KP_MODE, (BYTE*)&dwMode, 0)) { printf("Key Parameters set. \n"); } else { HandleError("Error during CryptSetKeyParam."); } // Генерация случайного вектора инициализации. if(CryptGenRandom( hCryptProv, 8, pbData)) { printf("Random sequence generated. \n"); } else { HandleError("Error during CryptGenRandom."); } //-------------------------------------------------------------------- // Установка вектора инициализации. if(CryptSetKeyParam( hOriginalKey, KP_IV, pbData, 0)) { printf("Parameter set with random sequence as initialization vector. \n"); } else { HandleError("Error during CryptSetKeyParam."); } //-------------------------------------------------------------------- // Очистка. if (hOriginalKey) CryptDestroyKey(hOriginalKey); if (hDuplicateKey) CryptDestroyKey(hDuplicateKey); if(hCryptProv) CryptReleaseContext(hCryptProv, 0); printf("\nThe program ran to completion without error. \n"); } // Конец main
Windows 2000/XP/2003: Необходимо Windows 2000 SP4 или
старше с Internet Explorer 6.0 или старше.
Windows NT/95/98/ME: CSP 3.0 не поддерживает (см. КриптоПро CSP
2.0 ).
Solaris: 9 Update 4 или выше.
FreeBSD: FreeBSD 5.2 или выше
Linux: RedHat 7.3, RedHad 9.0.
Ядро Windows NT: не поддерживает.
Что Вы
думаете по поводу данной статьи? |
Закажите CD c Крипто-Про CSP |