Pgpsdk

Тема в разделе "MS Visual C++", создана пользователем denisforum, 21 май 2006.

Статус темы:
Закрыта.
  1. denisforum

    denisforum Гость

    Доброго всем дня!

    Подскажите пожалуйста примерчик для генерации ключей с помощью библиотеки PGPsdk.

    Я уже всю голову сломал не пойму что и как в этой библиотеке работает!


    Спасибо!
     
  2. denisforum

    denisforum Гость

    После продолжительного изучения мануала и лазания по инету получилось следующее, но всё равно при генерации ключа "PGPGenerateKey" вылетает ошибка feature not available
    Может кто подскажет, что я пропустил, а то у меня уже башка не соображает!!!


    Код (Text):
    err = PGPsdkInit();
    err = PGPNewContext( kPGPsdkAPIVersion, &context );


    const void *nameKey = "nameKey";
    PGPOptionListRef m_optsEncode = NULL;
    PGPKeySetRef keySet = kInvalidPGPKeySetRef;
    err = PGPNewKeySet (context, &keySet);

    err = PGPBuildOptionList ( context,
    &m_optsEncode,
    PGPOKeyGenParams (context, kPGPPublicKeyAlgorithm_RSA, 2048),
    PGPOKeyGenName (context, nameKey, 255),
    PGPOLastOption( context ) );

    PGPGlobalRandomPoolAddSystemState();
    PGPUInt32 currEntropyAmt = PGPGlobalRandomPoolGetEntropy();
    PGPUInt32 entropyNeeded = PGPGetKeyEntropyNeeded(context,
    PGPOKeyGenParams(context,kPGPPublicKeyAlgorithm_RSA,2048),
    PGPOLastOption(context)
    );

    PGPUInt32 val;
    while (currEntropyAmt < entropyNeeded)
    {
    val = PGPGlobalRandomPoolMouseMoved();
    currEntropyAmt = PGPGlobalRandomPoolGetEntropy();
    }

    const char *PassPhrase = "";
    PGPKeyRef newKey;
    err = PGPGenerateKey (context, &newKey,
    PGPOKeySetRef (context, keySet),
    m_optsEncode,
    PGPOPassphrase (context, PassPhrase),
    PGPOExpiration (context, kPGPExpirationTime_Never),
    PGPOLastOption( context ));

    if( IsPGPError( err ) ) {
    char errString[256];
    PGPGetErrorString( err, sizeof( errString), errString );
    std::ofstream outFile ("err.dat", std::ios::app);
    outFile << "PGPGenerateKey " << errString << std::endl;
    outFile.close ();
    };
     
Статус темы:
Закрыта.

Поделиться этой страницей