mirror of
https://github.com/QuasarApp/qca.git
synced 2025-05-14 11:29:33 +00:00
support passive persistence, start/stop events, optimize entry access
svn path=/trunk/kdesupport/qca/; revision=520909
This commit is contained in:
parent
79abeee5f9
commit
fdf7240cfd
@ -367,6 +367,8 @@ public:
|
||||
virtual KeyStoreEntry::Type type() const = 0;
|
||||
virtual QString id() const = 0;
|
||||
virtual QString name() const = 0;
|
||||
virtual QString storeId() const = 0;
|
||||
virtual QString storeName() const = 0;
|
||||
|
||||
virtual KeyBundle keyBundle() const;
|
||||
virtual Certificate certificate() const;
|
||||
@ -381,7 +383,9 @@ class QCA_EXPORT KeyStoreListContext : public QObject, public Provider::Context
|
||||
public:
|
||||
KeyStoreListContext(Provider *p) : Provider::Context(p, "keystorelist") {}
|
||||
|
||||
// enable/disable update events
|
||||
virtual void start() = 0;
|
||||
virtual void stop() = 0;
|
||||
|
||||
// returns a list of integer context ids (for keystores)
|
||||
virtual QList<int> keyStores() const = 0;
|
||||
@ -395,9 +399,16 @@ public:
|
||||
|
||||
virtual QList<KeyStoreEntry::Type> entryTypes(int id) const = 0;
|
||||
|
||||
// caller must delete
|
||||
// caller must delete any returned KeyStoreEntryContexts
|
||||
|
||||
virtual QList<KeyStoreEntryContext*> entryList(int id) const = 0;
|
||||
|
||||
// return 0 if no such entry
|
||||
virtual KeyStoreEntryContext *entry(int id, const QString &entryId) const;
|
||||
|
||||
// return 0 if the provider doesn't handle this type of storeId
|
||||
virtual KeyStoreEntryContext *entryPassive(const QString &storeId, const QString &entryId) const;
|
||||
|
||||
virtual bool writeEntry(int id, const KeyBundle &kb);
|
||||
virtual bool writeEntry(int id, const Certificate &cert);
|
||||
virtual bool writeEntry(int id, const CRL &crl);
|
||||
|
@ -596,6 +596,29 @@ bool KeyStoreListContext::isReadOnly(int) const
|
||||
return true;
|
||||
}
|
||||
|
||||
KeyStoreEntryContext *KeyStoreListContext::entry(int id, const QString &entryId) const
|
||||
{
|
||||
KeyStoreEntryContext *out = 0;
|
||||
QList<KeyStoreEntryContext*> list = entryList(id);
|
||||
for(int n = 0; n < list.count(); ++n)
|
||||
{
|
||||
if(list[n]->id() == entryId)
|
||||
{
|
||||
out = list.takeAt(n);
|
||||
break;
|
||||
}
|
||||
}
|
||||
qDeleteAll(list);
|
||||
return out;
|
||||
}
|
||||
|
||||
KeyStoreEntryContext *KeyStoreListContext::entryPassive(const QString &storeId, const QString &entryId) const
|
||||
{
|
||||
Q_UNUSED(storeId);
|
||||
Q_UNUSED(entryId);
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool KeyStoreListContext::writeEntry(int, const KeyBundle &)
|
||||
{
|
||||
return false;
|
||||
|
@ -712,18 +712,22 @@ class DefaultKeyStoreEntry : public KeyStoreEntryContext
|
||||
{
|
||||
public:
|
||||
KeyStoreEntry::Type item_type;
|
||||
QString item_id;
|
||||
QString item_id, _storeId, _storeName;
|
||||
Certificate _cert;
|
||||
CRL _crl;
|
||||
|
||||
DefaultKeyStoreEntry(const Certificate &cert, Provider *p) : KeyStoreEntryContext(p)
|
||||
DefaultKeyStoreEntry(const Certificate &cert, const QString &storeId, const QString &storeName, Provider *p) : KeyStoreEntryContext(p)
|
||||
{
|
||||
_storeId = storeId;
|
||||
_storeName = storeName;
|
||||
_cert = cert;
|
||||
item_type = KeyStoreEntry::TypeCertificate;
|
||||
}
|
||||
|
||||
DefaultKeyStoreEntry(const CRL &crl, Provider *p) : KeyStoreEntryContext(p)
|
||||
DefaultKeyStoreEntry(const CRL &crl, const QString &storeId, const QString &storeName, Provider *p) : KeyStoreEntryContext(p)
|
||||
{
|
||||
_storeId = storeId;
|
||||
_storeName = storeName;
|
||||
_crl = crl;
|
||||
item_type = KeyStoreEntry::TypeCRL;
|
||||
}
|
||||
@ -746,6 +750,11 @@ public:
|
||||
return item_type;
|
||||
}
|
||||
|
||||
virtual QString id() const
|
||||
{
|
||||
return item_id;
|
||||
}
|
||||
|
||||
virtual QString name() const
|
||||
{
|
||||
// use the common name, else orgname
|
||||
@ -760,9 +769,14 @@ public:
|
||||
return _crl.issuerInfo().value(CommonName);
|
||||
}
|
||||
|
||||
virtual QString id() const
|
||||
virtual QString storeId() const
|
||||
{
|
||||
return item_id;
|
||||
return _storeId;
|
||||
}
|
||||
|
||||
virtual QString storeName() const
|
||||
{
|
||||
return _storeName;
|
||||
}
|
||||
|
||||
virtual Certificate certificate() const
|
||||
@ -804,6 +818,11 @@ public:
|
||||
QTimer::singleShot(0, this, SLOT(do_ready()));
|
||||
}
|
||||
|
||||
virtual void stop()
|
||||
{
|
||||
// no need to do anything
|
||||
}
|
||||
|
||||
virtual QList<int> keyStores() const
|
||||
{
|
||||
QList<int> list;
|
||||
@ -848,13 +867,13 @@ public:
|
||||
int n;
|
||||
for(n = 0; n < certs.count(); ++n)
|
||||
{
|
||||
DefaultKeyStoreEntry *c = new DefaultKeyStoreEntry(certs[n], provider());
|
||||
DefaultKeyStoreEntry *c = new DefaultKeyStoreEntry(certs[n], storeId(0), name(0), provider());
|
||||
c->item_id = QString::number(n);
|
||||
out.append(c);
|
||||
}
|
||||
for(n = 0; n < crls.count(); ++n)
|
||||
{
|
||||
DefaultKeyStoreEntry *c = new DefaultKeyStoreEntry(crls[n], provider());
|
||||
DefaultKeyStoreEntry *c = new DefaultKeyStoreEntry(crls[n], storeId(0), name(0), provider());
|
||||
out.append(c);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user