Refuse signing with ECC token as long as it does not work

This commit is contained in:
Christian Hohnstaedt 2014-10-26 06:42:57 +01:00
parent baa45e7f62
commit ea832c6654
5 changed files with 11 additions and 6 deletions

View File

@ -40,12 +40,16 @@ pkcs11_lib::pkcs11_lib(QString f)
goto how_bad;
rv = p11->C_Initialize(NULL);
ign_openssl_error();
if (rv != CKR_OK && rv != CKR_CRYPTOKI_ALREADY_INITIALIZED)
pk11error("C_Initialize", rv);
ign_openssl_error();
return;
how_bad:
if (dl_handle)
lt_dlclose(dl_handle);
lt_dlexit();
throw errorEx(QObject::tr("Failed to open PKCS11 library: %1").
arg(file));

View File

@ -83,7 +83,7 @@ QString pki_key::length()
return QString("%1 bit").arg(EVP_PKEY_bits(key));
}
QString pki_key::getTypeString()
QString pki_key::getTypeString() const
{
QString type;
switch (EVP_PKEY_type(key->type)) {

View File

@ -51,7 +51,7 @@ class pki_key: public pki_base
return NULL;
}
virtual bool isToken();
virtual QString getTypeString(void);
virtual QString getTypeString(void) const;
virtual QString getIntNameWithType(void);
virtual QList<int> possibleHashNids()
{

View File

@ -585,7 +585,7 @@ bool pki_scard::isPubKey() const
return false;
}
QString pki_scard::getTypeString(void)
QString pki_scard::getTypeString(void) const
{
return tr("Token %1").arg(pki_key::getTypeString());
}
@ -613,9 +613,10 @@ EVP_PKEY *pki_scard::decryptKey() const
}
EVP_PKEY *pkey = p11->getPrivateKey(key, priv_objects[0]);
if (!pkey)
if (!pkey) {
delete p11;
throw errorEx(tr("Failed to initialize the key on the token"));
}
pki_openssl_error();
return pkey;
}

View File

@ -37,7 +37,7 @@ class pki_scard: public pki_key
void fromData(const unsigned char *p, db_header_t *head);
QByteArray toData();
bool isPubKey() const;
QString getTypeString(void);
QString getTypeString(void) const;
QString getManufacturer() const
{
return card_manufacturer;