#ifndef _SECURITY_PRIMARYKEY_H_
#define _SECURITY_PRIMARYKEY_H_
#include <Security/dlclient.h>
#include <Security/Keychains.h>
namespace Security
{
namespace KeychainCore
{
class PrimaryKeyImpl : public CssmDataContainer
{
public:
PrimaryKeyImpl(const CSSM_DATA &data);
PrimaryKeyImpl(const CssmClient::DbAttributes &primaryKeyAttrs);
~PrimaryKeyImpl() {}
void putUInt32(uint8 *&p, uint32 value);
uint32 getUInt32(uint8 *&p, uint32 &left) const;
CssmClient::DbCursor createCursor(const Keychain &keychain);
CSSM_DB_RECORDTYPE recordType() const;
private:
};
class PrimaryKey : public RefPointer<PrimaryKeyImpl>
{
public:
PrimaryKey() {}
PrimaryKey(PrimaryKeyImpl *impl) : RefPointer<PrimaryKeyImpl>(impl) {}
PrimaryKey(const CSSM_DATA &data)
: RefPointer<PrimaryKeyImpl>(new PrimaryKeyImpl(data)) {}
PrimaryKey(const CssmClient::DbAttributes &primaryKeyAttrs)
: RefPointer<PrimaryKeyImpl>(new PrimaryKeyImpl(primaryKeyAttrs)) {}
bool operator <(const PrimaryKey &other) const { return **this < *other; }
};
}
}
#endif // !_SECURITY_PRIMARYKEY_H_