/ OSX / sec / Security / SecFramework.h
SecFramework.h
 1  /*
 2   * Copyright (c) 2006-2007,2009-2010,2012-2013,2019 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 SecFramework
26  	The functions provided in SecFramework.h implement generic non API class
27      specific functionality.
28  */
29  
30  #ifndef _SECURITY_SECFRAMEWORK_H_
31  #define _SECURITY_SECFRAMEWORK_H_
32  
33  #include <CoreFoundation/CFString.h>
34  #include <CoreFoundation/CFURL.h>
35  #include <Security/SecAsn1Types.h>
36  
37  __BEGIN_DECLS
38  
39  #define SecString(key, comment)  CFSTR(key)
40  #define SecStringFromTable(key, tbl, comment)  CFSTR(key)
41  #define SecStringWithDefaultValue(key, tbl, bundle, value, comment)  CFSTR(key)
42  
43  CFStringRef SecFrameworkCopyLocalizedString(CFStringRef key,
44      CFStringRef tableName);
45  
46  /* Return the SHA1 digest of a chunk of data as newly allocated CFDataRef. */
47  CFDataRef SecSHA1DigestCreate(CFAllocatorRef allocator,
48  	const UInt8 *data, CFIndex length);
49  
50  /* Return the SHA256 digest of a chunk of data as newly allocated CFDataRef. */
51  CFDataRef SecSHA256DigestCreate(CFAllocatorRef allocator,
52      const UInt8 *data, CFIndex length);
53  
54  CFDataRef SecSHA256DigestCreateFromData(CFAllocatorRef allocator, CFDataRef data);
55  
56  /* Return the digest of a chunk of data as newly allocated CFDataRef, the
57     algorithm is selected based on the algorithm and params passed in. */
58  CFDataRef SecDigestCreate(CFAllocatorRef allocator,
59      const SecAsn1Oid *algorithm, const SecAsn1Item *params,
60  	const UInt8 *data, CFIndex length);
61  
62  // Wrapper to provide a CFErrorRef for legacy API.
63  OSStatus SecOSStatusWith(bool (^perform)(CFErrorRef *error));
64  
65  extern CFStringRef kSecFrameworkBundleID;
66  
67  /* Returns true if 'string' is a DNS host name as defined in RFC 1035, etc. */
68  bool SecFrameworkIsDNSName(CFStringRef string);
69  
70  /* Returns true if 'string' is an IPv4/IPv6 address per RFC 2373, 4632, etc. */
71  bool SecFrameworkIsIPAddress(CFStringRef string);
72  
73  /* Returns the canonical data representation of the IPv4 or IPv6 address
74     provided as input. NULL is returned if string is not a valid IP address. */
75  CFDataRef SecFrameworkCopyIPAddressData(CFStringRef string);
76  
77  __END_DECLS
78  
79  #endif /* !_SECURITY_SECFRAMEWORK_H_ */