4
0
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:
Justin Karneges 2006-03-21 07:55:54 +00:00
parent 79abeee5f9
commit fdf7240cfd
3 changed files with 61 additions and 8 deletions

@ -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);
}