]> git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_cdsa_client/lib/dl_standard.h
Security-57336.1.9.tar.gz
[apple/security.git] / OSX / libsecurity_cdsa_client / lib / dl_standard.h
1 /*
2 * Copyright (c) 2004,2011,2014 Apple Inc. All Rights Reserved.
3 *
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
8 * using this file.
9 *
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
16 */
17
18
19 //
20 // dl_standard - standard-defined DL record types.
21 //
22 // These are the C++ record types corresponding to standard and Apple-defined
23 // DL relations. Note that not all standard fields are included; only those
24 // of particular interest to the implementation. Feel free to add field functions
25 // as needed.
26 //
27
28 #ifndef _H_CDSA_CLIENT_DL_STANDARD
29 #define _H_CDSA_CLIENT_DL_STANDARD
30
31 #include <security_cdsa_client/dlclient.h>
32
33
34 namespace Security {
35 namespace CssmClient {
36
37
38 //
39 // All CDSA standard DL schemas contain these fields
40 //
41 class DLCommonFields : public Record {
42 public:
43 DLCommonFields(const char * const * names);
44
45 string printName() const;
46 string alias() const;
47 };
48
49
50 //
51 // A record type for all records in a DL, with PrintName (only)
52 //
53 class AllDLRecords : public DLCommonFields {
54 public:
55 AllDLRecords();
56 };
57
58
59 //
60 // The CDSA-standard "generic record" table
61 //
62 class GenericRecord : public DLCommonFields {
63 public:
64 GenericRecord();
65 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_GENERIC;
66 };
67
68
69 //
70 // Generic password records (Apple specific)
71 //
72 class GenericPasswordRecord : public DLCommonFields {
73 public:
74 GenericPasswordRecord();
75 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_GENERIC_PASSWORD;
76 };
77
78
79 //
80 // Key records
81 //
82 class KeyRecord : public DLCommonFields {
83 public:
84 KeyRecord();
85 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_ALL_KEYS;
86
87 uint32 keyClass() const;
88 uint32 type() const;
89 uint32 size() const;
90 uint32 effectiveSize() const;
91 const CssmData &label() const;
92 const CssmData &applicationTag() const;
93
94 // boolean attributes for classification
95 bool isPermanent() const;
96 bool isPrivate() const;
97 bool isModifiable() const;
98 bool isSensitive() const;
99 bool wasAlwaysSensitive() const;
100 bool isExtractable() const;
101 bool wasNeverExtractable() const;
102 bool canEncrypt() const;
103 bool canDecrypt() const;
104 bool canDerive() const;
105 bool canSign() const;
106 bool canVerify() const;
107 bool canWrap() const;
108 bool canUnwrap() const;
109 };
110
111 class PrivateKeyRecord : public KeyRecord {
112 public:
113 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_PRIVATE_KEY;
114 };
115
116 class PublicKeyRecord : public KeyRecord {
117 public:
118 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_PUBLIC_KEY;
119 };
120
121 class SymmetricKeyRecord : public KeyRecord {
122 public:
123 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_SYMMETRIC_KEY;
124 };
125
126
127 //
128 // X509 Certificate records
129 //
130 class X509CertRecord : public DLCommonFields {
131 public:
132 X509CertRecord();
133 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_X509_CERTIFICATE;
134
135 CSSM_CERT_TYPE type() const;
136 CSSM_CERT_ENCODING encoding() const;
137 const CssmData &subject() const;
138 const CssmData &issuer() const;
139 const CssmData &serial() const;
140 const CssmData &subjectKeyIdentifier() const;
141 const CssmData &publicKeyHash() const;
142 };
143
144
145 //
146 // Unlock referral records
147 //
148 class UnlockReferralRecord : public DLCommonFields {
149 public:
150 UnlockReferralRecord();
151 static const CSSM_DB_RECORDTYPE recordType = CSSM_DL_DB_RECORD_UNLOCK_REFERRAL;
152
153 uint32 type() const;
154 string dbName() const;
155 const CssmData &dbNetname() const;
156 const Guid &dbGuid() const;
157 uint32 dbSSID() const;
158 uint32 dbSSType() const;
159 const CssmData &keyLabel() const;
160 const CssmData &keyApplicationTag() const;
161 };
162
163
164 } // end namespace CssmClient
165 } // end namespace Security
166
167 #endif // _H_CDSA_CLIENT_DL_STANDARD