--- /dev/null
+/*
+ * Copyright (c) 2010-2011,2013 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 SecEncryptTransform
+
+ This file defines a SecTransform that will do both asynchronous and synchronous
+ encryption.
+
+ The key that is supplied to the SecTransform determines the type of encryption
+ to be used.
+
+ */
+#if !defined(__SEC_ENCRYPT_TRANSFORM__)
+#define __SEC_ENCRYPT_TRANSFORM__ 1
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <Security/SecKey.h>
+#include "SecTransform.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ /*! @abstract Indicates that no padding will be used when encrypting or decrypting. */
+ extern CFStringRef kSecPaddingNoneKey;
+ /*! Indicates that PKCS1 padding will be used when encrypting or decrypting. */
+ extern CFStringRef kSecPaddingPKCS1Key;
+ /*! Indicates that PKCS5 padding will be used when encrypting or decrypting. */
+ extern CFStringRef kSecPaddingPKCS5Key;
+ /*! Indicates that PKCS7 padding will be used when encrypting or decrypting. */
+ extern CFStringRef kSecPaddingPKCS7Key;
+ /*! Indicates that PKCS7 padding will be used when encrypting or decrypting. */
+ extern CFStringRef kSecPaddingOAEPKey
+ __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_NA);
+ /*! Indicates that no mode will be used when encrypting or decrypting. */
+ extern CFStringRef kSecModeNoneKey;
+ /*! Indicates that ECB mode will be used when encrypting or decrypting. */
+ extern CFStringRef kSecModeECBKey;
+ /*! Indicates that CBC mode will be used when encrypting or decrypting. */
+ extern CFStringRef kSecModeCBCKey;
+ /*! Indicates that CFB mode will be used when encrypting or decrypting. */
+ extern CFStringRef kSecModeCFBKey;
+ /*! Indicates that OFB mode will be used when encrypting or decrypting. */
+ extern CFStringRef kSecModeOFBKey;
+
+ /*!
+ @abstract
+ This attribute holds the encryption key for the transform. (ReadOnly)
+ */
+ extern CFStringRef kSecEncryptKey;
+
+ /*!
+ @abstract
+ Key for setting padding.
+ @discussion
+ This key is optional. If you do not supply a value for this key,
+ an appropriate value will be supplied for you.
+ */
+ extern CFStringRef kSecPaddingKey;
+
+ /*!
+ @abstract
+ Key for setting an initialization vector.
+ @discussion
+ This key is optional. If you do not supply a
+ value for this key, an appropriate value will be supplied for you.
+ */
+ extern CFStringRef kSecIVKey;
+
+ /*!
+ @abstract
+ Specifies the encryption mode.
+ @discussion
+ This key is optional. If you do not supply this key,
+ an appropriate value will be supplied for you.
+ */
+ extern CFStringRef kSecEncryptionMode;
+
+ /*!
+ @abstract
+ Specifies the OAEP message length.
+ @discussion
+ This should be set to a CFNumberRef when the padding is set to OAEP,
+ and a specific messages size is desired. If unset the minimum padding
+ will be added. It is ignored when the padding mode is not OAEP.
+ */
+ extern CFStringRef kSecOAEPMessageLengthAttributeName
+ __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_NA);
+ /*!
+ @abstract
+ Specifies the OAEP encoding paramaters
+ @discussion
+ This should be set to a CFDataRef when the padding is set to OAEP.
+ If unset a zero length CFDataRef is used. It is ignored by non
+ OAEP padding modes.
+ */
+ extern CFStringRef kSecOAEPEncodingParametersAttributeName
+ __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_NA);
+ /*!
+ @abstract
+ Specifies the OAEP MGF1 digest algorithm.
+ @discussion
+ This should be set to a digest algorithm when the padding is set to OAEP.
+ If unset SHA1 is used. It is ifnored by non OAEP padding modes.
+ */
+ extern CFStringRef kSecOAEPMGF1DigestAlgorithmAttributeName
+ __OSX_AVAILABLE_STARTING(__MAC_10_8,__IPHONE_NA);
+
+
+ /*!
+ @function SecEncryptTransformCreate
+ @abstract Creates an encryption SecTransform object.
+ @param keyRef The key for the encryption operation
+ @param error A pointer to a CFErrorRef. This pointer will be set
+ if an error occurred. This value may be NULL if you
+ do not want an error returned.
+ @result A pointer to a SecTransformRef object. This object must
+ be released with CFRelease when you are done with
+ it. This function will return NULL if an error
+ occurred.
+ @discussion This function creates a transform which encrypts data.
+ */
+
+ SecTransformRef SecEncryptTransformCreate(SecKeyRef keyRef,
+ CFErrorRef* error)
+ __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_NA);
+
+ /*!
+ @function SecDecryptTransformCreate
+ @abstract Creates an encryption SecTransform object.
+ @param keyRef The key for the operation
+ @param error A pointer to a CFErrorRef. This pointer will be set
+ if an error occurred. This value may be NULL if you
+ do not want an error returned.
+ @result A pointer to a SecTransformRef object. This object must
+ be released with CFRelease when you are done with
+ it. This function will return NULL if an error
+ occurred.
+ @discussion This function creates a transform which encrypts data.
+ */
+
+ SecTransformRef SecDecryptTransformCreate(SecKeyRef keyRef,
+ CFErrorRef* error)
+ __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_NA);
+
+/*!
+ @function SecDecryptTransformGetTypeID
+ @abstract Returns the CFTypeID for a decrypt transform.
+ @return the CFTypeID
+*/
+
+ CFTypeID SecDecryptTransformGetTypeID()
+ __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_NA);
+
+/*!
+ @function SecEncryptTransformGetTypeID
+ @abstract Returns the CFTypeID for a decrypt transform.
+ @return the CFTypeID
+*/
+
+ CFTypeID SecEncryptTransformGetTypeID()
+ __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_NA);
+
+#ifdef __cplusplus
+};
+#endif
+
+#endif /* ! __SEC_ENCRYPT_TRANSFORM__ */