SecCmsDigestContext.h
1 /* 2 * Copyright (c) 2004-2018 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 @header SecCmsDigestContext.h 26 27 @availability 10.4 and later 28 @abstract Interfaces of the CMS implementation. 29 @discussion The functions here implement functions calculating digests. 30 */ 31 32 #ifndef _SECURITY_SECCMSDIGESTCONTEXT_H_ 33 #define _SECURITY_SECCMSDIGESTCONTEXT_H_ 1 34 35 #include <Security/SecCmsBase.h> 36 37 __BEGIN_DECLS 38 39 /*! 40 @function 41 @abstract Start digest calculation using all the digest algorithms in "digestalgs" in parallel. 42 */ 43 #pragma clang diagnostic push 44 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 45 extern SecCmsDigestContextRef 46 SecCmsDigestContextStartMultiple(SECAlgorithmID **digestalgs) 47 API_AVAILABLE(macos(10.4), ios(2.0), tvos(2.0), watchos(1.0)) API_UNAVAILABLE(macCatalyst); 48 #pragma clang diagnostic pop 49 50 /*! 51 @function 52 @abstract Feed more data into the digest machine. 53 */ 54 extern void 55 SecCmsDigestContextUpdate(SecCmsDigestContextRef cmsdigcx, const unsigned char *data, size_t len); 56 57 /*! 58 @function 59 @abstract Cancel digesting operation in progress and destroy it. 60 @discussion Cancel a DigestContext created with @link SecCmsDigestContextStartMultiple SecCmsDigestContextStartMultiple function@/link. 61 */ 62 extern void 63 SecCmsDigestContextCancel(SecCmsDigestContextRef cmsdigcx); 64 65 #if TARGET_OS_IPHONE 66 /*! 67 @function 68 @abstract Destroy a SecCmsDigestContextRef. 69 @discussion Cancel a DigestContext created with @link SecCmsDigestContextStartMultiple SecCmsDigestContextStartMultiple function@/link after it has been used in a @link SecCmsSignedDataSetDigestContext SecCmsSignedDataSetDigestContext function@/link. 70 */ 71 extern void 72 SecCmsDigestContextDestroy(SecCmsDigestContextRef cmsdigcx) 73 API_AVAILABLE(ios(2.0), tvos(2.0), watchos(1.0)) API_UNAVAILABLE(macCatalyst); 74 #endif // TARGET_OS_IPHONE 75 76 #if TARGET_OS_OSX 77 /*! 78 @function 79 @abstract Finish the digests and put them into an array of CSSM_DATAs (allocated on arena) 80 */ 81 #pragma clang diagnostic push 82 #pragma clang diagnostic ignored "-Wdeprecated-declarations" 83 extern OSStatus 84 SecCmsDigestContextFinishMultiple(SecCmsDigestContextRef cmsdigcx, SecArenaPoolRef arena, 85 CSSM_DATA_PTR **digestsp) 86 API_AVAILABLE(macos(10.4)) API_UNAVAILABLE(macCatalyst); 87 #pragma clang diagnostic pop 88 #endif // TARGET_OS_OSX 89 90 __END_DECLS 91 92 #endif /* _SECURITY_SECCMSDIGESTCONTEXT_H_ */