]> git.saurik.com Git - apple/security.git/blob - OSX/libsecurity_mds/lib/MDSAttrStrings.h
Security-58286.200.222.tar.gz
[apple/security.git] / OSX / libsecurity_mds / lib / MDSAttrStrings.h
1 /*
2 * Copyright (c) 2000-2001,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 File: MDSAttrStrings.h
21
22 Contains: Static tables to map attribute names to numeric values.
23
24 Copyright (c) 2001,2011,2014 Apple Inc. All Rights Reserved.
25 */
26
27 #ifndef _MDS_ATTR_STRINGS_H_
28 #define _MDS_ATTR_STRINGS_H_ 1
29
30 #include <Security/cssmtype.h>
31
32 namespace Security
33 {
34
35 /*
36 * Each type of attribute has a name/value pair in a table of these:
37 */
38 typedef struct {
39 uint32 value;
40 const char *name;
41 } MDSNameValuePair;
42
43 /*
44 * Various tables.
45 */
46
47 /* attributes in Object and Common relations */
48 extern const MDSNameValuePair MDSServiceNames[]; // CSSM_SERVICE_MASK
49
50 /* CSP attributes */
51 extern const MDSNameValuePair MDSContextTypeNames[]; // CSSM_CONTEXT_TYPE
52 extern const MDSNameValuePair MDSAttributeTypeNames[]; // CSSM_ATTRIBUTE_TYPE
53 extern const MDSNameValuePair MDSPaddingNames[]; // CSSM_PADDING
54 extern const MDSNameValuePair MDSCspFlagsNames[]; // CSSM_CSP_FLAGS
55 extern const MDSNameValuePair MDSAlgorithmNames[]; // CSSM_ALGORITHMS
56 extern const MDSNameValuePair MDSEncryptModeNames[]; // CSSM_ENCRYPT_MODE
57 extern const MDSNameValuePair MDSCspTypeNames[]; // CSSM_CSPTYPE
58 extern const MDSNameValuePair MDSUseeTagsNames[]; // CSSM_USEE_TAG
59 extern const MDSNameValuePair MDSCspReaderFlagsNames[]; // CSSM_CSP_READER_FLAGS
60 extern const MDSNameValuePair MDSCspScFlagsNames[]; // CSSM_SC_FLAGS
61
62 /* CL attributes */
63 extern const MDSNameValuePair MDSCertTypeNames[]; // CSSM_CERT_TYPE
64 extern const MDSNameValuePair MDSCrlTypeNames[]; // CSSM_CRL_TYPE
65 extern const MDSNameValuePair MDSCertBundleTypeNames[]; // CSSM_CERT_BUNDLE_TYPE
66 extern const MDSNameValuePair MDSCertTemplateTypeNames[];
67 // CSSM_CL_TEMPLATE_TYPE
68
69 /* TP attributes */
70 /* CSSM_TP_AUTHORITY_REQUEST_CERTISSUE */
71 extern const MDSNameValuePair MDSTpAuthRequestNames[];
72 // CSSM_TP_AUTHORITY_REQUEST_CERTISSUE
73
74 /* DL attributes */
75 extern const MDSNameValuePair MDSDlTypeNames[]; // CSSM_DLTYPE
76 extern const MDSNameValuePair MDSDbConjunctiveNames[]; // CSSM_DB_CONJUNCTIVE
77 extern const MDSNameValuePair MDSDbOperatorNames[]; // CSSM_DB_OPERATOR
78 extern const MDSNameValuePair MDSNetProtocolNames[]; // CSSM_NET_PROTOCOL
79 extern const MDSNameValuePair MDSDbRetrievalModeNames[];// CSSM_DB_RETRIEVAL_MODES
80
81 /* misc. */
82 extern const MDSNameValuePair MDSAclSubjectTypeNames[]; // CSSM_ACL_SUBJECT_TYPE
83 extern const MDSNameValuePair MDSAclAuthTagNames[]; // CSSM_ACL_AUTHORIZATION_TAG
84 extern const MDSNameValuePair MDSSampleTypeNames[]; // CSSM_SAMPLE_TYPE
85 extern const MDSNameValuePair MDSKrPolicyTypeNames[]; // CSSM_KR_POLICY_TYPE
86
87 // extern const MDSNameValuePair MDSRecordTypeNames[]; // CSSM_DB_RECORDTYPE
88
89 /*
90 * Use this function to convert a name, e.g. "CSSM_ALGCLASS_SIGNATURE", to
91 * its associated value as a uint32. Caller specifies proper lookup table
92 * as an optimization to avoid grunging thru entire CDSA namespace on every
93 * lookup.
94 *
95 * If the specified name is not found, or if no MDSNameValuePair is specified,
96 * an attempt will be made to convert the incoming string to a number as if
97 * it were an ASCII hex (starts with "0x") or decimal (starts with any other numeric
98 * string) string. If that fails, CSSMERR_CSSM_MDS_ERROR is returned.
99 *
100 * Values can be prefixed with "<<" indicating that the indicated
101 * value is to be shifted 16 bits. Cf. CL Primary Relation, {Cert,Crl}TypeFormat.
102 * This applies to both numeric and string tokens.
103 */
104 CSSM_RETURN MDSAttrNameToValue(
105 const char *name,
106 const MDSNameValuePair *table,
107 uint32 &value); // RETURNED
108
109 } // end namespace Security
110
111 #endif /* _MDS_ATTR_STRINGS_H_ */