]> git.saurik.com Git - apple/security.git/blame - libsecurity_cdsa_client/lib/mds_standard.h
Security-55471.14.18.tar.gz
[apple/security.git] / libsecurity_cdsa_client / lib / mds_standard.h
CommitLineData
b1ab9ed8
A
1/*
2 * Copyright (c) 2000-2004 Apple Computer, 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// mds_standard - standard-defined MDS record types.
21//
22// These are the C++ record types corresponding to standard and Apple-defined
23// MDS 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_MDS_STANDARD
29#define _H_CDSA_CLIENT_MDS_STANDARD
30
31#include <security_cdsa_client/mdsclient.h>
32
33
34namespace Security {
35namespace MDSClient {
36
37
38//
39// The CDSA Common table (one record per module)
40//
41class Common : public Record {
42public:
43 Common();
44 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_COMMON_RECORDTYPE;
45
46 string moduleID() const;
47 string moduleName() const;
48 string path() const;
49 string description() const;
50 bool dynamic() const;
51 bool singleThreaded() const;
52 CSSM_SERVICE_MASK serviceMask() const;
53
54public:
55 //
56 // "Link in" a Common into another record, whose attributes()[0] is the ModuleID
57 //
58 class Carrier {
59 public:
60 virtual ~Carrier();
61
62 string moduleName() const { return common().moduleName(); }
63 string path() const { return common().path(); }
64 string description() const { return common().description(); }
65 bool dynamic() const { return common().dynamic(); }
66 bool singleThreaded() const { return common().singleThreaded(); }
67 CSSM_SERVICE_MASK serviceMask() const { return common().serviceMask(); }
68
69 private:
70 mutable RefPointer<Common> mCommon;
71
72 Common &common() const;
73 };
74};
75
76
77//
78// PrimaryRecord shapes the "common head" of all MDS primary relations
79//
80class PrimaryRecord : public Record, public Common::Carrier {
81public:
82 PrimaryRecord(const char * const * names);
83
84 string moduleID() const;
85 uint32 subserviceID() const;
86 string moduleName() const;
87 string productVersion() const;
88 string vendor() const;
89};
90
91
92//
93// The CSP Primary relation
94//
95class CSP : public PrimaryRecord {
96public:
97 CSP();
98 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CSP_PRIMARY_RECORDTYPE;
99
100 uint32 cspType() const;
101 CSSM_CSP_FLAGS cspFlags() const;
102};
103
104
105//
106// The CSP Capabilities relation
107//
108class CSPCapabilities : public Record, public Common::Carrier {
109public:
110 CSPCapabilities();
111 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CSP_CAPABILITY_RECORDTYPE;
112
113 string moduleID() const;
114 uint32 subserviceID() const;
115 uint32 contextType() const;
116 uint32 algorithm() const;
117 uint32 group() const;
118 uint32 attribute() const;
119 string description() const;
120};
121
122
123//
124// The CSP "smartcard token" relation
125//
126class SmartcardInfo : public Record, public Common::Carrier {
127public:
128 SmartcardInfo();
129 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CSP_SC_INFO_RECORDTYPE;
130
131 string moduleID() const;
132 uint32 subserviceID() const;
133 string description() const;
134 string vendor() const;
135 string version() const;
136 string firmware() const;
137 CSSM_SC_FLAGS flags() const;
138 CSSM_SC_FLAGS customFlags() const;
139 string serial() const;
140};
141
142
143//
144// The DL Primary relation
145//
146class DL : public PrimaryRecord {
147public:
148 DL();
149 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_DL_PRIMARY_RECORDTYPE;
150
151 uint32 dlType() const;
152 uint32 queryLimits() const;
153};
154
155
156//
157// The CL Primary relation
158//
159class CL : public PrimaryRecord {
160public:
161 CL();
162 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_CL_PRIMARY_RECORDTYPE;
163
164 uint32 certTypeFormat() const;
165 uint32 certType() const { return certTypeFormat() >> 16; }
166 uint32 certEncoding() const { return certTypeFormat() & 0xFFFF; }
167 uint32 crlTypeFormat() const;
168 uint32 crlType() const { return crlTypeFormat() >> 16; }
169 uint32 crlEncoding() const { return crlTypeFormat() & 0xFFFF; }
170};
171
172
173//
174// The TP Primary relation
175//
176class TP : public PrimaryRecord {
177public:
178 TP();
179 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_TP_PRIMARY_RECORDTYPE;
180
181 uint32 certTypeFormat() const;
182 uint32 certType() const { return certTypeFormat() >> 16; }
183 uint32 certEncoding() const { return certTypeFormat() & 0xFFFF; }
184};
185
186
187//
188// The TP Policy-OIDS relation
189//
190class PolicyOids : public Record {
191public:
192 PolicyOids();
193 static const CSSM_DB_RECORDTYPE recordType = MDS_CDSADIR_TP_OIDS_RECORDTYPE;
194
195 string moduleID() const;
196 uint32 subserviceID() const;
197 CssmData oid() const;
198 CssmData value() const;
199};
200
201
202} // end namespace MDSClient
203} // end namespace Security
204
205#endif // _H_CDSA_CLIENT_MDS_STANDARD