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