]> git.saurik.com Git - apple/security.git/blob - Security/libsecurity_cdsa_client/lib/clclient.h
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_cdsa_client / lib / clclient.h
1 /*
2 * Copyright (c) 2000-2002,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 // clclient - client interface to CSSM CLs and their operations
21 //
22 #ifndef _H_CDSA_CLIENT_CLCLIENT
23 #define _H_CDSA_CLIENT_CLCLIENT 1
24
25 #include <security_cdsa_client/cssmclient.h>
26 #include <security_cdsa_utilities/cssmcert.h>
27
28
29 namespace Security {
30 namespace CssmClient {
31
32
33 //
34 // A CL attachment
35 //
36 class CLImpl : public AttachmentImpl
37 {
38 public:
39 CLImpl(const Guid &guid);
40 CLImpl(const Module &module);
41 virtual ~CLImpl();
42
43 };
44
45 class CL : public Attachment
46 {
47 public:
48 typedef CLImpl Impl;
49
50 explicit CL(Impl *impl) : Attachment(impl) {}
51 CL(const Guid &guid) : Attachment(new Impl(guid)) {}
52 CL(const Module &module) : Attachment(new Impl(module)) {}
53
54 Impl *operator ->() const { return &impl<Impl>(); }
55 Impl &operator *() const { return impl<Impl>(); }
56 };
57
58
59 //
60 // A self-building CertGroup.
61 // This is a CertGroup, but it's NOT A PODWRAPPER (it's larger).
62 //
63 class BuildCertGroup : public CertGroup {
64 public:
65 BuildCertGroup(CSSM_CERT_TYPE ctype, CSSM_CERT_ENCODING encoding,
66 CSSM_CERTGROUP_TYPE type, Allocator &alloc = Allocator::standard());
67
68 CssmVector<CSSM_DATA, CssmData> certificates;
69 };
70
71
72 } // end namespace CssmClient
73 } // end namespace Security
74
75 #endif // _H_CDSA_CLIENT_CLCLIENT