1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

Pgpsdk

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

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

    denisforum Гость

    Репутация:
    0
    Доброго всем дня!

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

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


    Спасибо!
     
  2. denisforum

    denisforum Гость

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


    Код:
    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 ();
    };
     
Статус темы:
Закрыта.

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