1/*
2 * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24
25/*
26 * AppleDotMacTPSession.h - .mac TP session functions.
27 *
28 * Created 4/7/2004 by Doug Mitchell.
29 */
30
31#ifndef _APPLE_DOT_MAC_TP_SESSION_H
32#define _APPLE_DOT_MAC_TP_SESSION_H
33
34#include <security_cdsa_plugin/TPsession.h>
35#include "dotMacTpRpcGlue.h"
36
37class AppleDotMacTPSession : public TPPluginSession {
38
39public:
40
41	AppleDotMacTPSession(
42		CSSM_MODULE_HANDLE theHandle,
43		CssmPlugin &plug,
44		const CSSM_VERSION &version,
45		uint32 subserviceId,
46		CSSM_SERVICE_TYPE subserviceType,
47		CSSM_ATTACH_FLAGS attachFlags,
48		const CSSM_UPCALLS &upcalls);
49
50	~AppleDotMacTPSession();
51
52	/* methods declared in TPabstractSession.h */
53	void CertCreateTemplate(CSSM_CL_HANDLE CLHandle,
54         uint32 NumberOfFields,
55         const CSSM_FIELD CertFields[],
56         CssmData &CertTemplate);
57	void CrlVerify(CSSM_CL_HANDLE CLHandle,
58         CSSM_CSP_HANDLE CSPHandle,
59         const CSSM_ENCODED_CRL &CrlToBeVerified,
60         const CSSM_CERTGROUP &SignerCertGroup,
61         const CSSM_TP_VERIFY_CONTEXT *VerifyContext,
62         CSSM_TP_VERIFY_CONTEXT_RESULT *RevokerVerifyResult);
63	void CertReclaimKey(const CSSM_CERTGROUP &CertGroup,
64         uint32 CertIndex,
65         CSSM_LONG_HANDLE KeyCacheHandle,
66         CSSM_CSP_HANDLE CSPHandle,
67         const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry);
68	void CertGroupVerify(CSSM_CL_HANDLE CLHandle,
69         CSSM_CSP_HANDLE CSPHandle,
70         const CSSM_CERTGROUP &CertGroupToBeVerified,
71         const CSSM_TP_VERIFY_CONTEXT *VerifyContext,
72         CSSM_TP_VERIFY_CONTEXT_RESULT_PTR VerifyContextResult);
73	void CertGroupConstruct(CSSM_CL_HANDLE CLHandle,
74         CSSM_CSP_HANDLE CSPHandle,
75         const CSSM_DL_DB_LIST &DBList,
76         const void *ConstructParams,
77         const CSSM_CERTGROUP &CertGroupFrag,
78         CSSM_CERTGROUP_PTR &CertGroup);
79	void CertSign(CSSM_CL_HANDLE CLHandle,
80         CSSM_CC_HANDLE CCHandle,
81         const CssmData &CertTemplateToBeSigned,
82         const CSSM_CERTGROUP &SignerCertGroup,
83         const CSSM_TP_VERIFY_CONTEXT *SignerVerifyContext,
84         CSSM_TP_VERIFY_CONTEXT_RESULT *SignerVerifyResult,
85         CssmData &SignedCert);
86	void TupleGroupToCertGroup(CSSM_CL_HANDLE CLHandle,
87         const CSSM_TUPLEGROUP &TupleGroup,
88         CSSM_CERTGROUP_PTR &CertTemplates);
89	void ReceiveConfirmation(const CssmData &ReferenceIdentifier,
90         CSSM_TP_CONFIRM_RESPONSE_PTR &Responses,
91         sint32 &ElapsedTime);
92	void PassThrough(CSSM_CL_HANDLE CLHandle,
93         CSSM_CC_HANDLE CCHandle,
94         const CSSM_DL_DB_LIST *DBList,
95         uint32 PassThroughId,
96         const void *InputParams,
97         void **OutputParams);
98	void CertRemoveFromCrlTemplate(CSSM_CL_HANDLE CLHandle,
99         CSSM_CSP_HANDLE CSPHandle,
100         const CssmData *OldCrlTemplate,
101         const CSSM_CERTGROUP &CertGroupToBeRemoved,
102         const CSSM_CERTGROUP &RevokerCertGroup,
103         const CSSM_TP_VERIFY_CONTEXT &RevokerVerifyContext,
104         CSSM_TP_VERIFY_CONTEXT_RESULT &RevokerVerifyResult,
105         CssmData &NewCrlTemplate);
106	void CertRevoke(CSSM_CL_HANDLE CLHandle,
107         CSSM_CSP_HANDLE CSPHandle,
108         const CssmData *OldCrlTemplate,
109         const CSSM_CERTGROUP &CertGroupToBeRevoked,
110         const CSSM_CERTGROUP &RevokerCertGroup,
111         const CSSM_TP_VERIFY_CONTEXT &RevokerVerifyContext,
112         CSSM_TP_VERIFY_CONTEXT_RESULT &RevokerVerifyResult,
113         CSSM_TP_CERTCHANGE_REASON Reason,
114         CssmData &NewCrlTemplate);
115	void CertReclaimAbort(CSSM_LONG_HANDLE KeyCacheHandle);
116	void CrlCreateTemplate(CSSM_CL_HANDLE CLHandle,
117         uint32 NumberOfFields,
118         const CSSM_FIELD CrlFields[],
119         CssmData &NewCrlTemplate);
120	void CertGroupToTupleGroup(CSSM_CL_HANDLE CLHandle,
121         const CSSM_CERTGROUP &CertGroup,
122         CSSM_TUPLEGROUP_PTR &TupleGroup);
123	void SubmitArchiveRequest(
124		DotMacArchiveType archiveType,					// OID preparsed
125		const CSSM_DATA &hostName,						// required
126		CSSM_TP_AUTHORITY_REQUEST_TYPE RequestType,
127		const CSSM_TP_REQUEST_SET &RequestInput,
128		const CSSM_TP_CALLERAUTH_CONTEXT *CallerAuthContext,
129		sint32 &EstimatedTime,
130		CssmData &ReferenceIdentifier);
131	void SubmitCredRequest(const CSSM_TP_AUTHORITY_ID *PreferredAuthority,
132         CSSM_TP_AUTHORITY_REQUEST_TYPE RequestType,
133         const CSSM_TP_REQUEST_SET &RequestInput,
134         const CSSM_TP_CALLERAUTH_CONTEXT *CallerAuthContext,
135         sint32 &EstimatedTime,
136         CssmData &ReferenceIdentifier);
137	void FormRequest(const CSSM_TP_AUTHORITY_ID *PreferredAuthority,
138         CSSM_TP_FORM_TYPE FormType,
139         CssmData &BlankForm);
140	void CrlSign(CSSM_CL_HANDLE CLHandle,
141         CSSM_CC_HANDLE CCHandle,
142         const CSSM_ENCODED_CRL &CrlToBeSigned,
143         const CSSM_CERTGROUP &SignerCertGroup,
144         const CSSM_TP_VERIFY_CONTEXT *SignerVerifyContext,
145         CSSM_TP_VERIFY_CONTEXT_RESULT *SignerVerifyResult,
146         CssmData &SignedCrl);
147	void CertGroupPrune(CSSM_CL_HANDLE CLHandle,
148         const CSSM_DL_DB_LIST &DBList,
149         const CSSM_CERTGROUP &OrderedCertGroup,
150         CSSM_CERTGROUP_PTR &PrunedCertGroup);
151	void ApplyCrlToDb(CSSM_CL_HANDLE CLHandle,
152         CSSM_CSP_HANDLE CSPHandle,
153         const CSSM_ENCODED_CRL &CrlToBeApplied,
154         const CSSM_CERTGROUP &SignerCertGroup,
155         const CSSM_TP_VERIFY_CONTEXT *ApplyCrlVerifyContext,
156         CSSM_TP_VERIFY_CONTEXT_RESULT &ApplyCrlVerifyResult);
157	void CertGetAllTemplateFields(CSSM_CL_HANDLE CLHandle,
158         const CssmData &CertTemplate,
159         uint32 &NumberOfFields,
160         CSSM_FIELD_PTR &CertFields);
161	void ConfirmCredResult(const CssmData &ReferenceIdentifier,
162         const CSSM_TP_CALLERAUTH_CONTEXT *CallerAuthCredentials,
163         const CSSM_TP_CONFIRM_RESPONSE &Responses,
164         const CSSM_TP_AUTHORITY_ID *PreferredAuthority);
165	void FormSubmit(CSSM_TP_FORM_TYPE FormType,
166         const CssmData &Form,
167         const CSSM_TP_AUTHORITY_ID *ClearanceAuthority,
168         const CSSM_TP_AUTHORITY_ID *RepresentedAuthority,
169         AccessCredentials *Credentials);
170	void RetrieveCredResult(const CssmData &ReferenceIdentifier,
171         const CSSM_TP_CALLERAUTH_CONTEXT *CallerAuthCredentials,
172         sint32 &EstimatedTime,
173         CSSM_BOOL &ConfirmationRequired,
174         CSSM_TP_RESULT_SET_PTR &RetrieveOutput);
175
176};
177
178#endif	/* _APPLE_DOT_MAC_TP_SESSION_H */
179