Народ помогите. Уже какой день не могу решить. Совет. Ответ. Хоть что-то.



  • Я имею код:
    @QSslSocket * serverSocket = new QSslSocket();
    serverSocket->setPrivateKey("some.key");
    serverSocket->setLocalCertificate("some.crt");
    serverSocket->startServerEncryption();
    if(serverSocket->waitForEncrypted()) {
    ...
    @

    Как видно я привел пример серверной части QSslSocket. В этом примере я имею константные some.key и some.crt. Пример работает. Я бы хотел получить информацию о сертификате пользователя. В документации написано, что есть метод peerCertificate(). Он возвращает объект типа QSslCetificate, с которого я вызываю уже методы.
    Например:
    @
    serverSocket->peerCertificate().issuerInfo(QSslCertificate::CommonName);
    @

    В результате я получаю пустую строку. В документации так и написано, что метод может возвращать пустую строку. Это и не важно, т.к CommonName для разных сертификатов может быть одинаковый. Нужно получить то, что является разным для разных сертификатов или может как-то сопоставить имеющие сертификаты.
    Вы меня наверное спросите: зачем мне это? Ответ достаточно прост: если пользователь шифрует данные одним сертификатов, то я использую ему соответствующий для расшифровки и т.д.
    Возможно существует метод указать несколько ключей, а уже qt сам выберет каким ключом воспользоваться?...
    Я буду безгранично благодарен за любой совет, за любую идею...



  • странный способ, ну да ладно. Обычно для этого клиент вначеле сессии отправляет заранее известный серверу блок данных, и на сервере остается только прогнать по нему все ваши ключи. на соотв. при расшифровке будет совпадение. для безопасности такие данные не должны быть просто константой. обычно их генерируют на основе данных польз. и текущего времени



  • ах да вроде это уже там должно быть свтроенно.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.