From fbb31502853ddd2e8b2fe0cb570ffa11e429c56c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Fri, 4 Apr 2014 11:29:41 +0000 Subject: [PATCH] changed for new libpcscxx interface version 3; refs #176 --- src/browser.hxx | 19 ++- src/main.cxx | 28 ++-- src/pinentry.hxx | 14 +- src/qbrowserlib/downloadmanager.hxx | 2 +- src/qbrowserlib/log.cxx | 36 ++-- src/qbrowserlib/log.hxx | 56 ++++--- src/smartcardauth.hxx | 245 ++++------------------------ src/swissbrowser_de.ts | 116 +++++++------ src/swissbrowser_en.ts | 116 +++++++------ src/swissbrowser_fr.ts | 116 +++++++------ src/swissbrowser_it.ts | 116 +++++++------ 11 files changed, 381 insertions(+), 483 deletions(-) diff --git a/src/browser.hxx b/src/browser.hxx index b716954..d501d17 100644 --- a/src/browser.hxx +++ b/src/browser.hxx @@ -1,6 +1,12 @@ /*! @file @id $Id: browser.hxx 15 2010-06-03 14:17:27Z marc $ + + This product includes software developed by the OpenSSL Project + for use in the OpenSSL Toolkit (http://www.openssl.org/) + + This product includes cryptographic software written by + Eric Young (eay@cryptsoft.com) */ // 1 2 3 4 5 6 7 8 // 45678901234567890123456789012345678901234567890123456789012345678901234567890 @@ -86,7 +92,9 @@ class Browser: public QMainWindow, protected Ui::Browser { actionReload->setVisible(false); show(); try { - _networkManager.scAuth(new SmartCardAuth(actlib, this, login)); + _networkManager.scAuth + (new SmartCardAuth(suisseid::Scanner(actlib.toStdString()).scan(), + this, login)); } catch (const std::exception& x) { LOG<<"No SmartCard Support:"< certs(sslConfig.caCertificates()); for (QList::iterator cert(certs.begin()); cert!=certs.end(); ++cert) { - LOG<<"CERTIFICATE: " - <issuerInfo(QSslCertificate::Organization) - <issuerInfo(QSslCertificate::CommonName) - <subjectInfo(QSslCertificate::Organization) - <subjectInfo(QSslCertificate::CommonName); + LOG_FN<<"CERTIFICATE: " + <issuerInfo(QSslCertificate::Organization) + <issuerInfo(QSslCertificate::CommonName) + <subjectInfo(QSslCertificate::Organization) + <subjectInfo(QSslCertificate::CommonName); } QSslConfiguration::setDefaultConfiguration(sslConfig); //............................................................................ @@ -240,13 +240,13 @@ int main(int argv, char** argc) try { env()["PROXY_HOST"], env()["PROXY_PORT"].toInt())); else QNetworkProxyFactory::setUseSystemConfiguration(true); - LOG<<"Start - Proxy:" - <<(QNetworkProxy::applicationProxy().type()==QNetworkProxy::NoProxy - ? "No Proxy" - : (QNetworkProxy::applicationProxy().type() - ==QNetworkProxy::Socks5Proxy ? "socks" : "http")) - <<"Hostname"<setText(cert.serialNumber()); } } - PinEntry& tokeninfo(const cryptoki::TokenInfo& ti) { - _maxPinLen = ti.maxPinLen; - _minPinLen = ti.minPinLen; + PinEntry& tokeninfo(unsigned int min, unsigned int max) { + _maxPinLen = max; + _minPinLen = min; on__pin_textChanged(_pin->text()); return *this; } @@ -58,9 +58,7 @@ class PinEntry: public QDialog, public Ui::PinEntry { TRC; _pin->clear(); show(); - LOG<<"SSSSSSSSSTTTTTTTAAAAAAAAAAAAARRRRRRRRRRTTTTTTTTTT"; int res(_run.exec(QEventLoop::ExcludeSocketNotifiers)); - LOG<<"EEEEEEEEEEEEENNNNNNNNNNNNNNNNNNNNNDDDDDDDDDDDDDDEEEEEEEEEEEEE"; hide(); return res; } @@ -73,7 +71,6 @@ class PinEntry: public QDialog, public Ui::PinEntry { TRC; LOG<button(QDialogButtonBox::Ok) ->setEnabled((unsigned long)text.size()>=_minPinLen && (unsigned long)text.size()<=_maxPinLen); + if ((unsigned long)text.size()<_minPinLen) + _pin->setToolTip(tr("minimum PIN length: %1").arg(_minPinLen)); + if ((unsigned long)text.size()>_maxPinLen) + _pin->setToolTip(tr("maximum PIN length: %1").arg(_maxPinLen)); } protected: QString utfConv(const QString& txt) { diff --git a/src/qbrowserlib/downloadmanager.hxx b/src/qbrowserlib/downloadmanager.hxx index bda71c5..8e53b90 100644 --- a/src/qbrowserlib/downloadmanager.hxx +++ b/src/qbrowserlib/downloadmanager.hxx @@ -42,7 +42,7 @@ namespace qbrowserlib { } static QString networkError(QNetworkReply::NetworkError err) { - TRC_FN; LOG<append(*this, ss.str()); + _addr(addr), _name(name), _file(file), _line(line), _clean(true) { + if (!_debug) return; + if (_close) { + ++_level; + indent(_ss)<<"\\ "<<_name; + close(init(std::clog)<<_ss.str())<append(*this, _ss.str()); + _ss.str(std::string()); + } + indent(_ss)<<" → "; } Log::~Log() throw() { - if (!_debug || !_close) return; - std::stringstream ss; - indent(ss)<<"/ "<<_name; - close(init(std::clog)<append(*this, _ss.str()); + } + if (!_close) return; + _ss.str(std::string()); + indent(_ss)<<"/ "<<_name; + close(init(std::clog)<<_ss.str())<append(*this, ss.str()); + _dialog->append(*this, _ss.str()); } void Log::show(QWidget* p) { diff --git a/src/qbrowserlib/log.hxx b/src/qbrowserlib/log.hxx index 147784f..959333e 100644 --- a/src/qbrowserlib/log.hxx +++ b/src/qbrowserlib/log.hxx @@ -28,42 +28,43 @@ namespace qbrowserlib { #ifndef LOG - #define LOG \ - QBROWSERLIB_LOCAL_TRACER - #endif +#define LOG \ + qbrowserlib::Log(this, __PRETTY_FUNCTION__, __FILE__, __LINE__, false) +#endif + +#ifndef LOG_FN +#define LOG_FN \ + qbrowserlib::Log(0, __PRETTY_FUNCTION__, __FILE__, __LINE__, false) +#endif #ifndef TRC -#define TRC \ - qbrowserlib::Log QBROWSERLIB_LOCAL_TRACER \ - (this, __PRETTY_FUNCTION__, __FILE__, __LINE__) +#define TRC \ + qbrowserlib::Log __TRC_LOCAL(this, __PRETTY_FUNCTION__, __FILE__, __LINE__) #endif #ifndef TRC_FN -#define TRC_FN \ - qbrowserlib::Log QBROWSERLIB_LOCAL_TRACER \ - (0, __PRETTY_FUNCTION__, __FILE__, __LINE__) +#define TRC_FN \ + qbrowserlib::Log __TRC_LOCAL(0, __PRETTY_FUNCTION__, __FILE__, __LINE__) #endif -#define CRYPTOKI_LOG(X) \ - qbrowserlib::Log(0, __PRETTY_FUNCTION__, __FILE__, __LINE__, false)< Log& Log::operator<<(TYPE arg) { if (!_debug) return *this; - std::stringstream ss; - indent(ss)<<" → "<append(*this, ss.str()); + _clean = false; + _ss<<" "< -#include -#include +#include #include -#include #include @@ -29,8 +27,7 @@ class CryptokiEngine: public QObject, public openssl::Engine { public: - CryptokiEngine(std::string lib): - _cryptoki(lib) { + CryptokiEngine() { TRC; } @@ -41,10 +38,6 @@ class CryptokiEngine: public QObject, public openssl::Engine { return _privateKey.get(); } - cryptoki::Library& cryptoki() { - return _cryptoki; - } - void cert(cryptoki::Object& privateKey, const std::string& certVal) { TRC; _privateKey = std::auto_ptr @@ -110,12 +103,12 @@ class CryptokiEngine: public QObject, public openssl::Engine { virtual const char* id() { TRC; - return "CryptokiEngine_ID"; + return "SuisseID Engine ID"; } virtual const char* name() { TRC; - return "CryptokiEngine_NAME"; + return "SuisseID Engine NAME"; } virtual std::string rsaSign(const std::string& in, unsigned int type) try { @@ -139,7 +132,6 @@ class CryptokiEngine: public QObject, public openssl::Engine { private: - cryptoki::Library _cryptoki; std::auto_ptr _privateKey; }; @@ -149,8 +141,8 @@ class SmartCardAuth: public QObject { public: - SmartCardAuth(const QString& lib, QWidget* p=0, bool loginAtStart=true): - _parent(p), _e(new CryptokiEngine(lib.toStdString())), _reg(_e) { + SmartCardAuth(suisseid::Cards cards, QWidget* p=0, bool loginAtStart=true): + _parent(p), _e(new CryptokiEngine()), _reg(_e), _cards(cards) { TRC; if (loginAtStart) login(); assert(connect(_e, SIGNAL(certRequired()), SLOT(login()))); @@ -160,84 +152,37 @@ class SmartCardAuth: public QObject { void login(bool force=true) { TRC; + Lock lock; + LOG<<"got lock"; + if (!_e || (!force && *_e)) return; // no smartcard or already logged in + LOG<<"get new certificate"; try { - Lock lock; - LOG<<"got lock"; - if (!_e || (!force && *_e)) return; // no smartcard or already logged in - LOG<<"start login to smartcard"; - QList authcerts; - QList allcerts; - QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration()); - _slots = _e->cryptoki().slotList(); - LOG<<"number of slots"<<_slots.size(); - // look for login certificates ---------------------------------------- - for (cryptoki::SlotList::iterator slot(_slots.begin()); - slot!=_slots.end(); ++slot) { - cryptoki::Session session(*slot); - cryptoki::ObjectList certs(session.find - (cryptoki::Attribute(CKA_CLASS) - .from(CKO_CERTIFICATE))); - for (cryptoki::ObjectList::iterator cert(certs.begin()); - cert!=certs.end(); ++cert) { - cryptoki::Attribute label(cert->attribute(CKA_LABEL)); - cryptoki::Attribute id(cert->attribute(CKA_ID)); - LOG<<"**** FOUND CERTIFICATE: "<(CKO_PUBLIC_KEY), - id)); - LOG<<"**** with keys: "<attribute(CKA_VALUE).value); - if (!keys.size()) { // add CA-certificate - LOG<<"**** add to CA-certificates"; - } else { - LOG<<"**** user cert, check for authentictaion"; - if (label.value.find("auth")==0 || - label.value.find("Authentication")!=std::string::npos) { - LOG<<"**** it's our authentication cert"; - authcerts.push_back(CertInfo(data, slot, id)); - } else { - LOG<<"**** it's an unknown cert"; - allcerts.push_back(CertInfo(data, slot, id)); - } - } - } - } - // get pin and install client certificate ------------------------------ - LOG<<"00000000000000000000000000000000000000000000000000"; - if (!authcerts.isEmpty() || !allcerts.isEmpty()) { - LOG<<"11111111111111111111111111111111111111111111111111"; - CertInfo c(authcerts.size()?authcerts[0]:allcerts[0]); - PinEntry pinEntry(QSslCertificate(QByteArray(c.data.data(), - c.data.size()), + for (suisseid::Cards::iterator card(_cards.begin()); + card!=_cards.end(); ++card) { + suisseid::Certificate cert((*card)->authenticationCertificate()); + PinEntry pinEntry(QSslCertificate(QByteArray(cert.data(), + cert.size()), QSsl::Der), _parent); while (true) try { - LOG<<"******************************************1*******"; - pinEntry.tokeninfo(c.slot->tokeninfo()) - .retries(retries(c.slot->slotinfo().slotDescription)); - LOG<<"******************************************2*******"; - int res(pinEntry.myexec()); - LOG<<"******************************************3*******"; - if (res!=PinEntry::Accepted) return; - LOG<<"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + if (pinEntry + .tokeninfo((*card)->minimalPinLength(), + (*card)->maximalPinLength()) + .retries((*card)->pkcs15PinRetries()) + .myexec() + !=PinEntry::Accepted) + return; _session = // session login with pin - std::auto_ptr - (new cryptoki::Session(*c.slot)); - LOG<<"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"; + std::shared_ptr + (new cryptoki::Session((*card)->session())); _session->login(pinEntry.pin().toStdString()); - LOG<<"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"; cryptoki::ObjectList keys (_session->find(cryptoki::Attribute(CKA_CLASS) .from(CKO_PRIVATE_KEY), - c.id)); - LOG<<"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD"; + cert.id())); if (keys.size()==1) { - LOG<<"**** found one private key"; - _e->cert(keys[0], c.data); // install client cert - LOG<<"=================================================="; + _e->cert(keys[0], cert); // install client cert break; } - LOG<<"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; } catch (std::exception& x) { pinEntry.pin().clear(); LOG<<"**** ERROR"< reader(pcsc.reader(name)); -#ifndef Q_OS_MAC - pcsc::Connection::Reader::Transaction lock(reader); -#endif - // first try to read version info - if (reader->transmit(0x00, 0xA4, 0x08, 0x0C, "\x3f\x00\x56\x49", 4) - != std::string("\x90\x00", 2) || !reader) { - LOG<<"Select File failed"; - return -2; - } - std::string res(reader->transmit(0x00, 0xB0, 0x00, 0x00)); - if (res.substr(res.size()-2)!=std::string("\x90\x00", 2)) { - LOG<<"read error"; - return -2; - } - LOG<<"version text is: "<transmit(0x00, 0xA4, 0x00, 0x0C)) == 0x9000) { - int value(retCode(reader->transmit(0x00, 0x20, 0x00, 0x81))); - if ((value&0x63C0)==0x63C0) return value&0x0F; - } else { - LOG<<"**** ERROR in select MF while reading pin status"; - } - return -1; // locked - } catch (const std::exception& x) { - LOG<<"**** ERROR while reading pin status: "< reader(pcsc.reader(name)); -#ifndef Q_OS_MAC - pcsc::Connection::Reader::Transaction lock(reader); -#endif - // first try to read version info - if (reader->transmit(0x00, 0xA4, 0x08, 0x0C, "\x3f\x00\x56\x49", 4) - != std::string("\x90\x00", 2) || !reader) { - LOG<<"Select File failed"; - return -2; - } - std::string res(reader->transmit(0x00, 0xB0, 0x00, 0x00)); - if (res.substr(res.size()-2)!=std::string("\x90\x00", 2)) { - LOG<<"read error"; - return -2; - } - LOG<<"version text is: "<transmit(0x00, 0xA4, 0x00, 0x0C)) == 0x9000) { - int value(retCode(reader->transmit(0x00, 0x20, 0x00, 0x81))); - if ((value&0x63C0)==0x63C0) return value&0x0F; - } else { - LOG<<"**** ERROR in select MF while reading pin status"; - } - return -1; // locked - } catch (const std::exception& x) { - LOG<<"**** ERROR while reading pin status: "< reader(pcsc.reader(name)); -#ifndef Q_OS_MAC - pcsc::Connection::Reader::Transaction lock(reader); -#endif - // first try to read version info - if (reader->transmit(0x00, 0xA4, 0x08, 0x0C, "\x3f\x00\x56\x49", 4) - != std::string("\x90\x00", 2) || !reader) { - LOG<<"Select File failed"; - return -2; - } - std::string res(reader->transmit(0x00, 0xB0, 0x00, 0x00)); - if (res.substr(res.size()-2)!=std::string("\x90\x00", 2)) { - LOG<<"read error"; - return -2; - } - LOG<<"version text is: "<transmit(0x00, 0xA4, 0x00, 0x0C)) == 0x9000) { - int value(retCode(reader->transmit(0x00, 0x20, 0x00, 0x81))); - if ((value&0x63C0)==0x63C0) return value&0x0F; - } else { - LOG<<"**** ERROR in select MF while reading pin status"; - } - return -1; // locked - } catch (const std::exception& x) { - LOG<<"**** ERROR while reading pin status: "<=2) - return ((((unsigned int)(unsigned char)res[res.size()-2])*256) - +((unsigned int)(unsigned char)res[res.size()-1])); - else - return -1; - } - private: - struct CertInfo { - CertInfo(std::string d, cryptoki::SlotList::iterator s, - cryptoki::Attribute i): - data(d), slot(s), id(i) { - } - std::string data; - cryptoki::SlotList::iterator slot; - cryptoki::Attribute id; - }; - class Lock { public: Lock() { @@ -416,8 +227,8 @@ class SmartCardAuth: public QObject { QWidget* _parent; CryptokiEngine* _e; openssl::RegisterEngine _reg; - cryptoki::SlotList _slots; - std::auto_ptr _session; + suisseid::Cards _cards; + std::shared_ptr _session; }; diff --git a/src/swissbrowser_de.ts b/src/swissbrowser_de.ts index 05a6aae..12a33d3 100644 --- a/src/swissbrowser_de.ts +++ b/src/swissbrowser_de.ts @@ -33,22 +33,10 @@ Browser - + %1 - - - %8 -Version: %1 -Builddate: %2 -Libraries: -%3 -%4 -qt-%5 (%6) -openssl-%7 (%9) %10 - - &About @@ -105,70 +93,86 @@ openssl-%7 (%9) %10 - + <p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1. - + %1 - %2 statusbar actionBack_hovered %1=url %2=title - + %1 - %2 statusbar actionForward_hovered %1=url %2=title - - + + background-color: white neutral find - - + + background-color: #ADA text found - - + + background-color: #F77 text not found - + About - + + %8 +Version: %1 +Builddate: %2 +Libraries: +%3 +%4 +qt-%5 (%6) +openssl-%7 (%9) %10 + +This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) + +This product includes cryptographic software written by Eric Young (eay@cryptsoft.com) + + + + errors show error log - - + + background-color: #F77 invalid url - - + + background-color: white valid url - + Access Denied @@ -198,7 +202,7 @@ openssl-%7 (%9) %10 - + Checking: %1 @@ -294,7 +298,7 @@ openssl-%7 (%9) %10 - + Forbidden: %1 @@ -304,7 +308,7 @@ openssl-%7 (%9) %10 - + Illegal URL: %1 @@ -314,7 +318,7 @@ openssl-%7 (%9) %10 - + Info: %1 @@ -325,7 +329,7 @@ openssl-%7 (%9) %10 - + New Tab @@ -345,7 +349,7 @@ openssl-%7 (%9) %10 - + Print Document @@ -360,17 +364,17 @@ openssl-%7 (%9) %10 - + Reading: %1 - + SSL Not Supported - + SSL is not supported on your system @@ -410,7 +414,7 @@ openssl-%7 (%9) %10 - + Zoom: %1% @@ -420,7 +424,7 @@ openssl-%7 (%9) %10 - + authentication required @@ -435,7 +439,7 @@ openssl-%7 (%9) %10 - + done. @@ -445,35 +449,35 @@ openssl-%7 (%9) %10 - + gg - + [%1] - %2 - SwissBrowser (%3) main window title %1 = host name %2 = page title %3 = number of open tabs - + SwissBrowser window title with no tab - + %1 statusbar for hovered link %1=url - + handling content ... - + http://www.google.com/search?hl=%2&q=%1 @@ -483,7 +487,7 @@ openssl-%7 (%9) %10 - + opening new window @@ -493,7 +497,7 @@ openssl-%7 (%9) %10 - + ssl error @@ -720,16 +724,26 @@ openssl-%7 (%9) %10 there are %1 PIN attempts left + + + minimum PIN length: %1 + + + + + maximum PIN length: %1 + + QMessageBox - + Authentication failed, please try again. - + Wrong PIN diff --git a/src/swissbrowser_en.ts b/src/swissbrowser_en.ts index b90cd92..a59c1b0 100644 --- a/src/swissbrowser_en.ts +++ b/src/swissbrowser_en.ts @@ -33,22 +33,10 @@ Browser - + %1 - - - %8 -Version: %1 -Builddate: %2 -Libraries: -%3 -%4 -qt-%5 (%6) -openssl-%7 (%9) %10 - - &About @@ -105,70 +93,86 @@ openssl-%7 (%9) %10 - + <p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1. - + %1 - %2 statusbar actionBack_hovered %1=url %2=title - + %1 - %2 statusbar actionForward_hovered %1=url %2=title - - + + background-color: white neutral find - - + + background-color: #ADA text found - - + + background-color: #F77 text not found - + About - + + %8 +Version: %1 +Builddate: %2 +Libraries: +%3 +%4 +qt-%5 (%6) +openssl-%7 (%9) %10 + +This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) + +This product includes cryptographic software written by Eric Young (eay@cryptsoft.com) + + + + errors show error log - - + + background-color: #F77 invalid url - - + + background-color: white valid url - + Access Denied @@ -198,7 +202,7 @@ openssl-%7 (%9) %10 - + Checking: %1 @@ -294,7 +298,7 @@ openssl-%7 (%9) %10 - + Forbidden: %1 @@ -304,7 +308,7 @@ openssl-%7 (%9) %10 - + Illegal URL: %1 @@ -314,7 +318,7 @@ openssl-%7 (%9) %10 - + Info: %1 @@ -325,7 +329,7 @@ openssl-%7 (%9) %10 - + New Tab @@ -345,7 +349,7 @@ openssl-%7 (%9) %10 - + Print Document @@ -360,17 +364,17 @@ openssl-%7 (%9) %10 - + Reading: %1 - + SSL Not Supported - + SSL is not supported on your system @@ -410,7 +414,7 @@ openssl-%7 (%9) %10 - + Zoom: %1% @@ -420,7 +424,7 @@ openssl-%7 (%9) %10 - + authentication required @@ -435,7 +439,7 @@ openssl-%7 (%9) %10 - + done. @@ -445,35 +449,35 @@ openssl-%7 (%9) %10 - + gg - + [%1] - %2 - SwissBrowser (%3) main window title %1 = host name %2 = page title %3 = number of open tabs - + SwissBrowser window title with no tab - + %1 statusbar for hovered link %1=url - + handling content ... - + http://www.google.com/search?hl=%2&q=%1 @@ -483,7 +487,7 @@ openssl-%7 (%9) %10 - + opening new window @@ -493,7 +497,7 @@ openssl-%7 (%9) %10 - + ssl error @@ -720,16 +724,26 @@ openssl-%7 (%9) %10 there are %1 PIN attempts left + + + minimum PIN length: %1 + + + + + maximum PIN length: %1 + + QMessageBox - + Authentication failed, please try again. - + Wrong PIN diff --git a/src/swissbrowser_fr.ts b/src/swissbrowser_fr.ts index ced4490..0bc51d7 100644 --- a/src/swissbrowser_fr.ts +++ b/src/swissbrowser_fr.ts @@ -33,22 +33,10 @@ Browser - + %1 - - - %8 -Version: %1 -Builddate: %2 -Libraries: -%3 -%4 -qt-%5 (%6) -openssl-%7 (%9) %10 - - &About @@ -105,70 +93,86 @@ openssl-%7 (%9) %10 - + <p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1. - + %1 - %2 statusbar actionBack_hovered %1=url %2=title - + %1 - %2 statusbar actionForward_hovered %1=url %2=title - - + + background-color: white neutral find - - + + background-color: #ADA text found - - + + background-color: #F77 text not found - + About - + + %8 +Version: %1 +Builddate: %2 +Libraries: +%3 +%4 +qt-%5 (%6) +openssl-%7 (%9) %10 + +This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) + +This product includes cryptographic software written by Eric Young (eay@cryptsoft.com) + + + + errors show error log - - + + background-color: #F77 invalid url - - + + background-color: white valid url - + Access Denied @@ -198,7 +202,7 @@ openssl-%7 (%9) %10 - + Checking: %1 @@ -294,7 +298,7 @@ openssl-%7 (%9) %10 - + Forbidden: %1 @@ -304,7 +308,7 @@ openssl-%7 (%9) %10 - + Illegal URL: %1 @@ -314,7 +318,7 @@ openssl-%7 (%9) %10 - + Info: %1 @@ -325,7 +329,7 @@ openssl-%7 (%9) %10 - + New Tab @@ -345,7 +349,7 @@ openssl-%7 (%9) %10 - + Print Document @@ -360,17 +364,17 @@ openssl-%7 (%9) %10 - + Reading: %1 - + SSL Not Supported - + SSL is not supported on your system @@ -410,7 +414,7 @@ openssl-%7 (%9) %10 - + Zoom: %1% @@ -420,7 +424,7 @@ openssl-%7 (%9) %10 - + authentication required @@ -435,7 +439,7 @@ openssl-%7 (%9) %10 - + done. @@ -445,35 +449,35 @@ openssl-%7 (%9) %10 - + gg - + [%1] - %2 - SwissBrowser (%3) main window title %1 = host name %2 = page title %3 = number of open tabs - + SwissBrowser window title with no tab - + %1 statusbar for hovered link %1=url - + handling content ... - + http://www.google.com/search?hl=%2&q=%1 @@ -483,7 +487,7 @@ openssl-%7 (%9) %10 - + opening new window @@ -493,7 +497,7 @@ openssl-%7 (%9) %10 - + ssl error @@ -720,16 +724,26 @@ openssl-%7 (%9) %10 there are %1 PIN attempts left + + + minimum PIN length: %1 + + + + + maximum PIN length: %1 + + QMessageBox - + Authentication failed, please try again. - + Wrong PIN diff --git a/src/swissbrowser_it.ts b/src/swissbrowser_it.ts index fac1101..0b19ac3 100644 --- a/src/swissbrowser_it.ts +++ b/src/swissbrowser_it.ts @@ -33,22 +33,10 @@ Browser - + %1 - - - %8 -Version: %1 -Builddate: %2 -Libraries: -%3 -%4 -qt-%5 (%6) -openssl-%7 (%9) %10 - - &About @@ -105,70 +93,86 @@ openssl-%7 (%9) %10 - + <p>Access denied due to security considerations.</p><p>You are not allowed to connect to %1. - + %1 - %2 statusbar actionBack_hovered %1=url %2=title - + %1 - %2 statusbar actionForward_hovered %1=url %2=title - - + + background-color: white neutral find - - + + background-color: #ADA text found - - + + background-color: #F77 text not found - + About - + + %8 +Version: %1 +Builddate: %2 +Libraries: +%3 +%4 +qt-%5 (%6) +openssl-%7 (%9) %10 + +This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) + +This product includes cryptographic software written by Eric Young (eay@cryptsoft.com) + + + + errors show error log - - + + background-color: #F77 invalid url - - + + background-color: white valid url - + Access Denied @@ -198,7 +202,7 @@ openssl-%7 (%9) %10 - + Checking: %1 @@ -294,7 +298,7 @@ openssl-%7 (%9) %10 - + Forbidden: %1 @@ -304,7 +308,7 @@ openssl-%7 (%9) %10 - + Illegal URL: %1 @@ -314,7 +318,7 @@ openssl-%7 (%9) %10 - + Info: %1 @@ -325,7 +329,7 @@ openssl-%7 (%9) %10 - + New Tab @@ -345,7 +349,7 @@ openssl-%7 (%9) %10 - + Print Document @@ -360,17 +364,17 @@ openssl-%7 (%9) %10 - + Reading: %1 - + SSL Not Supported - + SSL is not supported on your system @@ -410,7 +414,7 @@ openssl-%7 (%9) %10 - + Zoom: %1% @@ -420,7 +424,7 @@ openssl-%7 (%9) %10 - + authentication required @@ -435,7 +439,7 @@ openssl-%7 (%9) %10 - + done. @@ -445,35 +449,35 @@ openssl-%7 (%9) %10 - + gg - + [%1] - %2 - SwissBrowser (%3) main window title %1 = host name %2 = page title %3 = number of open tabs - + SwissBrowser window title with no tab - + %1 statusbar for hovered link %1=url - + handling content ... - + http://www.google.com/search?hl=%2&q=%1 @@ -483,7 +487,7 @@ openssl-%7 (%9) %10 - + opening new window @@ -493,7 +497,7 @@ openssl-%7 (%9) %10 - + ssl error @@ -720,16 +724,26 @@ openssl-%7 (%9) %10 there are %1 PIN attempts left + + + minimum PIN length: %1 + + + + + maximum PIN length: %1 + + QMessageBox - + Authentication failed, please try again. - + Wrong PIN