/* * Copyright (c) 2000-2004 Apple Computer, Inc. All Rights Reserved. * * The contents of this file constitute Original Code as defined in and are * subject to the Apple Public Source License Version 1.2 (the 'License'). * You may not use this file except in compliance with the License. Please obtain * a copy of the License at http://www.apple.com/publicsource and read it before * using this file. * * This Original Code and all software distributed under the License are * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the * specific language governing rights and limitations under the License. */ // // mds_standard - standard-defined MDS record types // #include #include namespace Security { namespace CssmClient { // // CDSA Common relation (one record per module) // 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)"; } // // The all-record-types pseudo-record // AllDLRecords::AllDLRecords() : DLCommonFields(NULL) { } // // CDSA Generic record attributes // static const char * const genericAttributes[] = { NULL }; GenericRecord::GenericRecord() : DLCommonFields(genericAttributes) { } // // Apple "Generic Password" records // static const char * const genericPasswordAttributes[] = { // if you find yourself here, you should add the attributes and their functions NULL }; GenericPasswordRecord::GenericPasswordRecord() : DLCommonFields(genericPasswordAttributes) { } // // Common key attributes // 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]; } // // Certificate attributes // 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]; } // // UnlockReferral attributes // 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]; } } // end namespace CssmClient } // end namespace Security