/ OSX / libsecurity_cms / lib / CMSUtils.h
CMSUtils.h
 1  /*
 2   * Copyright (c) 2006,2011-2014 Apple 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   * CMSUtils.h - common utility routines for libCMS.
26   */
27   
28  #ifndef	_CMS_UTILS_H_
29  #define _CMS_UTILS_H_
30  
31  #include <Security/cssmtype.h>
32  #include <Security/cssmapple.h>		/* cssmPerror() */
33  #include <CoreFoundation/CoreFoundation.h>
34  
35  #ifdef __cplusplus
36  extern "C" {
37  #endif
38  
39  /*
40   * Copy a CSSM_DATA, mallocing the result.
41   */
42  void cmsCopyCmsData(
43  	const CSSM_DATA *src,
44  	CSSM_DATA *dst);
45  	
46  /* 
47   * Append a CF type, or the contents of an array, to another array.
48   * destination array will be created if necessary.
49   * If srcItemOrArray is not of the type specified in expectedType,
50   * errSecParam will be returned. 
51   */
52  OSStatus cmsAppendToArray(
53  	CFTypeRef srcItemOrArray,
54  	CFMutableArrayRef *dstArray,
55  	CFTypeID expectedType);
56  
57  /* 
58   * Munge an OSStatus returned from libsecurity_smime, which may well be an ASN.1 private
59   * error code, to a real OSStatus.
60   */
61  OSStatus cmsRtnToOSStatus(
62  	OSStatus smimeRtn,			// from libsecurity_smime
63  	OSStatus defaultRtn = 0);	// use this if we can't map smimeRtn
64  
65  #define CFRELEASE(cfr)	if(cfr != NULL) { CFRelease(cfr); }
66  
67  #include <security_utilities/simulatecrash_assert.h>
68  #define ASSERT(s) assert(s)
69  
70  #define CMS_DEBUG 0
71  #if	CMS_DEBUG
72  #define CSSM_PERROR(s, r)	cssmPerror(s, r)
73  #define dprintf(args...)	printf(args)
74  #else
75  #define CSSM_PERROR(s, r)
76  #define dprintf(args...)
77  #endif
78  
79  #ifdef __cplusplus
80  }
81  #endif
82  
83  #endif	/* _CMS_UTILS_H_ */
84