Browse Source

Remove modular headers. No longer required since 4.2

Rob Napier 5 years ago
parent
commit
460e0002a1

+ 17 - 1
Package.swift

@@ -1,8 +1,24 @@
+// swift-tools-version:5.0
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
 import PackageDescription
 
 let package = Package(
     name: "RNCryptor",
+    products: [
+        // Products define the executables and libraries produced by a package, and make them visible to other packages.
+        .library(
+            name: "RNCryptor",
+            targets: ["RNCryptor"]),
+    ],
     targets: [
-        Target(name: "RNCryptor", dependencies: ["Cryptor"])
+        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
+        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
+        .target(
+            name: "RNCryptor",
+            dependencies: []),
+        .testTarget(
+            name: "RNCryptorTests",
+            dependencies: ["RNCryptor"]),
     ]
 )

+ 1 - 1
RNCryptor.podspec

@@ -8,7 +8,7 @@ Pod::Spec.new do |s|
 	s.source = { :git => 'https://github.com/rnapier/RNCryptor.git', :tag => "#{s.version.to_s}" }
 	s.description = 'Implements a secure encryption format based on AES, PBKDF2, and HMAC.'
 	s.homepage = 'https://github.com/rnapier/RNCryptor'
-	s.source_files = 'Sources/RNCryptor/RNCryptor.swift', 'Sources/Cryptor/include/RNCryptor.h'
+	s.source_files = 'Sources/RNCryptor/RNCryptor.swift'
 	s.swift_version = '5.0'
 	s.ios.deployment_target = '8.0'
 	s.osx.deployment_target = '10.9'

+ 0 - 6
RNCryptor.xcodeproj/project.pbxproj

@@ -12,9 +12,7 @@
 		FB627FD91B2B7A1800C3A579 /* RNCryptor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB627FCE1B2B7A1700C3A579 /* RNCryptor.framework */; };
 		FB7F2FB41D17438400A6283E /* RNCryptorPerformance.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB7F2FAC1D17422300A6283E /* RNCryptorPerformance.swift */; };
 		FB7F2FBA1D17438400A6283E /* RNCryptor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB627FCE1B2B7A1700C3A579 /* RNCryptor.framework */; };
-		FBBA73881BC0892100400E65 /* RNCryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = FBBA73851BC0892100400E65 /* RNCryptor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		FBBA73891BC0892100400E65 /* RNCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBBA73861BC0892100400E65 /* RNCryptor.swift */; };
-		FBBA738B1BC0893200400E65 /* RNCryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = FBBA73851BC0892100400E65 /* RNCryptor.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		FBBA738C1BC0893500400E65 /* RNCryptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBBA73861BC0892100400E65 /* RNCryptor.swift */; };
 		FBBA73971BC089FA00400E65 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBBA738E1BC089FA00400E65 /* Data.swift */; };
 		FBBA73981BC089FA00400E65 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBBA738E1BC089FA00400E65 /* Data.swift */; };
@@ -59,7 +57,6 @@
 		FB7F2FAC1D17422300A6283E /* RNCryptorPerformance.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RNCryptorPerformance.swift; path = RNCryptorTests/RNCryptorPerformance.swift; sourceTree = "<group>"; };
 		FB7F2FBF1D17438400A6283E /* RNCryptorPerfTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNCryptorPerfTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		FBBA73841BC0892100400E65 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		FBBA73851BC0892100400E65 /* RNCryptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCryptor.h; path = Sources/Cryptor/include/RNCryptor.h; sourceTree = "<group>"; };
 		FBBA73861BC0892100400E65 /* RNCryptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RNCryptor.swift; path = Sources/RNCryptor/RNCryptor.swift; sourceTree = "<group>"; };
 		FBBA738E1BC089FA00400E65 /* Data.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Data.swift; path = RNCryptorTests/Data.swift; sourceTree = "<group>"; };
 		FBBA73911BC089FA00400E65 /* GenVectorTests */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = GenVectorTests; path = RNCryptorTests/GenVectorTests; sourceTree = "<group>"; };
@@ -128,7 +125,6 @@
 				FBC30B6E1BD937A300D03947 /* CHANGELOG.md */,
 				FB45A37E1BBB713B00265FD1 /* README.md */,
 				FBBA73861BC0892100400E65 /* RNCryptor.swift */,
-				FBBA73851BC0892100400E65 /* RNCryptor.h */,
 				FBBA73841BC0892100400E65 /* Info.plist */,
 				FBBA738D1BC089FA00400E65 /* Tests */,
 				FB627FCF1B2B7A1700C3A579 /* Products */,
@@ -177,7 +173,6 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				FBBA73881BC0892100400E65 /* RNCryptor.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -185,7 +180,6 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				FBBA738B1BC0893200400E65 /* RNCryptor.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 0 - 4
Sources/Cryptor/Cryptor.c

@@ -1,4 +0,0 @@
-#import "include/RNCryptor.h"
-
-// The swift package manager requires that there be a source code file
-

+ 0 - 1537
Sources/Cryptor/include/RNCryptor.h

@@ -1,1537 +0,0 @@
-//
-//  RNCryptor.h
-//
-//  Copyright © 2015 Rob Napier. All rights reserved.
-//
-//  This code is licensed under the MIT License:
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a
-//  copy of this software and associated documentation files (the "Software"),
-//  to deal in the Software without restriction, including without limitation
-//  the rights to use, copy, modify, merge, publish, distribute, sublicense,
-//  and/or sell copies of the Software, and to permit persons to whom the
-//  Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in
-//  all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-//  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
-//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-//  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-//  DEALINGS IN THE SOFTWARE.
-//
-
-//
-//  CommonCryptoError.h
-//  CommonCrypto
-//
-//  Created by Richard Murphy on 4/15/14.
-//  Copyright (c) 2014 Platform Security. All rights reserved.
-//
-
-#ifndef CommonCrypto_CommonCryptoError_h
-#define CommonCrypto_CommonCryptoError_h
-
-/*
- * Copyright (c) 2014 Apple Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-#include <stdint.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-    /*!
-     @enum       CCCryptorStatus
-     @abstract   Return values from CommonCryptor operations.
-
-     @constant   kCCSuccess          Operation completed normally.
-     @constant   kCCParamError       Illegal parameter value.
-     @constant   kCCBufferTooSmall   Insufficent buffer provided for specified
-     operation.
-     @constant   kCCMemoryFailure    Memory allocation failure.
-     @constant   kCCAlignmentError   Input size was not aligned properly.
-     @constant   kCCDecodeError      Input data did not decode or decrypt
-     properly.
-     @constant   kCCUnimplemented    Function not implemented for the current
-     algorithm.
-     */
-    enum {
-        kCCSuccess          = 0,
-        kCCParamError       = -4300,
-        kCCBufferTooSmall   = -4301,
-        kCCMemoryFailure    = -4302,
-        kCCAlignmentError   = -4303,
-        kCCDecodeError      = -4304,
-        kCCUnimplemented    = -4305,
-        kCCOverflow         = -4306,
-        kCCRNGFailure       = -4307,
-    };
-    typedef int32_t CCStatus;
-    typedef int32_t CCCryptorStatus;
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
-
-
-/*
- * Copyright (c) 2006-2010 Apple, Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-/*!
- @header     CommonCryptor.h
- @abstract   Generic interface for symmetric encryption.
-
- @discussion This interface provides access to a number of symmetric
- encryption algorithms. Symmetric encryption algorithms come
- in two "flavors" -  block ciphers, and stream ciphers. Block
- ciphers process data (while both encrypting and decrypting)
- in discrete chunks of  data called blocks; stream ciphers
- operate on arbitrary sized data.
-
- The object declared in this interface, CCCryptor, provides
- access to both block ciphers and stream ciphers with the same
- API; however some options are available for block ciphers that
- do not apply to stream ciphers.
-
- The general operation of a CCCryptor is: initialize it
- with raw key data and other optional fields with
- CCCryptorCreate(); process input data via one or more calls to
- CCCryptorUpdate(), each of which may result in output data
- being written to caller-supplied memory; and obtain possible
- remaining output data with CCCryptorFinal(). The CCCryptor is
- disposed of via CCCryptorRelease(), or it can be reused (with
- the same key data as provided to CCCryptorCreate()) by calling
- CCCryptorReset().
-
- CCCryptors can be dynamically allocated by this module, or
- their memory can be allocated by the caller. See discussion for
- CCCryptorCreate() and CCCryptorCreateFromData() for information
- on CCCryptor allocation.
-
- One option for block ciphers is padding, as defined in PKCS7;
- when padding is enabled, the total amount of data encrypted
- does not have to be an even multiple of the block size, and
- the actual length of plaintext is calculated during decryption.
-
- Another option for block ciphers is Cipher Block Chaining, known
- as CBC mode. When using CBC mode, an Initialization Vector (IV)
- is provided along with the key when starting an encrypt
- or decrypt operation. If CBC mode is selected and no IV is
- provided, an IV of all zeroes will be used.
-
- CCCryptor also implements block bufferring, so that individual
- calls to CCCryptorUpdate() do not have to provide data whose
- length is aligned to the block size. (If padding is disabled,
- encrypting with block ciphers does require that the *total*
- length of data input to CCCryptorUpdate() call(s) be aligned
- to the block size.)
-
- A given CCCryptor can only be used by one thread at a time;
- multiple threads can use safely different CCCryptors at the
- same time.
- */
-
-#ifndef _CC_COMMON_CRYPTOR_
-#define _CC_COMMON_CRYPTOR_
-
-#include <stdbool.h>
-#include <stdint.h>
-#ifndef KERNEL
-#include <stddef.h>
-#endif /* KERNEL */
-#include <CoreFoundation/CFAvailability.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    /*!
-     @typedef    CCCryptorRef
-     @abstract   Opaque reference to a CCCryptor object.
-     */
-    typedef struct _CCCryptor *CCCryptorRef;
-
-
-    /*!
-     @enum       CCOperation
-     @abstract   Operations that an CCCryptor can perform.
-
-     @constant   kCCEncrypt  Symmetric encryption.
-     @constant   kCCDecrypt  Symmetric decryption.
-     */
-    enum {
-        kCCEncrypt = 0,
-        kCCDecrypt,
-    };
-    typedef uint32_t CCOperation;
-
-    /*!
-     @enum       CCAlgorithm
-     @abstract   Encryption algorithms implemented by this module.
-
-     @constant   kCCAlgorithmAES128  Advanced Encryption Standard, 128-bit block
-     This is kept for historical reasons.  It's
-     preferred now to use kCCAlgorithmAES since
-     128-bit blocks are part of the standard.
-     @constant   kCCAlgorithmAES     Advanced Encryption Standard, 128-bit block
-     @constant   kCCAlgorithmDES     Data Encryption Standard
-     @constant   kCCAlgorithm3DES    Triple-DES, three key, EDE configuration
-     @constant   kCCAlgorithmCAST    CAST
-     @constant   kCCAlgorithmRC4     RC4 stream cipher
-     @constant   kCCAlgorithmBlowfish    Blowfish block cipher
-     */
-    enum {
-        kCCAlgorithmAES128 = 0,
-        kCCAlgorithmAES = 0,
-        kCCAlgorithmDES,
-        kCCAlgorithm3DES,
-        kCCAlgorithmCAST,
-        kCCAlgorithmRC4,
-        kCCAlgorithmRC2,
-        kCCAlgorithmBlowfish
-    };
-    typedef uint32_t CCAlgorithm;
-
-    /*!
-     @enum       CCOptions
-     @abstract   Options flags, passed to CCCryptorCreate().
-
-     @constant   kCCOptionPKCS7Padding   Perform PKCS7 padding.
-     @constant   kCCOptionECBMode        Electronic Code Book Mode.
-     Default is CBC.
-     */
-    enum {
-        /* options for block ciphers */
-        kCCOptionPKCS7Padding   = 0x0001,
-        kCCOptionECBMode        = 0x0002
-        /* stream ciphers currently have no options */
-    };
-    typedef uint32_t CCOptions;
-
-    /*!
-     @enum           Key sizes
-
-     @discussion     Key sizes, in bytes, for supported algorithms.  Use these
-     constants to select any keysize variants you wish to use
-     for algorithms that support them (ie AES-128, AES-192, AES-256)
-
-     @constant kCCKeySizeAES128      128 bit AES key size.
-     @constant kCCKeySizeAES192      192 bit AES key size.
-     @constant kCCKeySizeAES256      256 bit AES key size.
-     @constant kCCKeySizeDES         DES key size.
-     @constant kCCKeySize3DES        Triple DES key size.
-     @constant kCCKeySizeMinCAST     CAST minimum key size.
-     @constant kCCKeySizeMaxCAST     CAST maximum key size.
-     @constant kCCKeySizeMinRC4      RC4 minimum key size.
-     @constant kCCKeySizeMaxRC4      RC4 maximum key size.
-
-     @discussion     DES and TripleDES have fixed key sizes.
-     AES has three discrete key sizes.
-     CAST and RC4 have variable key sizes.
-     */
-    enum {
-        kCCKeySizeAES128          = 16,
-        kCCKeySizeAES192          = 24,
-        kCCKeySizeAES256          = 32,
-        kCCKeySizeDES             = 8,
-        kCCKeySize3DES            = 24,
-        kCCKeySizeMinCAST         = 5,
-        kCCKeySizeMaxCAST         = 16,
-        kCCKeySizeMinRC4          = 1,
-        kCCKeySizeMaxRC4          = 512,
-        kCCKeySizeMinRC2          = 1,
-        kCCKeySizeMaxRC2          = 128,
-        kCCKeySizeMinBlowfish     = 8,
-        kCCKeySizeMaxBlowfish     = 56,
-    };
-
-    /*!
-     @enum           Block sizes
-
-     @discussion     Block sizes, in bytes, for supported algorithms.
-
-     @constant kCCBlockSizeAES128    AES block size (currently, only 128-bit
-     blocks are supported).
-     @constant kCCBlockSizeDES       DES block size.
-     @constant kCCBlockSize3DES      Triple DES block size.
-     @constant kCCBlockSizeCAST      CAST block size.
-     */
-    enum {
-        /* AES */
-        kCCBlockSizeAES128        = 16,
-        /* DES */
-        kCCBlockSizeDES           = 8,
-        /* 3DES */
-        kCCBlockSize3DES          = 8,
-        /* CAST */
-        kCCBlockSizeCAST          = 8,
-        kCCBlockSizeRC2           = 8,
-        kCCBlockSizeBlowfish      = 8,
-    };
-
-    /*!
-     @enum       Minimum context sizes
-     @discussion Minimum context sizes, for caller-allocated CCCryptorRefs.
-     To minimize dynamic allocation memory, a caller can create
-     a CCCryptorRef by passing caller-supplied memory to the
-     CCCryptorCreateFromData() function.
-
-     These constants define the minimum amount of memory, in
-     bytes, needed for CCCryptorRefs for each supported algorithm.
-
-     Note: these constants are valid for the current version of
-     this library; they may change in subsequent releases, so
-     applications wishing to allocate their own memory for use
-     in creating CCCryptorRefs must be prepared to deal with
-     a kCCBufferTooSmall return from CCCryptorCreateFromData().
-     See discussion for the CCCryptorCreateFromData() function.
-
-     @constant kCCContextSizeAES128 - Minimum context size for kCCAlgorithmAES128.
-     @constant kCCContextSizeDES    - Minimum context size for kCCAlgorithmDES.
-     @constant kCCContextSize3DES   - Minimum context size for kCCAlgorithm3DES.
-     @constant kCCContextSizeCAST   - Minimum context size for kCCAlgorithmCAST.
-     @constant kCCContextSizeRC4    - Minimum context size for kCCAlgorithmRC4.
-     */
-
-    enum {
-        kCCContextSizeAES128	= 404,
-        kCCContextSizeDES		= 240,
-        kCCContextSize3DES		= 496,
-        kCCContextSizeCAST		= 240,
-        kCCContextSizeRC4		= 1072
-    };
-
-
-
-    /*!
-     @function   CCCryptorCreate
-     @abstract   Create a cryptographic context.
-
-     @param      op          Defines the basic operation: kCCEncrypt or
-     kCCDecrypt.
-
-     @param      alg         Defines the algorithm.
-
-     @param      options     A word of flags defining options. See discussion
-     for the CCOptions type.
-
-     @param      key         Raw key material, length keyLength bytes.
-
-     @param      keyLength   Length of key material. Must be appropriate
-     for the selected operation and algorithm. Some
-     algorithms  provide for varying key lengths.
-
-     @param      iv          Initialization vector, optional. Used by
-     block ciphers when Cipher Block Chaining (CBC)
-     mode is enabled. If present, must be the same
-     length as the selected algorithm's block size.
-     If CBC mode is selected (by the absence of the
-     kCCOptionECBMode bit in the options flags) and no
-     IV is present, a NULL (all zeroes) IV will be used.
-     This parameter is ignored if ECB mode is used or
-     if a stream cipher algorithm is selected.
-
-     @param      cryptorRef  A (required) pointer to the returned CCCryptorRef.
-
-     @result     Possible error returns are kCCParamError and kCCMemoryFailure.
-     */
-    CCCryptorStatus CCCryptorCreate(
-                                    CCOperation op,             /* kCCEncrypt, etc. */
-                                    CCAlgorithm alg,            /* kCCAlgorithmDES, etc. */
-                                    CCOptions options,          /* kCCOptionPKCS7Padding, etc. */
-                                    const void *key,            /* raw key material */
-                                    size_t keyLength,
-                                    const void *iv,             /* optional initialization vector */
-                                    CCCryptorRef *cryptorRef)  /* RETURNED */
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*!
-     @function   CCCryptorCreateFromData
-     @abstract   Create a cryptographic context using caller-supplied memory.
-
-     @param      op          Defines the basic operation: kCCEncrypt or
-     kCCDecrypt.
-
-     @param      alg         Defines the algorithm.
-
-     @param      options     A word of flags defining options. See discussion
-     for the CCOptions type.
-
-     @param      key         Raw key material, length keyLength bytes.
-
-     @param      keyLength   Length of key material. Must be appropriate
-     for the selected operation and algorithm. Some
-     algorithms  provide for varying key lengths.
-
-     @param      iv          Initialization vector, optional. Used by
-     block ciphers when Cipher Block Chaining (CBC)
-     mode is enabled. If present, must be the same
-     length as the selected algorithm's block size.
-     If CBC mode is selected (by the absence of the
-     kCCOptionECBMode bit in the options flags) and no
-     IV is present, a NULL (all zeroes) IV will be used.
-     This parameter is ignored if ECB mode is used or
-     if a stream cipher algorithm is selected.
-
-     @param      data        A pointer to caller-supplied memory from which the
-     CCCryptorRef will be created.
-
-     @param      dataLength  The size of the caller-supplied memory in bytes.
-
-     @param      cryptorRef  A (required) pointer to the returned CCCryptorRef.
-
-     @param      dataUsed    Optional. If present, the actual number of bytes of
-     the caller-supplied memory which was consumed by
-     creation of the CCCryptorRef is returned here. Also,
-     if the supplied memory is of insufficent size to create
-     a CCCryptorRef, kCCBufferTooSmall is returned, and
-     the minimum required buffer size is returned via this
-     parameter if present.
-
-     @result     Possible error returns are kCCParamError and kCCBufferTooSmall.
-
-     @discussion The CCCryptorRef created by this function *may* be disposed of
-     via CCCRyptorRelease; that call is not strictly necessary, but
-     if it's not performed, good security practice dictates that the
-     caller should zero the memory provided to create the CCCryptorRef
-     when the caller is finished using the CCCryptorRef.
-     */
-    CCCryptorStatus CCCryptorCreateFromData(
-                                            CCOperation op,             /* kCCEncrypt, etc. */
-                                            CCAlgorithm alg,            /* kCCAlgorithmDES, etc. */
-                                            CCOptions options,          /* kCCOptionPKCS7Padding, etc. */
-                                            const void *key,            /* raw key material */
-                                            size_t keyLength,
-                                            const void *iv,             /* optional initialization vector */
-                                            const void *data,           /* caller-supplied memory */
-                                            size_t dataLength,          /* length of data in bytes */
-                                            CCCryptorRef *cryptorRef,   /* RETURNED */
-                                            size_t *dataUsed)           /* optional, RETURNED */
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*!
-     @function   CCCryptorRelease
-     @abstract   Free a context created by CCCryptorCreate or
-     CCCryptorCreateFromData().
-
-     @param      cryptorRef  The CCCryptorRef to release.
-
-     @result     The only possible error return is kCCParamError resulting
-     from passing in a null CCCryptorRef.
-     */
-    CCCryptorStatus CCCryptorRelease(
-                                     CCCryptorRef cryptorRef)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*!
-     @function   CCCryptorUpdate
-     @abstract   Process (encrypt, decrypt) some data. The result, if any,
-     is written to a caller-provided buffer.
-
-     @param      cryptorRef      A CCCryptorRef created via CCCryptorCreate() or
-     CCCryptorCreateFromData().
-     @param      dataIn          Data to process, length dataInLength bytes.
-     @param      dataInLength    Length of data to process.
-     @param      dataOut         Result is written here. Allocated by caller.
-     Encryption and decryption can be performed
-     "in-place", with the same buffer used for
-     input and output.
-     @param      dataOutAvailable The size of the dataOut buffer in bytes.
-     @param      dataOutMoved    On successful return, the number of bytes
-     written to dataOut.
-
-     @result     kCCBufferTooSmall indicates insufficent space in the dataOut
-     buffer. The caller can use
-     CCCryptorGetOutputLength() to determine the
-     required output buffer size in this case. The
-     operation can be retried; no state is lost
-     when this is returned.
-
-     @discussion This routine can be called multiple times. The caller does
-     not need to align input data lengths to block sizes; input is
-     bufferred as necessary for block ciphers.
-
-     When performing symmetric encryption with block ciphers,
-     and padding is enabled via kCCOptionPKCS7Padding, the total
-     number of bytes provided by all the calls to this function
-     when encrypting can be arbitrary (i.e., the total number
-     of bytes does not have to be block aligned). However if
-     padding is disabled, or when decrypting, the total number
-     of bytes does have to be aligned to the block size; otherwise
-     CCCryptFinal() will return kCCAlignmentError.
-
-     A general rule for the size of the output buffer which must be
-     provided by the caller is that for block ciphers, the output
-     length is never larger than the input length plus the block size.
-     For stream ciphers, the output length is always exactly the same
-     as the input length. See the discussion for
-     CCCryptorGetOutputLength() for more information on this topic.
-
-     Generally, when all data has been processed, call
-     CCCryptorFinal().
-
-     In the following cases, the CCCryptorFinal() is superfluous as
-     it will not yield any data nor return an error:
-     1. Encrypting or decrypting with a block cipher with padding
-     disabled, when the total amount of data provided to
-     CCCryptorUpdate() is an integral multiple of the block size.
-     2. Encrypting or decrypting with a stream cipher.
-     */
-    CCCryptorStatus CCCryptorUpdate(
-                                    CCCryptorRef cryptorRef,
-                                    const void *dataIn,
-                                    size_t dataInLength,
-                                    void *dataOut,              /* data RETURNED here */
-                                    size_t dataOutAvailable,
-                                    size_t *dataOutMoved)       /* number of bytes written */
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*!
-     @function   CCCryptorFinal
-     @abstract   Finish an encrypt or decrypt operation, and obtain the (possible)
-     final data output.
-
-     @param      cryptorRef      A CCCryptorRef created via CCCryptorCreate() or
-     CCCryptorCreateFromData().
-     @param      dataOut         Result is written here. Allocated by caller.
-     @param      dataOutAvailable The size of the dataOut buffer in bytes.
-     @param      dataOutMoved    On successful return, the number of bytes
-     written to dataOut.
-
-     @result     kCCBufferTooSmall indicates insufficent space in the dataOut
-     buffer. The caller can use
-     CCCryptorGetOutputLength() to determine the
-     required output buffer size in this case. The
-     operation can be retried; no state is lost
-     when this is returned.
-     kCCAlignmentError When decrypting, or when encrypting with a
-     block cipher with padding disabled,
-     kCCAlignmentError will be returned if the total
-     number of bytes provided to CCCryptUpdate() is
-     not an integral multiple of the current
-     algorithm's block size.
-     kCCDecodeError  Indicates garbled ciphertext or the
-     wrong key during decryption. This can only
-     be returned while decrypting with padding
-     enabled.
-
-     @discussion Except when kCCBufferTooSmall is returned, the CCCryptorRef
-     can no longer be used for subsequent operations unless
-     CCCryptorReset() is called on it.
-
-     It is not necessary to call CCCryptorFinal() when performing
-     symmetric encryption or decryption if padding is disabled, or
-     when using a stream cipher.
-
-     It is not necessary to call CCCryptorFinal() prior to
-     CCCryptorRelease() when aborting an operation.
-     */
-    CCCryptorStatus CCCryptorFinal(
-                                   CCCryptorRef cryptorRef,
-                                   void *dataOut,
-                                   size_t dataOutAvailable,
-                                   size_t *dataOutMoved)       /* number of bytes written */
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*!
-     @function   CCCryptorGetOutputLength
-     @abstract   Determine output buffer size required to process a given input
-     size.
-
-     @param      cryptorRef  A CCCryptorRef created via CCCryptorCreate() or
-     CCCryptorCreateFromData().
-     @param      inputLength The length of data which will be provided to
-     CCCryptorUpdate().
-     @param      final       If false, the returned value will indicate the
-     output buffer space needed when 'inputLength'
-     bytes are provided to CCCryptorUpdate(). When
-     'final' is true, the returned value will indicate
-     the total combined buffer space needed when
-     'inputLength' bytes are provided to
-     CCCryptorUpdate() and then CCCryptorFinal() is
-     called.
-
-     @result The maximum buffer space need to perform CCCryptorUpdate() and
-     optionally CCCryptorFinal().
-
-     @discussion Some general rules apply that allow clients of this module to
-     know a priori how much output buffer space will be required
-     in a given situation. For stream ciphers, the output size is
-     always equal to the input size, and CCCryptorFinal() never
-     produces any data. For block ciphers, the output size will
-     always be less than or equal to the input size plus the size
-     of one block. For block ciphers, if the input size provided
-     to each call to CCCryptorUpdate() is is an integral multiple
-     of the block size, then the output size for each call to
-     CCCryptorUpdate() is less than or equal to the input size
-     for that call to CCCryptorUpdate(). CCCryptorFinal() only
-     produces output when using a block cipher with padding enabled.
-     */
-    size_t CCCryptorGetOutputLength(
-                                    CCCryptorRef cryptorRef,
-                                    size_t inputLength,
-                                    bool final)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*!
-     @function   CCCryptorReset
-     @abstract   Reinitializes an existing CCCryptorRef with a (possibly)
-     new initialization vector. The CCCryptorRef's key is
-     unchanged. Not implemented for stream ciphers.
-
-     @param      cryptorRef  A CCCryptorRef created via CCCryptorCreate() or
-     CCCryptorCreateFromData().
-     @param      iv          Optional initialization vector; if present, must
-     be the same size as the current algorithm's block
-     size.
-
-     @result     The the only possible errors are kCCParamError and
-     kCCUnimplemented.
-
-     @discussion This can be called on a CCCryptorRef with data pending (i.e.
-     in a padded mode operation before CCCryptFinal is called);
-     however any pending data will be lost in that case.
-     */
-    CCCryptorStatus CCCryptorReset(
-                                   CCCryptorRef cryptorRef,
-                                   const void *iv)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*!
-     @function   CCCrypt
-     @abstract   Stateless, one-shot encrypt or decrypt operation.
-     This basically performs a sequence of CCCrytorCreate(),
-     CCCryptorUpdate(), CCCryptorFinal(), and CCCryptorRelease().
-
-     @param      alg             Defines the encryption algorithm.
-
-
-     @param      op              Defines the basic operation: kCCEncrypt or
-     kCCDecrypt.
-
-     @param      options         A word of flags defining options. See discussion
-     for the CCOptions type.
-
-     @param      key             Raw key material, length keyLength bytes.
-
-     @param      keyLength       Length of key material. Must be appropriate
-     for the select algorithm. Some algorithms may
-     provide for varying key lengths.
-
-     @param      iv              Initialization vector, optional. Used for
-     Cipher Block Chaining (CBC) mode. If present,
-     must be the same length as the selected
-     algorithm's block size. If CBC mode is
-     selected (by the absence of any mode bits in
-     the options flags) and no IV is present, a
-     NULL (all zeroes) IV will be used. This is
-     ignored if ECB mode is used or if a stream
-     cipher algorithm is selected.
-
-     @param      dataIn          Data to encrypt or decrypt, length dataInLength
-     bytes.
-
-     @param      dataInLength    Length of data to encrypt or decrypt.
-
-     @param      dataOut         Result is written here. Allocated by caller.
-     Encryption and decryption can be performed
-     "in-place", with the same buffer used for
-     input and output.
-
-     @param      dataOutAvailable The size of the dataOut buffer in bytes.
-
-     @param      dataOutMoved    On successful return, the number of bytes
-     written to dataOut. If kCCBufferTooSmall is
-     returned as a result of insufficient buffer
-     space being provided, the required buffer space
-     is returned here.
-
-     @result     kCCBufferTooSmall indicates insufficent space in the dataOut
-     buffer. In this case, the *dataOutMoved
-     parameter will indicate the size of the buffer
-     needed to complete the operation. The
-     operation can be retried with minimal runtime
-     penalty.
-     kCCAlignmentError indicates that dataInLength was not properly
-     aligned. This can only be returned for block
-     ciphers, and then only when decrypting or when
-     encrypting with block with padding disabled.
-     kCCDecodeError  Indicates improperly formatted ciphertext or
-     a "wrong key" error; occurs only during decrypt
-     operations.
-     */
-
-    CCCryptorStatus CCCrypt(
-                            CCOperation op,         /* kCCEncrypt, etc. */
-                            CCAlgorithm alg,        /* kCCAlgorithmAES128, etc. */
-                            CCOptions options,      /* kCCOptionPKCS7Padding, etc. */
-                            const void *key,
-                            size_t keyLength,
-                            const void *iv,         /* optional initialization vector */
-                            const void *dataIn,     /* optional per op and alg */
-                            size_t dataInLength,
-                            void *dataOut,          /* data RETURNED here */
-                            size_t dataOutAvailable,
-                            size_t *dataOutMoved)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*!
-     @enum       Cipher Modes
-     @discussion These are the selections available for modes of operation for
-     use with block ciphers.  If RC4 is selected as the cipher (a stream
-     cipher) the only correct mode is kCCModeRC4.
-
-     @constant kCCModeECB - Electronic Code Book Mode.
-     @constant kCCModeCBC - Cipher Block Chaining Mode.
-     @constant kCCModeCFB - Cipher Feedback Mode.
-     @constant kCCModeOFB - Output Feedback Mode.
-     @constant kCCModeXTS - XEX-based Tweaked CodeBook Mode.
-     @constant kCCModeRC4 - RC4 as a streaming cipher is handled internally as a mode.
-     @constant kCCModeCFB8 - Cipher Feedback Mode producing 8 bits per round.
-     */
-
-
-    enum {
-        kCCModeECB		= 1,
-        kCCModeCBC		= 2,
-        kCCModeCFB		= 3,
-        kCCModeCTR		= 4,
-        kCCModeF8		= 5, // Unimplemented for now (not included)
-        kCCModeLRW		= 6, // Unimplemented for now (not included)
-        kCCModeOFB		= 7,
-        kCCModeXTS		= 8,
-        kCCModeRC4		= 9,
-        kCCModeCFB8		= 10,
-    };
-    typedef uint32_t CCMode;
-
-    /*!
-     @enum       Padding for Block Ciphers
-     @discussion These are the padding options available for block modes.
-
-     @constant ccNoPadding -  No padding.
-     @constant ccPKCS7Padding - PKCS7 Padding.
-     */
-
-    enum {
-        ccNoPadding			= 0,
-        ccPKCS7Padding		= 1,
-    };
-    typedef uint32_t CCPadding;
-
-    /*!
-     @enum       Mode options - Not currently in use.
-
-     @discussion Values used to specify options for modes. This was used for counter
-     mode operations in 10.8, now only Big Endian mode is supported.
-
-     @constant kCCModeOptionCTR_LE - CTR Mode Little Endian.
-     @constant kCCModeOptionCTR_BE - CTR Mode Big Endian.
-     */
-
-    enum {
-        kCCModeOptionCTR_LE	= 0x0001, // Deprecated in iPhoneOS 6.0 and MacOSX10.9
-        kCCModeOptionCTR_BE = 0x0002  // Deprecated in iPhoneOS 6.0 and MacOSX10.9
-    };
-
-    typedef uint32_t CCModeOptions;
-
-    /*!
-     @function   CCCryptorCreateWithMode
-     @abstract   Create a cryptographic context.
-
-     @param      op         Defines the basic operation: kCCEncrypt or
-     kCCDecrypt.
-
-     @param     mode		Specifies the cipher mode to use for operations.
-
-     @param      alg        Defines the algorithm.
-
-     @param		padding		Specifies the padding to use.
-
-     @param      iv         Initialization vector, optional. Used by
-     block ciphers with the following modes:
-
-     Cipher Block Chaining (CBC)
-     Cipher Feedback (CFB and CFB8)
-     Output Feedback (OFB)
-     Counter (CTR)
-
-     If present, must be the same length as the selected
-     algorithm's block size.  If no IV is present, a NULL
-     (all zeroes) IV will be used.
-
-     This parameter is ignored if ECB mode is used or
-     if a stream cipher algorithm is selected.
-
-     @param      key         Raw key material, length keyLength bytes.
-
-     @param      keyLength   Length of key material. Must be appropriate
-     for the selected operation and algorithm. Some
-     algorithms  provide for varying key lengths.
-
-     @param      tweak      Raw key material, length keyLength bytes. Used for the
-     tweak key in XEX-based Tweaked CodeBook (XTS) mode.
-
-     @param      tweakLength   Length of tweak key material. Must be appropriate
-     for the selected operation and algorithm. Some
-     algorithms  provide for varying key lengths.  For XTS
-     this is the same length as the encryption key.
-
-     @param		numRounds	The number of rounds of the cipher to use.  0 uses the default.
-
-     @param      options    A word of flags defining options. See discussion
-     for the CCModeOptions type.
-
-     @param      cryptorRef  A (required) pointer to the returned CCCryptorRef.
-
-     @result     Possible error returns are kCCParamError and kCCMemoryFailure.
-     */
-
-
-    CCCryptorStatus CCCryptorCreateWithMode(
-                                            CCOperation 	op,				/* kCCEncrypt, kCCEncrypt */
-                                            CCMode			mode,
-                                            CCAlgorithm		alg,
-                                            CCPadding		padding,
-                                            const void 		*iv,			/* optional initialization vector */
-                                            const void 		*key,			/* raw key material */
-                                            size_t 			keyLength,
-                                            const void 		*tweak,			/* raw tweak material */
-                                            size_t 			tweakLength,
-                                            int				numRounds,		/* 0 == default */
-                                            CCModeOptions 	options,
-                                            CCCryptorRef	*cryptorRef)	/* RETURNED */
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _CC_COMMON_CRYPTOR_ */
-
-
-/*
- * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-/*
- * CommonDigest.h - common digest routines: MD2, MD4, MD5, SHA1.
- */
-
-#ifndef _CC_COMMON_DIGEST_H_
-#define _CC_COMMON_DIGEST_H_
-
-#include <stdint.h>
-#include <Availability.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    /*
-     * For compatibility with legacy implementations, the *Init(), *Update(),
-     * and *Final() functions declared here *always* return a value of 1 (one).
-     * This corresponds to "success" in the similar openssl implementations.
-     * There are no errors of any kind which can be, or are, reported here,
-     * so you can safely ignore the return values of all of these functions
-     * if you are implementing new code.
-     *
-     * The one-shot functions (CC_MD2(), CC_SHA1(), etc.) perform digest
-     * calculation and place the result in the caller-supplied buffer
-     * indicated by the md parameter. They return the md parameter.
-     * Unlike the opensssl counterparts, these one-shot functions require
-     * a non-NULL md pointer. Passing in NULL for the md parameter
-     * results in a NULL return and no digest calculation.
-     */
-
-    typedef uint32_t CC_LONG;       /* 32 bit unsigned integer */
-    typedef uint64_t CC_LONG64;     /* 64 bit unsigned integer */
-
-    /*** MD2 ***/
-
-#define CC_MD2_DIGEST_LENGTH    16          /* digest length in bytes */
-#define CC_MD2_BLOCK_BYTES      64          /* block size in bytes */
-#define CC_MD2_BLOCK_LONG       (CC_MD2_BLOCK_BYTES / sizeof(CC_LONG))
-
-    typedef struct CC_MD2state_st
-    {
-        int num;
-        unsigned char data[CC_MD2_DIGEST_LENGTH];
-        CC_LONG cksm[CC_MD2_BLOCK_LONG];
-        CC_LONG state[CC_MD2_BLOCK_LONG];
-    } CC_MD2_CTX;
-
-    extern int CC_MD2_Init(CC_MD2_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_MD2_Update(CC_MD2_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_MD2_Final(unsigned char *md, CC_MD2_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_MD2(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*** MD4 ***/
-
-#define CC_MD4_DIGEST_LENGTH    16          /* digest length in bytes */
-#define CC_MD4_BLOCK_BYTES      64          /* block size in bytes */
-#define CC_MD4_BLOCK_LONG       (CC_MD4_BLOCK_BYTES / sizeof(CC_LONG))
-
-    typedef struct CC_MD4state_st
-    {
-        CC_LONG A,B,C,D;
-        CC_LONG Nl,Nh;
-        CC_LONG data[CC_MD4_BLOCK_LONG];
-        uint32_t num;
-    } CC_MD4_CTX;
-
-    extern int CC_MD4_Init(CC_MD4_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_MD4_Update(CC_MD4_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_MD4_Final(unsigned char *md, CC_MD4_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_MD4(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*** MD5 ***/
-
-#define CC_MD5_DIGEST_LENGTH    16          /* digest length in bytes */
-#define CC_MD5_BLOCK_BYTES      64          /* block size in bytes */
-#define CC_MD5_BLOCK_LONG       (CC_MD5_BLOCK_BYTES / sizeof(CC_LONG))
-
-    typedef struct CC_MD5state_st
-    {
-        CC_LONG A,B,C,D;
-        CC_LONG Nl,Nh;
-        CC_LONG data[CC_MD5_BLOCK_LONG];
-        int num;
-    } CC_MD5_CTX;
-
-    extern int CC_MD5_Init(CC_MD5_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_MD5_Update(CC_MD5_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_MD5_Final(unsigned char *md, CC_MD5_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_MD5(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*** SHA1 ***/
-
-#define CC_SHA1_DIGEST_LENGTH   20          /* digest length in bytes */
-#define CC_SHA1_BLOCK_BYTES     64          /* block size in bytes */
-#define CC_SHA1_BLOCK_LONG      (CC_SHA1_BLOCK_BYTES / sizeof(CC_LONG))
-
-    typedef struct CC_SHA1state_st
-    {
-        CC_LONG h0,h1,h2,h3,h4;
-        CC_LONG Nl,Nh;
-        CC_LONG data[CC_SHA1_BLOCK_LONG];
-        int num;
-    } CC_SHA1_CTX;
-
-    extern int CC_SHA1_Init(CC_SHA1_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA1_Update(CC_SHA1_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA1_Final(unsigned char *md, CC_SHA1_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_SHA1(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*** SHA224 ***/
-#define CC_SHA224_DIGEST_LENGTH     28          /* digest length in bytes */
-#define CC_SHA224_BLOCK_BYTES       64          /* block size in bytes */
-
-    /* same context struct is used for SHA224 and SHA256 */
-    typedef struct CC_SHA256state_st
-    {   CC_LONG count[2];
-        CC_LONG hash[8];
-        CC_LONG wbuf[16];
-    } CC_SHA256_CTX;
-
-    extern int CC_SHA224_Init(CC_SHA256_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA224_Update(CC_SHA256_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA224_Final(unsigned char *md, CC_SHA256_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_SHA224(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*** SHA256 ***/
-
-#define CC_SHA256_DIGEST_LENGTH     32          /* digest length in bytes */
-#define CC_SHA256_BLOCK_BYTES       64          /* block size in bytes */
-
-    extern int CC_SHA256_Init(CC_SHA256_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA256_Update(CC_SHA256_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA256_Final(unsigned char *md, CC_SHA256_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_SHA256(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*** SHA384 ***/
-
-#define CC_SHA384_DIGEST_LENGTH     48          /* digest length in bytes */
-#define CC_SHA384_BLOCK_BYTES      128          /* block size in bytes */
-
-    /* same context struct is used for SHA384 and SHA512 */
-    typedef struct CC_SHA512state_st
-    {   CC_LONG64 count[2];
-        CC_LONG64 hash[8];
-        CC_LONG64 wbuf[16];
-    } CC_SHA512_CTX;
-
-    extern int CC_SHA384_Init(CC_SHA512_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA384_Update(CC_SHA512_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA384_Final(unsigned char *md, CC_SHA512_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_SHA384(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*** SHA512 ***/
-
-#define CC_SHA512_DIGEST_LENGTH     64          /* digest length in bytes */
-#define CC_SHA512_BLOCK_BYTES      128          /* block size in bytes */
-
-    extern int CC_SHA512_Init(CC_SHA512_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA512_Update(CC_SHA512_CTX *c, const void *data, CC_LONG len)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern int CC_SHA512_Final(unsigned char *md, CC_SHA512_CTX *c)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    extern unsigned char *CC_SHA512(const void *data, CC_LONG len, unsigned char *md)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-    /*
-     * To use the above digest functions with existing code which uses
-     * the corresponding openssl functions, #define the symbol
-     * COMMON_DIGEST_FOR_OPENSSL in your client code (BEFORE including
-     * this file), and simply link against libSystem (or System.framework)
-     * instead of libcrypto.
-     *
-     * You can *NOT* mix and match functions operating on a given data
-     * type from the two implementations; i.e., if you do a CC_MD5_Init()
-     * on a CC_MD5_CTX object, do not assume that you can do an openssl-style
-     * MD5_Update() on that same context.
-     */
-
-#ifdef  COMMON_DIGEST_FOR_OPENSSL
-
-#define MD2_DIGEST_LENGTH           CC_MD2_DIGEST_LENGTH
-#define MD2_CTX                     CC_MD2_CTX
-#define MD2_Init                    CC_MD2_Init
-#define MD2_Update                  CC_MD2_Update
-#define MD2_Final                   CC_MD2_Final
-
-#define MD4_DIGEST_LENGTH           CC_MD4_DIGEST_LENGTH
-#define MD4_CTX                     CC_MD4_CTX
-#define MD4_Init                    CC_MD4_Init
-#define MD4_Update                  CC_MD4_Update
-#define MD4_Final                   CC_MD4_Final
-
-#define MD5_DIGEST_LENGTH           CC_MD5_DIGEST_LENGTH
-#define MD5_CTX                     CC_MD5_CTX
-#define MD5_Init                    CC_MD5_Init
-#define MD5_Update                  CC_MD5_Update
-#define MD5_Final                   CC_MD5_Final
-
-#define SHA_DIGEST_LENGTH           CC_SHA1_DIGEST_LENGTH
-#define SHA_CTX                     CC_SHA1_CTX
-#define SHA1_Init                   CC_SHA1_Init
-#define SHA1_Update                 CC_SHA1_Update
-#define SHA1_Final                  CC_SHA1_Final
-
-#define SHA224_DIGEST_LENGTH        CC_SHA224_DIGEST_LENGTH
-#define SHA256_CTX                  CC_SHA256_CTX
-#define SHA224_Init                 CC_SHA224_Init
-#define SHA224_Update               CC_SHA224_Update
-#define SHA224_Final                CC_SHA224_Final
-
-#define SHA256_DIGEST_LENGTH        CC_SHA256_DIGEST_LENGTH
-#define SHA256_Init                 CC_SHA256_Init
-#define SHA256_Update               CC_SHA256_Update
-#define SHA256_Final                CC_SHA256_Final
-
-#define SHA384_DIGEST_LENGTH        CC_SHA384_DIGEST_LENGTH
-#define SHA512_CTX                  CC_SHA512_CTX
-#define SHA384_Init                 CC_SHA384_Init
-#define SHA384_Update               CC_SHA384_Update
-#define SHA384_Final                CC_SHA384_Final
-
-#define SHA512_DIGEST_LENGTH        CC_SHA512_DIGEST_LENGTH
-#define SHA512_Init                 CC_SHA512_Init
-#define SHA512_Update               CC_SHA512_Update
-#define SHA512_Final                CC_SHA512_Final
-    
-    
-#endif  /* COMMON_DIGEST_FOR_OPENSSL */
-    
-    /*
-     * In a manner similar to that described above for openssl 
-     * compatibility, these macros can be used to provide compatiblity 
-     * with legacy implementations of MD5 using the interface defined 
-     * in RFC 1321.
-     */
-    
-#ifdef  COMMON_DIGEST_FOR_RFC_1321
-    
-#define MD5_CTX                     CC_MD5_CTX
-#define MD5Init                     CC_MD5_Init
-#define MD5Update                   CC_MD5_Update
-    void MD5Final (unsigned char [16], MD5_CTX *)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-    
-#endif  /* COMMON_DIGEST_FOR_RFC_1321 */
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _CC_COMMON_DIGEST_H_ */
-
-
-/*
- * Copyright (c) 2004 Apple Computer, Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-/*!
- @header     CommonHMAC.h
- @abstract   Keyed Message Authentication Code (HMAC) functions.
- */
-
-#ifndef _CC_COMMON_HMAC_H_
-#define _CC_COMMON_HMAC_H_
-
-#include <sys/types.h>
-#include <Availability.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    /*!
-     @enum       CCHmacAlgorithm
-     @abstract   Algorithms implemented in this module.
-
-     @constant   kCCHmacAlgSHA1      HMAC with SHA1 digest
-     @constant   kCCHmacAlgMD5       HMAC with MD5 digest
-     @constant   kCCHmacAlgSHA256    HMAC with SHA256 digest
-     @constant   kCCHmacAlgSHA384    HMAC with SHA384 digest
-     @constant   kCCHmacAlgSHA512    HMAC with SHA512 digest
-     @constant   kCCHmacAlgSHA224    HMAC with SHA224 digest
-     */
-    enum {
-        kCCHmacAlgSHA1,
-        kCCHmacAlgMD5,
-        kCCHmacAlgSHA256,
-        kCCHmacAlgSHA384,
-        kCCHmacAlgSHA512,
-        kCCHmacAlgSHA224
-    };
-    typedef uint32_t CCHmacAlgorithm;
-
-    /*!
-     @typedef    CCHmacContext
-     @abstract   HMAC context.
-     */
-#define CC_HMAC_CONTEXT_SIZE    96
-    typedef struct {
-        uint32_t            ctx[CC_HMAC_CONTEXT_SIZE];
-    } CCHmacContext;
-
-    /*!
-     @function   CCHmacInit
-     @abstract   Initialize an CCHmacContext with provided raw key bytes.
-
-     @param      ctx         An HMAC context.
-     @param      algorithm   HMAC algorithm to perform.
-     @param      key         Raw key bytes.
-     @param      keyLength   Length of raw key bytes; can be any
-     length including zero.
-     */
-    void CCHmacInit(
-                    CCHmacContext *ctx,
-                    CCHmacAlgorithm algorithm,
-                    const void *key,
-                    size_t keyLength)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*!
-     @function   CCHmacUpdate
-     @abstract   Process some data.
-
-     @param      ctx         An HMAC context.
-     @param      data        Data to process.
-     @param      dataLength  Length of data to process, in bytes.
-
-     @discussion This can be called multiple times.
-     */
-    void CCHmacUpdate(
-                      CCHmacContext *ctx,
-                      const void *data,
-                      size_t dataLength)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*!
-     @function   CCHmacFinal
-     @abstract   Obtain the final Message Authentication Code.
-
-     @param      ctx         An HMAC context.
-     @param      macOut      Destination of MAC; allocated by caller.
-
-     @discussion The length of the MAC written to *macOut is the same as
-     the digest length associated with the HMAC algorithm:
-
-     kCCHmacSHA1 : CC_SHA1_DIGEST_LENGTH
-
-     kCCHmacMD5  : CC_MD5_DIGEST_LENGTH
-     */
-    void CCHmacFinal(
-                     CCHmacContext *ctx,
-                     void *macOut)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-
-
-    /*
-     * Stateless, one-shot HMAC function.
-     * Output is written to caller-supplied buffer, as in CCHmacFinal().
-     */
-    void CCHmac(
-                CCHmacAlgorithm algorithm,  /* kCCHmacSHA1, kCCHmacMD5 */
-                const void *key,
-                size_t keyLength,           /* length of key in bytes */
-                const void *data,
-                size_t dataLength,          /* length of data in bytes */
-                void *macOut)               /* MAC written here */
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0);
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _CC_COMMON_HMAC_H_ */
-
-
-/*
- * Copyright (c) 2010 Apple Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-#ifndef _CC_PBKDF_H_
-#define _CC_PBKDF_H_
-
-#include <sys/param.h>
-#include <string.h>
-#include <Availability.h>
-#ifdef KERNEL
-#include <machine/limits.h>
-#else
-#include <limits.h>
-#include <stdlib.h>
-#endif /* KERNEL */
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    enum {
-        kCCPBKDF2 = 2,
-    };
-
-
-    typedef uint32_t CCPBKDFAlgorithm;
-
-
-    enum {
-        kCCPRFHmacAlgSHA1 = 1,
-        kCCPRFHmacAlgSHA224 = 2,
-        kCCPRFHmacAlgSHA256 = 3,
-        kCCPRFHmacAlgSHA384 = 4,
-        kCCPRFHmacAlgSHA512 = 5,
-    };
-
-
-    typedef uint32_t CCPseudoRandomAlgorithm;
-
-    /*
-
-     @function  CCKeyDerivationPBKDF
-     @abstract  Derive a key from a text password/passphrase
-
-     @param algorithm       Currently only PBKDF2 is available via kCCPBKDF2
-     @param password        The text password used as input to the derivation
-     function.  The actual octets present in this string
-     will be used with no additional processing.  It's
-     extremely important that the same encoding and
-     normalization be used each time this routine is
-     called if the same key is  expected to be derived.
-     @param passwordLen     The length of the text password in bytes.
-     @param salt            The salt byte values used as input to the derivation
-     function.
-     @param saltLen         The length of the salt in bytes.
-     @param prf             The Pseudo Random Algorithm to use for the derivation
-     iterations.
-     @param rounds          The number of rounds of the Pseudo Random Algorithm
-     to use.
-     @param derivedKey      The resulting derived key produced by the function.
-     The space for this must be provided by the caller.
-     @param derivedKeyLen   The expected length of the derived key in bytes.
-
-     @discussion The following values are used to designate the PRF:
-
-     * kCCPRFHmacAlgSHA1
-     * kCCPRFHmacAlgSHA224
-     * kCCPRFHmacAlgSHA256
-     * kCCPRFHmacAlgSHA384
-     * kCCPRFHmacAlgSHA512
-
-     @result     kCCParamError can result from bad values for the password, salt,
-     and unwrapped key pointers as well as a bad value for the prf
-     function.
-
-     */
-
-    int
-    CCKeyDerivationPBKDF( CCPBKDFAlgorithm algorithm, const char *password, size_t passwordLen,
-                         const uint8_t *salt, size_t saltLen,
-                         CCPseudoRandomAlgorithm prf, uint rounds,
-                         uint8_t *derivedKey, size_t derivedKeyLen)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-
-    /*
-     * All lengths are in bytes - not bits.
-     */
-
-    /*
-
-     @function  CCCalibratePBKDF
-     @abstract  Determine the number of PRF rounds to use for a specific delay on
-     the current platform.
-     @param algorithm       Currently only PBKDF2 is available via kCCPBKDF2
-     @param passwordLen     The length of the text password in bytes.
-     @param saltLen         The length of the salt in bytes.
-     @param prf             The Pseudo Random Algorithm to use for the derivation
-     iterations.
-     @param derivedKeyLen   The expected length of the derived key in bytes.
-     @param msec            The targetted duration we want to achieve for a key
-     derivation with these parameters.
-
-     @result the number of iterations to use for the desired processing time.
-
-     */
-
-    uint
-    CCCalibratePBKDF(CCPBKDFAlgorithm algorithm, size_t passwordLen, size_t saltLen,
-                     CCPseudoRandomAlgorithm prf, size_t derivedKeyLen, uint32_t msec)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _CC_PBKDF_H_ */
-
-
-/*
- * Copyright (c) 2014 Apple Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-//
-//  CommonRandom.h
-//  CommonCrypto
-
-#ifndef CommonCrypto_CommonRandom_h
-#define CommonCrypto_CommonRandom_h
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-    typedef CCCryptorStatus CCRNGStatus;
-
-    /*!
-     @function      CCRandomGenerateBytes
-
-     @abstract      Return random bytes in a buffer allocated by the caller.
-
-     @discussion    The PRNG returns cryptographically strong random
-     bits suitable for use as cryptographic keys, IVs, nonces etc.
-
-     @param         bytes   Pointer to the return buffer.
-     @param         count   Number of random bytes to return.
-
-     @result        Return kCCSuccess on success.
-     */
-
-    CCRNGStatus CCRandomGenerateBytes(void *bytes, size_t count)
-    __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
-    
-#if defined(__cplusplus)
-}
-#endif
-
-#endif

+ 0 - 4
Sources/RNCryptor/RNCryptor.swift

@@ -25,11 +25,7 @@
 //
 
 import Foundation
-#if canImport(CommonCrypto)
 import CommonCrypto
-#elseif SWIFT_PACKAGE
-import Cryptor
-#endif
 
 
 /// The `RNCryptorType` protocol defines generic API to a mutable,