2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
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
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.
20 // cssmcred - enhanced PodWrappers and construction aids for ACL credentials
22 #include <Security/cssmcred.h>
29 // The null credential constant.
31 static const CSSM_ACCESS_CREDENTIALS null_credentials
= { "" }; // and more nulls
33 const AccessCredentials
&AccessCredentials::null
=
34 *static_cast<const AccessCredentials
*>(&null_credentials
);
36 const AccessCredentials
&AccessCredentials::null
=
37 static_cast<const AccessCredentials
&>(null_credentials
);
42 // Scan a SampleGroup for samples with a given CSSM_SAMPLE_TYPE.
43 // Collect all matching samples into a list (which is cleared to begin with).
44 // Return true if any were found, false if none.
45 // Throw if any of the samples are obviously malformed.
47 bool SampleGroup::collect(CSSM_SAMPLE_TYPE sampleType
, list
<CssmSample
> &matches
) const
49 for (uint32 n
= 0; n
< length(); n
++) {
50 TypedList sample
= (*this)[n
];
52 if (sample
.type() == sampleType
) {
53 sample
.snip(); // skip sample type
54 matches
.push_back(sample
);
57 return !matches
.empty();
63 // AutoCredentials self-constructing credentials structure
65 AutoCredentials::AutoCredentials(CssmAllocator
&alloc
) : allocator(alloc
)
70 AutoCredentials::AutoCredentials(CssmAllocator
&alloc
, uint32 nSamples
) : allocator(alloc
)
75 void AutoCredentials::init()
82 CssmSample
&AutoCredentials::getSample(uint32 n
)
85 sampleArray
= allocator
.alloc
<CssmSample
>(sampleArray
, nSamples
= n
+ 1);
86 Samples
.Samples
= sampleArray
;
87 Samples
.NumberOfSamples
= nSamples
;
89 return sampleArray
[n
];
92 } // end namespace Security