#include <security_cdsa_client/dl_standard.h>
#include <security_cdsa_client/dlquery.h>
namespace Security {
namespace CssmClient {
static const char * const commonAttributes[] = {
"PrintName",
"Alias",
NULL
};
DLCommonFields::DLCommonFields(const char * const * names)
: Record(commonAttributes)
{
addAttributes(names);
}
string DLCommonFields::printName() const { return mAttributes[0]; }
string DLCommonFields::alias() const
{ return mAttributes[1].size() ? string(mAttributes[1]) : "(no value)"; }
AllDLRecords::AllDLRecords()
: DLCommonFields(NULL)
{ }
static const char * const genericAttributes[] = {
NULL
};
GenericRecord::GenericRecord()
: DLCommonFields(genericAttributes)
{
}
static const char * const genericPasswordAttributes[] = {
NULL
};
GenericPasswordRecord::GenericPasswordRecord()
: DLCommonFields(genericPasswordAttributes)
{
}
static const char * const keyAttributes[] = {
"KeyClass",
"KeyType",
"KeySizeInBits",
"EffectiveKeySize",
"Label",
"ApplicationTag",
"Permanent",
"Private",
"Modifiable",
"Sensitive",
"AlwaysSensitive",
"Extractable",
"NeverExtractable",
"Encrypt",
"Decrypt",
"Derive",
"Sign",
"Verify",
"Wrap",
"Unwrap",
NULL
};
KeyRecord::KeyRecord()
: DLCommonFields(keyAttributes)
{
}
uint32 KeyRecord::keyClass() const { return mAttributes[2]; }
uint32 KeyRecord::type() const { return mAttributes[3]; }
uint32 KeyRecord::size() const { return mAttributes[4]; }
uint32 KeyRecord::effectiveSize() const { return mAttributes[5]; }
const CssmData &KeyRecord::label() const { return mAttributes[6]; }
const CssmData &KeyRecord::applicationTag() const { return mAttributes[7]; }
bool KeyRecord::isPermanent() const { return mAttributes[8]; }
bool KeyRecord::isPrivate() const { return mAttributes[9]; }
bool KeyRecord::isModifiable() const { return mAttributes[10]; }
bool KeyRecord::isSensitive() const { return mAttributes[11]; }
bool KeyRecord::wasAlwaysSensitive() const { return mAttributes[12]; }
bool KeyRecord::isExtractable() const { return mAttributes[13]; }
bool KeyRecord::wasNeverExtractable() const { return mAttributes[14]; }
bool KeyRecord::canEncrypt() const { return mAttributes[15]; }
bool KeyRecord::canDecrypt() const { return mAttributes[16]; }
bool KeyRecord::canDerive() const { return mAttributes[17]; }
bool KeyRecord::canSign() const { return mAttributes[18]; }
bool KeyRecord::canVerify() const { return mAttributes[19]; }
bool KeyRecord::canWrap() const { return mAttributes[20]; }
bool KeyRecord::canUnwrap() const { return mAttributes[21]; }
static const char * const certAttributes[] = {
"CertType",
"CertEncoding",
"Subject",
"Issuer",
"SerialNumber",
"SubjectKeyIdentifier",
"PublicKeyHash",
NULL
};
X509CertRecord::X509CertRecord()
: DLCommonFields(certAttributes)
{
}
CSSM_CERT_TYPE X509CertRecord::type() const { return mAttributes[2]; }
CSSM_CERT_ENCODING X509CertRecord::encoding() const { return mAttributes[3]; }
const CssmData &X509CertRecord::subject() const { return mAttributes[4]; }
const CssmData &X509CertRecord::issuer() const { return mAttributes[5]; }
const CssmData &X509CertRecord::serial() const { return mAttributes[6]; }
const CssmData &X509CertRecord::subjectKeyIdentifier() const { return mAttributes[7]; }
const CssmData &X509CertRecord::publicKeyHash() const { return mAttributes[8]; }
static const char * const unlockReferralAttributes[] = {
"Type",
"DbName",
"DbNetname",
"DbGuid",
"DbSSID",
"DbSSType",
"KeyLabel",
"KeyAppTag",
NULL
};
UnlockReferralRecord::UnlockReferralRecord()
: DLCommonFields(unlockReferralAttributes)
{
}
uint32 UnlockReferralRecord::type() const { return mAttributes[2]; }
string UnlockReferralRecord::dbName() const { return mAttributes[3]; }
const CssmData &UnlockReferralRecord::dbNetname() const { return mAttributes[4]; }
const Guid &UnlockReferralRecord::dbGuid() const { return mAttributes[5]; }
uint32 UnlockReferralRecord::dbSSID() const { return mAttributes[6]; }
uint32 UnlockReferralRecord::dbSSType() const { return mAttributes[7]; }
const CssmData &UnlockReferralRecord::keyLabel() const { return mAttributes[8]; }
const CssmData &UnlockReferralRecord::keyApplicationTag() const { return mAttributes[9]; }
} }