+17
-13
@@ -58,9 +58,14 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
bool kiosk = false, bool login = true):
|
bool kiosk = false, bool login = true):
|
||||||
_url(0), _clearUrl(0), _addBookmark(0), _find(0),
|
_url(0), _clearUrl(0), _addBookmark(0), _find(0),
|
||||||
_kiosk(kiosk),
|
_kiosk(kiosk),
|
||||||
_settings(mimeTypes, this, settings, !kiosk),
|
_settings(mimeTypes, this, settings, !kiosk), _errorLog(this) {
|
||||||
_scAuth(actlib, this, login), _errorLog(this) {
|
|
||||||
LOG<<urls;
|
LOG<<urls;
|
||||||
|
try {
|
||||||
|
_scAuth = std::auto_ptr<SmartCardAuth>
|
||||||
|
(new SmartCardAuth(actlib, this, login));
|
||||||
|
} catch (const std::exception& x) {
|
||||||
|
LOG<<"No SmartCard Support:"<<x.what();
|
||||||
|
}
|
||||||
if (urls.size()) _home = urls.at(0);
|
if (urls.size()) _home = urls.at(0);
|
||||||
QNetworkProxyFactory::setUseSystemConfiguration(true);
|
QNetworkProxyFactory::setUseSystemConfiguration(true);
|
||||||
setupUi(this);
|
setupUi(this);
|
||||||
@@ -431,7 +436,7 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
if (!QSslSocket::supportsSsl())
|
if (!QSslSocket::supportsSsl())
|
||||||
QMessageBox::critical(this, tr("SSL Not Supported"),
|
QMessageBox::critical(this, tr("SSL Not Supported"),
|
||||||
tr("SSL is not supported on your system"));
|
tr("SSL is not supported on your system"));
|
||||||
_scAuth.login();
|
if (_scAuth.get()) _scAuth->login(false);
|
||||||
}
|
}
|
||||||
if (!check(page)) {
|
if (!check(page)) {
|
||||||
LOG<<"########## BLACK LISTED IGNORED ##########";
|
LOG<<"########## BLACK LISTED IGNORED ##########";
|
||||||
@@ -1040,18 +1045,17 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
:reply->url().path()).fileName();
|
:reply->url().path()).fileName();
|
||||||
}
|
}
|
||||||
LOG<<"Filename:"<<filename;
|
LOG<<"Filename:"<<filename;
|
||||||
Settings::MimeTypes::const_iterator it
|
QStringList type
|
||||||
(_settings.mimetypes().find
|
(_settings.mimetype
|
||||||
(reply->header(QNetworkRequest::ContentTypeHeader).toString()
|
(reply->header(QNetworkRequest::ContentTypeHeader).toString(),
|
||||||
.split(';')[0]));
|
filename));
|
||||||
if (it!=_settings.mimetypes().end()) {
|
if (!type.isEmpty()) {
|
||||||
filename.replace(QRegExp("^(.*)\\."+it.value().toStringList()
|
filename.replace(QRegExp("^(.*)\\."+type.at(0)+"$"),
|
||||||
.at(0)+"$"),
|
|
||||||
"\\1"); // remove extension
|
"\\1"); // remove extension
|
||||||
QTemporaryFile *file =
|
QTemporaryFile *file =
|
||||||
new QTemporaryFile(QDir::tempPath()+QDir::separator()
|
new QTemporaryFile(QDir::tempPath()+QDir::separator()
|
||||||
+filename+"_XXXXXX."
|
+filename+"_XXXXXX."
|
||||||
+it.value().toStringList().at(0), this);
|
+type.at(0), this);
|
||||||
file->open();
|
file->open();
|
||||||
file->write(reply->readAll());
|
file->write(reply->readAll());
|
||||||
file->close();
|
file->close();
|
||||||
@@ -1060,7 +1064,7 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
_downloadProcesses[process] = file;
|
_downloadProcesses[process] = file;
|
||||||
assert(connect(process, SIGNAL(finished(int, QProcess::ExitStatus)),
|
assert(connect(process, SIGNAL(finished(int, QProcess::ExitStatus)),
|
||||||
SLOT(processFinished())));
|
SLOT(processFinished())));
|
||||||
QStringList args(it.value().toStringList().at(1).split(" ")
|
QStringList args(type.at(1).split(" ")
|
||||||
.replaceInStrings("%1", file->fileName()));
|
.replaceInStrings("%1", file->fileName()));
|
||||||
QString prg(args.takeFirst());
|
QString prg(args.takeFirst());
|
||||||
LOG<<"Running:"<<prg<<args.join(" ");
|
LOG<<"Running:"<<prg<<args.join(" ");
|
||||||
@@ -1211,8 +1215,8 @@ class Browser: public QMainWindow, protected Ui::Browser {
|
|||||||
typedef std::map<QProcess*, QTemporaryFile*> DownloadProcesses;
|
typedef std::map<QProcess*, QTemporaryFile*> DownloadProcesses;
|
||||||
DownloadProcesses _downloadProcesses;
|
DownloadProcesses _downloadProcesses;
|
||||||
Settings _settings;
|
Settings _settings;
|
||||||
SmartCardAuth _scAuth;
|
|
||||||
ErrorLog _errorLog;
|
ErrorLog _errorLog;
|
||||||
|
std::auto_ptr<SmartCardAuth> _scAuth;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -26,6 +26,46 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
const QByteArray SWISSSIGN_EV_GOLD_CA_2009_G2
|
||||||
|
("-----BEGIN CERTIFICATE-----\n"
|
||||||
|
"MIIGvzCCBaegAwIBAgIQAPI39KUS4aGJo+mkR4+YuTANBgkqhkiG9w0BAQUFADBN\n"
|
||||||
|
"MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMScwJQYDVQQDEx5T\n"
|
||||||
|
"d2lzc1NpZ24gRVYgR29sZCBDQSAyMDA5IC0gRzIwHhcNMTAwNDI5MDgyMzA2WhcN\n"
|
||||||
|
"MTIwNDI5MDgyMzA2WjCCASQxCzAJBgNVBAYTAkNIMQ0wCwYDVQQIEwRCZXJuMQ0w\n"
|
||||||
|
"CwYDVQQHEwRCZXJuMSAwHgYDVQQKExdEaWUgU2Nod2VpemVyaXNjaGUgUG9zdDEa\n"
|
||||||
|
"MBgGA1UEAxMRaWRwLnN3aXNzc2lnbi5uZXQxJzAlBgkqhkiG9w0BCQEWGG9wZXJh\n"
|
||||||
|
"dGlvbnNAc3dpc3NzaWduLmNvbTEbMBkGA1UECRMSVmlrdG9yaWFzdHJhc3NlIDIx\n"
|
||||||
|
"MQ0wCwYDVQQREwQzMDMwMRUwEwYLKwYBBAGCNzwCAQITBEJlcm4xEzARBgsrBgEE\n"
|
||||||
|
"AYI3PAIBAxMCQ0gxGzAZBgNVBA8TElYxLjAsIENsYXVzZSA1LihiKTEbMBkGA1UE\n"
|
||||||
|
"BRMSQ0gtMDM1LjguMDE3LjIxNy03MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\n"
|
||||||
|
"CgKCAQEA6vtopNyjugIQb+OwsjcAN60Uo1ClcnFa+0Eme5MOCQg8khGwux42aRTL\n"
|
||||||
|
"kUfcTrOye4J8ThE5/9Qm32hagA+mPQRWAkQqZKDJCPU7LMEQKzClZs4LYA04Vv32\n"
|
||||||
|
"WFbeSVh3tK6j92tQ8mbtUep1S/dye9j72P1WQxdd2uJrwzQgA3ftEoVJ6lOMEcBS\n"
|
||||||
|
"cR4lfCdFbQMSwfRI3g2BKPfuYZ+Vp90rF/0Si2kNd1CrBYdLhoZFvPFBapdcK9g/\n"
|
||||||
|
"QzBXfoLQb7MZkR3o8HtUOzcmEl7fhvO/8PEh5hJgn/hnLlFW0TIrqd/ag+n4U17V\n"
|
||||||
|
"isDHS13eaSPE7qq1xhfeTda2QBk9/wIDAQABo4ICwDCCArwwHAYDVR0RBBUwE4IR\n"
|
||||||
|
"aWRwLnN3aXNzc2lnbi5uZXQwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsG\n"
|
||||||
|
"AQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4EFgQUs/yd7N1TLOjtmtcB+S16SzcX5W8w\n"
|
||||||
|
"HwYDVR0jBBgwFoAUiHRGbcd8tfpycRnevydeDWjg9ycwgf8GA1UdHwSB9zCB9DBH\n"
|
||||||
|
"oEWgQ4ZBaHR0cDovL2NybC5zd2lzc3NpZ24ubmV0Lzg4NzQ0NjZEQzc3Q0I1RkE3\n"
|
||||||
|
"MjcxMTlERUJGMjc1RTBENjhFMEY3MjcwgaiggaWggaKGgZ9sZGFwOi8vZGlyZWN0\n"
|
||||||
|
"b3J5LnN3aXNzc2lnbi5uZXQvQ049ODg3NDQ2NkRDNzdDQjVGQTcyNzExOURFQkYy\n"
|
||||||
|
"NzVFMEQ2OEUwRjcyNyUyQ089U3dpc3NTaWduJTJDQz1DSD9jZXJ0aWZpY2F0ZVJl\n"
|
||||||
|
"dm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9p\n"
|
||||||
|
"bnQwYgYDVR0gBFswWTBXBglghXQBWQECAQEwSjBIBggrBgEFBQcCARY8aHR0cDov\n"
|
||||||
|
"L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS9Td2lzc1NpZ24tR29sZC1DUC1DUFMt\n"
|
||||||
|
"UjQucGRmMIHGBggrBgEFBQcBAQSBuTCBtjBkBggrBgEFBQcwAoZYaHR0cDovL3N3\n"
|
||||||
|
"aXNzc2lnbi5uZXQvY2dpLWJpbi9hdXRob3JpdHkvZG93bmxvYWQvODg3NDQ2NkRD\n"
|
||||||
|
"NzdDQjVGQTcyNzExOURFQkYyNzVFMEQ2OEUwRjcyNzBOBggrBgEFBQcwAYZCaHR0\n"
|
||||||
|
"cDovL29jc3Auc3dpc3NzaWduLm5ldC84ODc0NDY2REM3N0NCNUZBNzI3MTE5REVC\n"
|
||||||
|
"RjI3NUUwRDY4RTBGNzI3MA0GCSqGSIb3DQEBBQUAA4IBAQCNpT2u/s/IKqXrWmHX\n"
|
||||||
|
"TTVbW2Kh8xul9jLole+hWXtx8Ln4E8oW+bV25HGUjt8QrC1wXGABRCijgIjQ8PtR\n"
|
||||||
|
"CQrcwJCmC9ShcckP7KXiaETaT67TUB8qIQ/pf3akNeWKcdFGcD6CDYM7umuu1Q1X\n"
|
||||||
|
"326mufNviiqlU0uoK1LJQHhme3HMHarYdzkuIeShvIYHUYP3JnorXaizcCqjBhdF\n"
|
||||||
|
"rj4QcCZx8hKE6gmNL+dJkBM/5CSqByy15tMs2qa0iMdwkPUiNxlL0VuZkwzooVQx\n"
|
||||||
|
"1eKQwsSx3807MkQMKs+4v1LexkY+5/xU9dvtyRysjuSEWS8yCx3+E3fOOVAIX5jD\n"
|
||||||
|
"0uSX\n"
|
||||||
|
"-----END CERTIFICATE-----");
|
||||||
const QByteArray SWISSSIGN_SERVER_GOLD_CA_2008_G2
|
const QByteArray SWISSSIGN_SERVER_GOLD_CA_2008_G2
|
||||||
("-----BEGIN CERTIFICATE-----\n"
|
("-----BEGIN CERTIFICATE-----\n"
|
||||||
"MIIGXjCCBEagAwIBAgIIXsz6acAzJ+8wDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UE\n"
|
"MIIGXjCCBEagAwIBAgIIXsz6acAzJ+8wDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UE\n"
|
||||||
@@ -185,6 +225,7 @@ int main(int argv, char** argc) try {
|
|||||||
//............................................................................
|
//............................................................................
|
||||||
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
||||||
QList<QSslCertificate> certs(sslConfig.caCertificates());
|
QList<QSslCertificate> certs(sslConfig.caCertificates());
|
||||||
|
certs.push_back(QSslCertificate(SWISSSIGN_EV_GOLD_CA_2009_G2));
|
||||||
certs.push_back(QSslCertificate(SWISSSIGN_GOLD_CA_G2));
|
certs.push_back(QSslCertificate(SWISSSIGN_GOLD_CA_G2));
|
||||||
//certs.push_back(QSslCertificate(SWISSSIGN_SERVER_GOLD_CA_2008_G2));
|
//certs.push_back(QSslCertificate(SWISSSIGN_SERVER_GOLD_CA_2008_G2));
|
||||||
certs.push_back(QSslCertificate(SWISSSIGN_SILVER_CA_G2));
|
certs.push_back(QSslCertificate(SWISSSIGN_SILVER_CA_G2));
|
||||||
@@ -326,6 +367,7 @@ int main(int argv, char** argc) try {
|
|||||||
}
|
}
|
||||||
sslConfig.setPeerVerifyMode(QSslSocket::VerifyPeer);
|
sslConfig.setPeerVerifyMode(QSslSocket::VerifyPeer);
|
||||||
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
||||||
|
assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_EV_GOLD_CA_2009_G2));
|
||||||
assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_GOLD_CA_G2));
|
assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_GOLD_CA_G2));
|
||||||
//assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_SERVER_GOLD_CA_2008_G2))));
|
//assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_SERVER_GOLD_CA_2008_G2))));
|
||||||
assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_SILVER_CA_G2));
|
assert(QSslConfiguration::defaultConfiguration().caCertificates().contains(SWISSSIGN_SILVER_CA_G2));
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ CONFIG += no_keywords
|
|||||||
QMAKE_LIBS += -lproxyface -lcryptoki++ -lssl -lcrypto
|
QMAKE_LIBS += -lproxyface -lcryptoki++ -lssl -lcrypto
|
||||||
|
|
||||||
unix {
|
unix {
|
||||||
|
!macx {
|
||||||
|
CONFIG += debug
|
||||||
|
}
|
||||||
}
|
}
|
||||||
macx {
|
macx {
|
||||||
QMAKE_INCDIR += /opt/local/include
|
QMAKE_INCDIR += /opt/local/include
|
||||||
|
|||||||
@@ -117,6 +117,16 @@ class Settings: public QDialog, protected Ui::Settings {
|
|||||||
return _mimetypes;
|
return _mimetypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList mimetype(QString mimetype, QString filename) const {
|
||||||
|
Settings::MimeTypes::const_iterator
|
||||||
|
it(_mimetypes.find(mimetype.split(';')[0]));
|
||||||
|
if (it!=_mimetypes.end()) return it.value().toStringList();
|
||||||
|
for (it=_mimetypes.begin(); it!=_mimetypes.end(); ++it)
|
||||||
|
if (filename.endsWith("."+it.value().toStringList().at(0)))
|
||||||
|
return it.value().toStringList();
|
||||||
|
return QStringList();
|
||||||
|
}
|
||||||
|
|
||||||
QString& replaceSearchEngine(QString& url) {
|
QString& replaceSearchEngine(QString& url) {
|
||||||
LOG;
|
LOG;
|
||||||
int len(url.indexOf(QRegExp("[ :]")));
|
int len(url.indexOf(QRegExp("[ :]")));
|
||||||
|
|||||||
@@ -34,42 +34,79 @@ class CryptokiEngine: public QObject, public openssl::Engine {
|
|||||||
operator bool() {
|
operator bool() {
|
||||||
OPENSSL_LOG("Status of CryptokiEngine: "
|
OPENSSL_LOG("Status of CryptokiEngine: "
|
||||||
<<(_privateKey.get()
|
<<(_privateKey.get()
|
||||||
?"privateKey defined, ":"privateKey undefined")
|
?"privateKey defined, ":"privateKey undefined"));
|
||||||
<<(_cert.get()?"cert defined":"cert undefined"));
|
return _privateKey.get();
|
||||||
return _privateKey.get() && _cert.get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cryptoki::Init& cryptoki() {
|
cryptoki::Init& cryptoki() {
|
||||||
return _cryptoki;
|
return _cryptoki;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cert(cryptoki::Object privateKey, std::auto_ptr<openssl::X509> c) {
|
void cert(cryptoki::Object& privateKey, const std::string& certVal) {
|
||||||
OPENSSL_LOG("log");
|
OPENSSL_LOG("log");
|
||||||
_cert = c;
|
|
||||||
_privateKey = std::auto_ptr<cryptoki::Object>
|
_privateKey = std::auto_ptr<cryptoki::Object>
|
||||||
(new cryptoki::Object(privateKey));
|
(new cryptoki::Object(privateKey));
|
||||||
_modulus = privateKey.attribute(CKA_MODULUS).value;
|
try { // new
|
||||||
_exponent = privateKey.attribute(CKA_PUBLIC_EXPONENT).value;
|
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
||||||
}
|
QSslCertificate localcert(QByteArray(certVal.data(),
|
||||||
|
certVal.size()),
|
||||||
|
QSsl::Der);
|
||||||
|
sslConfig.setLocalCertificate(localcert);
|
||||||
|
assert(localcert.isValid());
|
||||||
|
|
||||||
const openssl::X509& cert() {
|
QByteArray pem // empty dummy key for qt object instantiation
|
||||||
return *_cert;
|
("-----BEGIN RSA PRIVATE KEY-----\n"
|
||||||
|
"MIIBOwIBAAJBAMH2yqAGeVNPdgeZ2GoHo"
|
||||||
|
"31m9aUxZ7QfK2Go2qLTahLpQ3UL1C8G\n"
|
||||||
|
"LkuMS8SNK0ZGfRMalIpIhv6bW5l3kjogO"
|
||||||
|
"ncCAwEAAQJABVGECtFCoGMsZFb2lSmy\n"
|
||||||
|
"dOzOzYHGSy0TnnDn1dEgNnZ8sIljElPtU"
|
||||||
|
"zm9dyXs2P3ICL1sOd7qjpzfJeyxknDL\n"
|
||||||
|
"AQIhAO5iKdLmhyuW+EDEH19vDs1Pmqs3/"
|
||||||
|
"ZnT5UgUiJnTJqz3AiEA0ExIfUOCnxq2\n"
|
||||||
|
"a3Z46KEivcr8JB2P9VqouBbVryiq/oECI"
|
||||||
|
"QDj8bPCejMoiEzMSX0iWWTTB9qC/KAg\n"
|
||||||
|
"FtF4skHIrXKfEwIgPCs86Uo+Ch2aQjKHv"
|
||||||
|
"JMHSRHAgeI0OmiEwiB+e0lhE4ECIQDd\n"
|
||||||
|
"IbUmHIXt6oHLJmoGFX46bCcfil5eE5FXf"
|
||||||
|
"iaw7Q9iPw==\n"
|
||||||
|
"-----END RSA PRIVATE KEY-----\n");
|
||||||
|
QSslKey privkey(pem, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
||||||
|
RSA* rsa(0);
|
||||||
|
do {
|
||||||
|
rsa = ((RSA*)privkey.handle());
|
||||||
|
RSA_free(rsa); //→ occasional crashes?
|
||||||
|
rsa = RSA_new_method(_e);
|
||||||
|
set(rsa->n, privateKey, CKA_MODULUS, "CKA_MODULUS");
|
||||||
|
set(rsa->e, privateKey, CKA_PUBLIC_EXPONENT, "CKA_PUBLIC_EXPONENT");
|
||||||
|
set(rsa->d, privateKey, CKA_PRIVATE_EXPONENT, "CKA_PRIVATE_EXPONENT");
|
||||||
|
set(rsa->p, privateKey, CKA_PRIME_1, "CKA_PRIME_1");
|
||||||
|
set(rsa->q, privateKey, CKA_PRIME_2, "CKA_PRIME_2");
|
||||||
|
set(rsa->dmp1, privateKey, CKA_EXPONENT_1, "CKA_EXPONENT_1");
|
||||||
|
set(rsa->dmq1, privateKey, CKA_EXPONENT_2, "CKA_EXPONENT_2");
|
||||||
|
set(rsa->iqmp, privateKey, CKA_COEFFICIENT, "CKA_COEFFICIENT");
|
||||||
|
rsa->flags |= RSA_FLAG_SIGN_VER; // don't emulate with encrypt/decrypt
|
||||||
|
assert(!privkey.isNull());
|
||||||
|
} while (rsa!=(RSA*)privkey.handle());
|
||||||
|
sslConfig.setPrivateKey(privkey);
|
||||||
|
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
OPENSSL_LOG("SETUP ERROR: "<<e.what());
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual RSA* setupRsa(RSA* r) {
|
|
||||||
RSA_free(r); //→ occasional crashes?
|
|
||||||
r = RSA_new_method(_e);
|
|
||||||
r->n = BN_bin2bn((const unsigned char*)_modulus.data(),
|
|
||||||
_modulus.size(), r->n);
|
|
||||||
r->e = BN_bin2bn((const unsigned char*)_exponent.data(),
|
|
||||||
_exponent.size(), r->e);
|
|
||||||
// otherwise OpenSSL emulates sign/verify with encrypt/decrypt
|
|
||||||
r->flags |= RSA_FLAG_SIGN_VER;
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
void set(BIGNUM*& num, cryptoki::Object& key, int type, std::string name) {
|
||||||
|
try {
|
||||||
|
std::string value(key.attribute(type).value);
|
||||||
|
num = BN_bin2bn((const unsigned char*)value.data(),
|
||||||
|
value.size(), num);
|
||||||
|
} catch (const std::exception& x) {
|
||||||
|
qDebug()<<"**** ERROR: key attribute missing:"<<name.c_str()<<x.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
virtual const char* id() {
|
virtual const char* id() {
|
||||||
OPENSSL_LOG("log");
|
OPENSSL_LOG("log");
|
||||||
return "CryptokiEngine_ID";
|
return "CryptokiEngine_ID";
|
||||||
@@ -85,16 +122,18 @@ class CryptokiEngine: public QObject, public openssl::Engine {
|
|||||||
if (type != NID_md5_sha1) throw std::runtime_error("wrong sign type");
|
if (type != NID_md5_sha1) throw std::runtime_error("wrong sign type");
|
||||||
if (in.size() != 36) throw std::runtime_error("wrong msg size to sign");
|
if (in.size() != 36) throw std::runtime_error("wrong msg size to sign");
|
||||||
OPENSSL_LOG("ready to sign");
|
OPENSSL_LOG("ready to sign");
|
||||||
|
try {
|
||||||
return _privateKey->sign(in, CKM_RSA_PKCS);
|
return _privateKey->sign(in, CKM_RSA_PKCS);
|
||||||
|
} catch (const std::exception& x) {
|
||||||
|
certRequired(); // get new certificate
|
||||||
|
return _privateKey->sign(in, CKM_RSA_PKCS); // try again
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
cryptoki::Init _cryptoki;
|
cryptoki::Init _cryptoki;
|
||||||
std::string _modulus;
|
|
||||||
std::string _exponent;
|
|
||||||
std::auto_ptr<cryptoki::Object> _privateKey;
|
std::auto_ptr<cryptoki::Object> _privateKey;
|
||||||
std::auto_ptr<openssl::X509> _cert;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -104,36 +143,24 @@ class SmartCardAuth: public QObject {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
SmartCardAuth(const QString& lib, QWidget* p=0, bool loginAtStart=true):
|
SmartCardAuth(const QString& lib, QWidget* p=0, bool loginAtStart=true):
|
||||||
_reg(e(lib)), _parent(p) {
|
_parent(p), _e(new CryptokiEngine(lib.toStdString())), _reg(_e) {
|
||||||
qDebug()<<__PRETTY_FUNCTION__;
|
qDebug()<<__PRETTY_FUNCTION__;
|
||||||
if (loginAtStart) login();
|
if (loginAtStart) login();
|
||||||
//assert(connect(e(), SIGNAL(certRequired()), SLOT(login())));
|
assert(connect(_e, SIGNAL(certRequired()), SLOT(login())));
|
||||||
}
|
}
|
||||||
|
|
||||||
static CryptokiEngine* e(const QString& lib = QString()) try {
|
public Q_SLOTS:
|
||||||
static CryptokiEngine* _e(new CryptokiEngine(lib.toStdString()));
|
|
||||||
return _e;
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
qDebug()<<"Smartcard Error: "<<e.what();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
void login(bool force=true) {
|
||||||
|
|
||||||
openssl::RegisterEngine<CryptokiEngine> _reg;
|
|
||||||
//std::map<ssl_ctx_st*, QSslSocket*> sockets;
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
void login(bool force=false) {
|
|
||||||
qDebug()<<__PRETTY_FUNCTION__;
|
qDebug()<<__PRETTY_FUNCTION__;
|
||||||
QMutexLocker lock(&_mutex);
|
QMutexLocker lock(&_mutex);
|
||||||
if (!e() || (!force && *e())) return; // no smartcard or already logged in
|
if (!_e || (!force && *_e)) return; // no smartcard or already logged in
|
||||||
try {
|
try {
|
||||||
QList<CertInfo> authcerts;
|
QList<CertInfo> authcerts;
|
||||||
QList<CertInfo> allcerts;
|
QList<CertInfo> allcerts;
|
||||||
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
||||||
_slots = e()->cryptoki().slotList();
|
_slots = _e->cryptoki().slotList();
|
||||||
|
// look for login certificates ----------------------------------------
|
||||||
for (cryptoki::SlotList::iterator slot(_slots.begin());
|
for (cryptoki::SlotList::iterator slot(_slots.begin());
|
||||||
slot!=_slots.end(); ++slot) {
|
slot!=_slots.end(); ++slot) {
|
||||||
_session =
|
_session =
|
||||||
@@ -167,6 +194,7 @@ class SmartCardAuth: public QObject {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// get pin and install client certificate ------------------------------
|
||||||
if (!authcerts.isEmpty() || !allcerts.isEmpty()) {
|
if (!authcerts.isEmpty() || !allcerts.isEmpty()) {
|
||||||
CertInfo c(authcerts.size()?authcerts[0]:allcerts[0]);
|
CertInfo c(authcerts.size()?authcerts[0]:allcerts[0]);
|
||||||
PinEntry pinEntry(QSslCertificate(QByteArray(c.data.data(),
|
PinEntry pinEntry(QSslCertificate(QByteArray(c.data.data(),
|
||||||
@@ -174,7 +202,7 @@ class SmartCardAuth: public QObject {
|
|||||||
QSsl::Der), _parent);
|
QSsl::Der), _parent);
|
||||||
while (pinEntry.exec()==PinEntry::Accepted)
|
while (pinEntry.exec()==PinEntry::Accepted)
|
||||||
try {
|
try {
|
||||||
_session =
|
_session = // session login with pin
|
||||||
std::auto_ptr<cryptoki::Session>
|
std::auto_ptr<cryptoki::Session>
|
||||||
(new cryptoki::Session(*c.slot));
|
(new cryptoki::Session(*c.slot));
|
||||||
_session->login(pinEntry.pin().toStdString());
|
_session->login(pinEntry.pin().toStdString());
|
||||||
@@ -184,42 +212,7 @@ class SmartCardAuth: public QObject {
|
|||||||
c.id));
|
c.id));
|
||||||
if (keys.size()==1) {
|
if (keys.size()==1) {
|
||||||
OPENSSL_LOG("**** found one private key");
|
OPENSSL_LOG("**** found one private key");
|
||||||
e()->cert(keys[0],
|
_e->cert(keys[0], c.data); // install client cert
|
||||||
std::auto_ptr<openssl::X509>
|
|
||||||
(new openssl::X509(c.data)));
|
|
||||||
try { // new
|
|
||||||
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
|
||||||
QSslCertificate localcert(QByteArray(c.data.data(),
|
|
||||||
c.data.size()),
|
|
||||||
QSsl::Der);
|
|
||||||
sslConfig.setLocalCertificate(localcert);
|
|
||||||
assert(localcert.isValid());
|
|
||||||
|
|
||||||
QByteArray pem
|
|
||||||
("-----BEGIN RSA PRIVATE KEY-----\n"
|
|
||||||
"MIIBOwIBAAJBAMH2yqAGeVNPdgeZ2GoHo31m9aUxZ7QfK2"
|
|
||||||
"Go2qLTahLpQ3UL1C8G\n"
|
|
||||||
"LkuMS8SNK0ZGfRMalIpIhv6bW5l3kjogOncCAwEAAQJABV"
|
|
||||||
"GECtFCoGMsZFb2lSmy\n"
|
|
||||||
"dOzOzYHGSy0TnnDn1dEgNnZ8sIljElPtUzm9dyXs2P3ICL"
|
|
||||||
"1sOd7qjpzfJeyxknDL\n"
|
|
||||||
"AQIhAO5iKdLmhyuW+EDEH19vDs1Pmqs3/ZnT5UgUiJnTJq"
|
|
||||||
"z3AiEA0ExIfUOCnxq2\n"
|
|
||||||
"a3Z46KEivcr8JB2P9VqouBbVryiq/oECIQDj8bPCejMoiE"
|
|
||||||
"zMSX0iWWTTB9qC/KAg\n"
|
|
||||||
"FtF4skHIrXKfEwIgPCs86Uo+Ch2aQjKHvJMHSRHAgeI0Om"
|
|
||||||
"iEwiB+e0lhE4ECIQDd\n"
|
|
||||||
"IbUmHIXt6oHLJmoGFX46bCcfil5eE5FXfiaw7Q9iPw==\n"
|
|
||||||
"-----END RSA PRIVATE KEY-----\n");
|
|
||||||
|
|
||||||
QSslKey privkey(pem, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey);
|
|
||||||
e()->setupRsa((RSA*)privkey.handle());
|
|
||||||
assert(!privkey.isNull());
|
|
||||||
sslConfig.setPrivateKey(privkey);
|
|
||||||
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
|
||||||
} catch (const std::exception& e) {
|
|
||||||
OPENSSL_LOG("SETUP ERROR: "<<e.what());
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} catch (std::exception& x) {
|
} catch (std::exception& x) {
|
||||||
@@ -250,9 +243,12 @@ class SmartCardAuth: public QObject {
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
QWidget* _parent;
|
QWidget* _parent;
|
||||||
|
CryptokiEngine* _e;
|
||||||
|
openssl::RegisterEngine<CryptokiEngine> _reg;
|
||||||
cryptoki::SlotList _slots;
|
cryptoki::SlotList _slots;
|
||||||
std::auto_ptr<cryptoki::Session> _session;
|
std::auto_ptr<cryptoki::Session> _session;
|
||||||
QMutex _mutex;
|
QMutex _mutex;
|
||||||
|
//std::map<ssl_ctx_st*, QSslSocket*> sockets;
|
||||||
// std::list<std::string> _cacerts;
|
// std::list<std::string> _cacerts;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -236,98 +236,98 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="428"/>
|
<location filename="browser.hxx" line="433"/>
|
||||||
<source>Checking: %1</source>
|
<source>Checking: %1</source>
|
||||||
<oldsource>Opening: %1</oldsource>
|
<oldsource>Opening: %1</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="446"/>
|
<location filename="browser.hxx" line="451"/>
|
||||||
<source>Reading: %1</source>
|
<source>Reading: %1</source>
|
||||||
<oldsource>Reading: %1%</oldsource>
|
<oldsource>Reading: %1%</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="461"/>
|
<location filename="browser.hxx" line="466"/>
|
||||||
<source>Zoom: %1%</source>
|
<source>Zoom: %1%</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="448"/>
|
<location filename="browser.hxx" line="453"/>
|
||||||
<source>Illegal URL: %1</source>
|
<source>Illegal URL: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="510"/>
|
<location filename="browser.hxx" line="515"/>
|
||||||
<source>Print Document</source>
|
<source>Print Document</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="531"/>
|
<location filename="browser.hxx" line="536"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<oldsource>Back to %1 - %2</oldsource>
|
<oldsource>Back to %1 - %2</oldsource>
|
||||||
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="673"/>
|
<location filename="browser.hxx" line="678"/>
|
||||||
<source>Info: %1</source>
|
<source>Info: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>done.</source>
|
<source>done.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>page load error.</source>
|
<source>page load error.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="939"/>
|
<location filename="browser.hxx" line="944"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<comment>statusbar for hovered link %1=url</comment>
|
<comment>statusbar for hovered link %1=url</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="438"/>
|
<location filename="browser.hxx" line="443"/>
|
||||||
<source>Forbidden: %1</source>
|
<source>Forbidden: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="432"/>
|
<location filename="browser.hxx" line="437"/>
|
||||||
<source>SSL Not Supported</source>
|
<source>SSL Not Supported</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="433"/>
|
<location filename="browser.hxx" line="438"/>
|
||||||
<source>SSL is not supported on your system</source>
|
<source>SSL is not supported on your system</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="439"/>
|
<location filename="browser.hxx" line="444"/>
|
||||||
<source>Access Denied</source>
|
<source>Access Denied</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="440"/>
|
<location filename="browser.hxx" line="445"/>
|
||||||
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="550"/>
|
<location filename="browser.hxx" line="555"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="618"/>
|
<location filename="browser.hxx" line="623"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="619"/>
|
<location filename="browser.hxx" line="624"/>
|
||||||
<source>SwissSurfer %1 (%2)
|
<source>SwissSurfer %1 (%2)
|
||||||
|
|
||||||
%3
|
%3
|
||||||
@@ -341,22 +341,22 @@ Compiled: qt-%5</oldsource>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="668"/>
|
<location filename="browser.hxx" line="673"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1070"/>
|
<location filename="browser.hxx" line="1074"/>
|
||||||
<source>Save File As ...</source>
|
<source>Save File As ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1133"/>
|
<location filename="browser.hxx" line="1137"/>
|
||||||
<source>authentication required</source>
|
<source>authentication required</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1145"/>
|
<location filename="browser.hxx" line="1149"/>
|
||||||
<source>ssl error</source>
|
<source>ssl error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -582,12 +582,12 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QMessageBox</name>
|
<name>QMessageBox</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="228"/>
|
<location filename="smartcardauth.hxx" line="219"/>
|
||||||
<source>Wrong PIN</source>
|
<source>Wrong PIN</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="229"/>
|
<location filename="smartcardauth.hxx" line="220"/>
|
||||||
<source>Authentication failed, please try again.</source>
|
<source>Authentication failed, please try again.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -595,7 +595,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="249"/>
|
<location filename="main.cxx" line="290"/>
|
||||||
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
||||||
Options:
|
Options:
|
||||||
-h, --help show this help text
|
-h, --help show this help text
|
||||||
@@ -643,27 +643,27 @@ Environment:
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="294"/>
|
<location filename="main.cxx" line="335"/>
|
||||||
<source>Cannot read PEM certificate from file: %1</source>
|
<source>Cannot read PEM certificate from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="300"/>
|
<location filename="main.cxx" line="341"/>
|
||||||
<source>Read PEM certificates from file: %1</source>
|
<source>Read PEM certificates from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="307"/>
|
<location filename="main.cxx" line="348"/>
|
||||||
<source>Cannot read PEM RSA key from file: %1</source>
|
<source>Cannot read PEM RSA key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="312"/>
|
<location filename="main.cxx" line="353"/>
|
||||||
<source>Read private key from file: %1</source>
|
<source>Read private key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="323"/>
|
<location filename="main.cxx" line="364"/>
|
||||||
<source>Too few arguments.
|
<source>Too few arguments.
|
||||||
Try: %1 --help</source>
|
Try: %1 --help</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
|||||||
@@ -236,98 +236,98 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="428"/>
|
<location filename="browser.hxx" line="433"/>
|
||||||
<source>Checking: %1</source>
|
<source>Checking: %1</source>
|
||||||
<oldsource>Opening: %1</oldsource>
|
<oldsource>Opening: %1</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="446"/>
|
<location filename="browser.hxx" line="451"/>
|
||||||
<source>Reading: %1</source>
|
<source>Reading: %1</source>
|
||||||
<oldsource>Reading: %1%</oldsource>
|
<oldsource>Reading: %1%</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="461"/>
|
<location filename="browser.hxx" line="466"/>
|
||||||
<source>Zoom: %1%</source>
|
<source>Zoom: %1%</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="448"/>
|
<location filename="browser.hxx" line="453"/>
|
||||||
<source>Illegal URL: %1</source>
|
<source>Illegal URL: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="510"/>
|
<location filename="browser.hxx" line="515"/>
|
||||||
<source>Print Document</source>
|
<source>Print Document</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="531"/>
|
<location filename="browser.hxx" line="536"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<oldsource>Back to %1 - %2</oldsource>
|
<oldsource>Back to %1 - %2</oldsource>
|
||||||
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="673"/>
|
<location filename="browser.hxx" line="678"/>
|
||||||
<source>Info: %1</source>
|
<source>Info: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>done.</source>
|
<source>done.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>page load error.</source>
|
<source>page load error.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="939"/>
|
<location filename="browser.hxx" line="944"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<comment>statusbar for hovered link %1=url</comment>
|
<comment>statusbar for hovered link %1=url</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="438"/>
|
<location filename="browser.hxx" line="443"/>
|
||||||
<source>Forbidden: %1</source>
|
<source>Forbidden: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="432"/>
|
<location filename="browser.hxx" line="437"/>
|
||||||
<source>SSL Not Supported</source>
|
<source>SSL Not Supported</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="433"/>
|
<location filename="browser.hxx" line="438"/>
|
||||||
<source>SSL is not supported on your system</source>
|
<source>SSL is not supported on your system</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="439"/>
|
<location filename="browser.hxx" line="444"/>
|
||||||
<source>Access Denied</source>
|
<source>Access Denied</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="440"/>
|
<location filename="browser.hxx" line="445"/>
|
||||||
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="550"/>
|
<location filename="browser.hxx" line="555"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="618"/>
|
<location filename="browser.hxx" line="623"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="619"/>
|
<location filename="browser.hxx" line="624"/>
|
||||||
<source>SwissSurfer %1 (%2)
|
<source>SwissSurfer %1 (%2)
|
||||||
|
|
||||||
%3
|
%3
|
||||||
@@ -341,22 +341,22 @@ Compiled: qt-%5</oldsource>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="668"/>
|
<location filename="browser.hxx" line="673"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1070"/>
|
<location filename="browser.hxx" line="1074"/>
|
||||||
<source>Save File As ...</source>
|
<source>Save File As ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1133"/>
|
<location filename="browser.hxx" line="1137"/>
|
||||||
<source>authentication required</source>
|
<source>authentication required</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1145"/>
|
<location filename="browser.hxx" line="1149"/>
|
||||||
<source>ssl error</source>
|
<source>ssl error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -582,12 +582,12 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QMessageBox</name>
|
<name>QMessageBox</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="228"/>
|
<location filename="smartcardauth.hxx" line="219"/>
|
||||||
<source>Wrong PIN</source>
|
<source>Wrong PIN</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="229"/>
|
<location filename="smartcardauth.hxx" line="220"/>
|
||||||
<source>Authentication failed, please try again.</source>
|
<source>Authentication failed, please try again.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -595,7 +595,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="249"/>
|
<location filename="main.cxx" line="290"/>
|
||||||
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
||||||
Options:
|
Options:
|
||||||
-h, --help show this help text
|
-h, --help show this help text
|
||||||
@@ -643,27 +643,27 @@ Environment:
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="294"/>
|
<location filename="main.cxx" line="335"/>
|
||||||
<source>Cannot read PEM certificate from file: %1</source>
|
<source>Cannot read PEM certificate from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="300"/>
|
<location filename="main.cxx" line="341"/>
|
||||||
<source>Read PEM certificates from file: %1</source>
|
<source>Read PEM certificates from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="307"/>
|
<location filename="main.cxx" line="348"/>
|
||||||
<source>Cannot read PEM RSA key from file: %1</source>
|
<source>Cannot read PEM RSA key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="312"/>
|
<location filename="main.cxx" line="353"/>
|
||||||
<source>Read private key from file: %1</source>
|
<source>Read private key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="323"/>
|
<location filename="main.cxx" line="364"/>
|
||||||
<source>Too few arguments.
|
<source>Too few arguments.
|
||||||
Try: %1 --help</source>
|
Try: %1 --help</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
|||||||
@@ -236,98 +236,98 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="428"/>
|
<location filename="browser.hxx" line="433"/>
|
||||||
<source>Checking: %1</source>
|
<source>Checking: %1</source>
|
||||||
<oldsource>Opening: %1</oldsource>
|
<oldsource>Opening: %1</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="446"/>
|
<location filename="browser.hxx" line="451"/>
|
||||||
<source>Reading: %1</source>
|
<source>Reading: %1</source>
|
||||||
<oldsource>Reading: %1%</oldsource>
|
<oldsource>Reading: %1%</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="461"/>
|
<location filename="browser.hxx" line="466"/>
|
||||||
<source>Zoom: %1%</source>
|
<source>Zoom: %1%</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="448"/>
|
<location filename="browser.hxx" line="453"/>
|
||||||
<source>Illegal URL: %1</source>
|
<source>Illegal URL: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="510"/>
|
<location filename="browser.hxx" line="515"/>
|
||||||
<source>Print Document</source>
|
<source>Print Document</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="531"/>
|
<location filename="browser.hxx" line="536"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<oldsource>Back to %1 - %2</oldsource>
|
<oldsource>Back to %1 - %2</oldsource>
|
||||||
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="673"/>
|
<location filename="browser.hxx" line="678"/>
|
||||||
<source>Info: %1</source>
|
<source>Info: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>done.</source>
|
<source>done.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>page load error.</source>
|
<source>page load error.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="939"/>
|
<location filename="browser.hxx" line="944"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<comment>statusbar for hovered link %1=url</comment>
|
<comment>statusbar for hovered link %1=url</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="438"/>
|
<location filename="browser.hxx" line="443"/>
|
||||||
<source>Forbidden: %1</source>
|
<source>Forbidden: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="432"/>
|
<location filename="browser.hxx" line="437"/>
|
||||||
<source>SSL Not Supported</source>
|
<source>SSL Not Supported</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="433"/>
|
<location filename="browser.hxx" line="438"/>
|
||||||
<source>SSL is not supported on your system</source>
|
<source>SSL is not supported on your system</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="439"/>
|
<location filename="browser.hxx" line="444"/>
|
||||||
<source>Access Denied</source>
|
<source>Access Denied</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="440"/>
|
<location filename="browser.hxx" line="445"/>
|
||||||
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="550"/>
|
<location filename="browser.hxx" line="555"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="618"/>
|
<location filename="browser.hxx" line="623"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="619"/>
|
<location filename="browser.hxx" line="624"/>
|
||||||
<source>SwissSurfer %1 (%2)
|
<source>SwissSurfer %1 (%2)
|
||||||
|
|
||||||
%3
|
%3
|
||||||
@@ -341,22 +341,22 @@ Compiled: qt-%5</oldsource>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="668"/>
|
<location filename="browser.hxx" line="673"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1070"/>
|
<location filename="browser.hxx" line="1074"/>
|
||||||
<source>Save File As ...</source>
|
<source>Save File As ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1133"/>
|
<location filename="browser.hxx" line="1137"/>
|
||||||
<source>authentication required</source>
|
<source>authentication required</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1145"/>
|
<location filename="browser.hxx" line="1149"/>
|
||||||
<source>ssl error</source>
|
<source>ssl error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -582,12 +582,12 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QMessageBox</name>
|
<name>QMessageBox</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="228"/>
|
<location filename="smartcardauth.hxx" line="219"/>
|
||||||
<source>Wrong PIN</source>
|
<source>Wrong PIN</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="229"/>
|
<location filename="smartcardauth.hxx" line="220"/>
|
||||||
<source>Authentication failed, please try again.</source>
|
<source>Authentication failed, please try again.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -595,7 +595,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="249"/>
|
<location filename="main.cxx" line="290"/>
|
||||||
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
||||||
Options:
|
Options:
|
||||||
-h, --help show this help text
|
-h, --help show this help text
|
||||||
@@ -643,27 +643,27 @@ Environment:
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="294"/>
|
<location filename="main.cxx" line="335"/>
|
||||||
<source>Cannot read PEM certificate from file: %1</source>
|
<source>Cannot read PEM certificate from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="300"/>
|
<location filename="main.cxx" line="341"/>
|
||||||
<source>Read PEM certificates from file: %1</source>
|
<source>Read PEM certificates from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="307"/>
|
<location filename="main.cxx" line="348"/>
|
||||||
<source>Cannot read PEM RSA key from file: %1</source>
|
<source>Cannot read PEM RSA key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="312"/>
|
<location filename="main.cxx" line="353"/>
|
||||||
<source>Read private key from file: %1</source>
|
<source>Read private key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="323"/>
|
<location filename="main.cxx" line="364"/>
|
||||||
<source>Too few arguments.
|
<source>Too few arguments.
|
||||||
Try: %1 --help</source>
|
Try: %1 --help</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
|||||||
@@ -236,98 +236,98 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="428"/>
|
<location filename="browser.hxx" line="433"/>
|
||||||
<source>Checking: %1</source>
|
<source>Checking: %1</source>
|
||||||
<oldsource>Opening: %1</oldsource>
|
<oldsource>Opening: %1</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="446"/>
|
<location filename="browser.hxx" line="451"/>
|
||||||
<source>Reading: %1</source>
|
<source>Reading: %1</source>
|
||||||
<oldsource>Reading: %1%</oldsource>
|
<oldsource>Reading: %1%</oldsource>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="461"/>
|
<location filename="browser.hxx" line="466"/>
|
||||||
<source>Zoom: %1%</source>
|
<source>Zoom: %1%</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="448"/>
|
<location filename="browser.hxx" line="453"/>
|
||||||
<source>Illegal URL: %1</source>
|
<source>Illegal URL: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="510"/>
|
<location filename="browser.hxx" line="515"/>
|
||||||
<source>Print Document</source>
|
<source>Print Document</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="531"/>
|
<location filename="browser.hxx" line="536"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<oldsource>Back to %1 - %2</oldsource>
|
<oldsource>Back to %1 - %2</oldsource>
|
||||||
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
<comment>statusbar actionBack_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="673"/>
|
<location filename="browser.hxx" line="678"/>
|
||||||
<source>Info: %1</source>
|
<source>Info: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>done.</source>
|
<source>done.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="686"/>
|
<location filename="browser.hxx" line="691"/>
|
||||||
<source>page load error.</source>
|
<source>page load error.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="939"/>
|
<location filename="browser.hxx" line="944"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<comment>statusbar for hovered link %1=url</comment>
|
<comment>statusbar for hovered link %1=url</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="438"/>
|
<location filename="browser.hxx" line="443"/>
|
||||||
<source>Forbidden: %1</source>
|
<source>Forbidden: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="432"/>
|
<location filename="browser.hxx" line="437"/>
|
||||||
<source>SSL Not Supported</source>
|
<source>SSL Not Supported</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="433"/>
|
<location filename="browser.hxx" line="438"/>
|
||||||
<source>SSL is not supported on your system</source>
|
<source>SSL is not supported on your system</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="439"/>
|
<location filename="browser.hxx" line="444"/>
|
||||||
<source>Access Denied</source>
|
<source>Access Denied</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="440"/>
|
<location filename="browser.hxx" line="445"/>
|
||||||
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
<source><p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="550"/>
|
<location filename="browser.hxx" line="555"/>
|
||||||
<source>%1 - %2</source>
|
<source>%1 - %2</source>
|
||||||
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
<comment>statusbar actionForward_hovered %1=url %2=title</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="618"/>
|
<location filename="browser.hxx" line="623"/>
|
||||||
<source>About</source>
|
<source>About</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="619"/>
|
<location filename="browser.hxx" line="624"/>
|
||||||
<source>SwissSurfer %1 (%2)
|
<source>SwissSurfer %1 (%2)
|
||||||
|
|
||||||
%3
|
%3
|
||||||
@@ -341,22 +341,22 @@ Compiled: qt-%5</oldsource>
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="668"/>
|
<location filename="browser.hxx" line="673"/>
|
||||||
<source>%1</source>
|
<source>%1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1070"/>
|
<location filename="browser.hxx" line="1074"/>
|
||||||
<source>Save File As ...</source>
|
<source>Save File As ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1133"/>
|
<location filename="browser.hxx" line="1137"/>
|
||||||
<source>authentication required</source>
|
<source>authentication required</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="browser.hxx" line="1145"/>
|
<location filename="browser.hxx" line="1149"/>
|
||||||
<source>ssl error</source>
|
<source>ssl error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -582,12 +582,12 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QMessageBox</name>
|
<name>QMessageBox</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="228"/>
|
<location filename="smartcardauth.hxx" line="219"/>
|
||||||
<source>Wrong PIN</source>
|
<source>Wrong PIN</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="smartcardauth.hxx" line="229"/>
|
<location filename="smartcardauth.hxx" line="220"/>
|
||||||
<source>Authentication failed, please try again.</source>
|
<source>Authentication failed, please try again.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -595,7 +595,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<context>
|
<context>
|
||||||
<name>QObject</name>
|
<name>QObject</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="249"/>
|
<location filename="main.cxx" line="290"/>
|
||||||
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
<source>Usage: %1 [OPTIONS...] [<url> ...]
|
||||||
Options:
|
Options:
|
||||||
-h, --help show this help text
|
-h, --help show this help text
|
||||||
@@ -643,27 +643,27 @@ Environment:
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="294"/>
|
<location filename="main.cxx" line="335"/>
|
||||||
<source>Cannot read PEM certificate from file: %1</source>
|
<source>Cannot read PEM certificate from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="300"/>
|
<location filename="main.cxx" line="341"/>
|
||||||
<source>Read PEM certificates from file: %1</source>
|
<source>Read PEM certificates from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="307"/>
|
<location filename="main.cxx" line="348"/>
|
||||||
<source>Cannot read PEM RSA key from file: %1</source>
|
<source>Cannot read PEM RSA key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="312"/>
|
<location filename="main.cxx" line="353"/>
|
||||||
<source>Read private key from file: %1</source>
|
<source>Read private key from file: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="main.cxx" line="323"/>
|
<location filename="main.cxx" line="364"/>
|
||||||
<source>Too few arguments.
|
<source>Too few arguments.
|
||||||
Try: %1 --help</source>
|
Try: %1 --help</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
|||||||
Reference in New Issue
Block a user