Как выполнить аутентификацию с помощью файла P12, хранящегося на USB-ключе Safenet, с помощью QT/C++?
У меня есть приложение C++/QT, которое взаимодействует с сервером в TLS. Есть взаимная аутентификация. Итак, клиент аутентифицируется на сервере с помощью сертификата и пароля. Вот как бы я поступил:
QFile certFile("/home/toto/certs/clientcert.pem");
certFile.open(QFile::ReadOnly);
QSslCertificate cert(&certFile);
certFile.close();
configuration.setLocalCertificate(cert);
QList<QSslCertificate> certs;
certFile.setFileName("/home/toto/certs/mycacert.pem");
certFile.open(QFile::ReadOnly);
QSslCertificate caCert(&certFile);
certFile.close();
certs.append(caCert);
configuration.setCaCertificates(certs);
QFile keyFile("/home/toto/certs/myprivkey.key");
keyFile.open(QFile::ReadOnly);
QSslKey key(&keyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey, "1234");
qWarning() << key.isNull();
configuration.setPrivateKey(key);
keyFile.close();
Мне бы это понравилось, потому что QT не поддерживает файл P12 (скажите, пожалуйста, если я ошибаюсь).
Кредиты: я взял модель на https://forum.qt.io/topic/32810/using-ssl-client-certificate/3
Теперь мне нужно сделать то же самое, но получить доступ к P12 с помощью USB-ключа Safenet eToken (HSM). У тебя есть идеи, как это сделать? Принимая во внимание также, что QT не поддерживает P12, и этот закрытый ключ не может быть извлечен из оборудования.
Спасибо за вашу помощь.