]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_keychain/lib/SecImportExportUtils.h
Security-57031.1.35.tar.gz
[apple/security.git] / libsecurity_keychain / lib / SecImportExportUtils.h
diff --git a/libsecurity_keychain/lib/SecImportExportUtils.h b/libsecurity_keychain/lib/SecImportExportUtils.h
deleted file mode 100644 (file)
index 7190ba1..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * 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@
- *
- * SecImportExportUtils.h - misc. utilities for import/export module
- */
-
-#ifndef        _SECURITY_SEC_IMPORT_EXPORT_UTILS_H_
-#define _SECURITY_SEC_IMPORT_EXPORT_UTILS_H_
-
-#include "SecImportExport.h"
-#include "SecKeychainPriv.h"
-#include "SecBasePriv.h"
-#include <security_utilities/debugging.h>
-#include <security_utilities/errors.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Macros for begin/end of public functions. Although the import/export
- * module does not intentionally throw C++ exceptions which are intended to 
- * be caught like this, we catch possible exceptions which can conceivably
- * be thrown here or below. 
- */
-#define BEGIN_IMP_EXP_SECAPI \
-       try {
-
-#define END_IMP_EXP_SECAPI \
-       } \
-       catch (const MacOSError &err) { return err.osStatus(); } \
-       catch (const CommonError &err) { return SecKeychainErrFromOSStatus(err.osStatus()); } \
-       catch (const std::bad_alloc &) { return errSecAllocate; }\
-       catch (...) { return errSecInternalComponent; }
-
-/* 
- * Debug support.
- */
-#ifdef  NDEBUG
-
-#define impExpExtFormatStr(f)
-#define impExpExtItemTypeStr(t)
-
-#else
-
-extern const char *impExpExtFormatStr(SecExternalFormat format);
-extern const char *impExpExtItemTypeStr(SecExternalItemType itemType);
-
-#endif  /* NDEBUG */
-
-#define SecImpExpDbg(args...)  secdebug("SecImpExp", ## args)
-#define SecImpInferDbg(args...)        secdebug("SecImpInfer", ## args)
-
-/* 
- * Parse file extension and attempt to map it to format and type. Returns true 
- * on success. 
- */
-bool impExpImportParseFileExten(
-       CFStringRef                     fstr,
-       SecExternalFormat   *inputFormat,   // RETURNED
-       SecExternalItemType     *itemType);             // RETURNED
-
-/* do a [NSString stringByDeletingPathExtension] equivalent */
-CFStringRef impExpImportDeleteExtension(
-       CFStringRef                     fileStr);
-
-/*
- * map {algorithm, class, SecExternalFormat} to a CSSM_KEYBLOB_FORMAT.
- * Returns errSecUnsupportedFormat in the rare appropriate case.
- */
-OSStatus impExpKeyForm(
-       SecExternalFormat               externForm,
-       SecExternalItemType             itemType,
-       CSSM_ALGORITHMS                 alg,
-       CSSM_KEYBLOB_FORMAT             *cssmForm,              // RETURNED
-       CSSM_KEYCLASS                   *cssmClass);    // RETRUNED
-
-/*
- * Guess an incoming blob's type, format and (for keys only) algorithm
- * by examining its contents. Returns true on success, in which case 
- * *inputFormat and *itemType, and *keyAlg are valid. Caller optionally 
- * passes in valid values any number of these as a clue.
- */
-bool impExpImportGuessByExamination(
-       CFDataRef                       inData,
-       SecExternalFormat   *inputFormat,       // may be kSecFormatUnknown on entry 
-       SecExternalItemType     *itemType,              // may be kSecItemTypeUnknown on entry 
-       CSSM_ALGORITHMS         *keyAlg);               // CSSM_ALGID_NONE - unknown
-
-/*
- * Obtain the CDSA-layer CSSM_RESOURCE_CONTROL_CONTEXT given a SecAccessRef.
- */
-extern OSStatus impExpAccessToRcc(
-       SecAccessRef    accessRef,
-       const CSSM_RESOURCE_CONTROL_CONTEXT **rcc);
-
-
-
-/* low-level crypto/CSP support */
-
-/*
- * Given a context specified via a CSSM_CC_HANDLE, add a new
- * CSSM_CONTEXT_ATTRIBUTE to the context as specified by AttributeType,
- * AttributeLength, and an untyped pointer.
- */
-CSSM_RETURN impExpAddContextAttribute(CSSM_CC_HANDLE CCHandle,
-       uint32 AttributeType,
-       uint32 AttributeLength,
-       const void *AttributePtr);
-
-/*
- * Free memory via specified plugin's app-level allocator
- */
-void impExpFreeCssmMemory(
-       CSSM_HANDLE             hand,
-       void                    *p);
-
-/* 
- * Calculate digest of any CSSM_KEY. Unlike older implementations
- * of this logic, you can actually calculate the public key hash 
- * on any class of key, any format, raw CSP or CSPDL.
- *
- * Caller must free keyDigest->Data using impExpFreeCssmMemory() since 
- * this is allocated by the CSP's app-specified allocator.
- */
-CSSM_RETURN impExpKeyDigest(
-       CSSM_CSP_HANDLE cspHand,
-       CSSM_KEY_PTR    key,
-       CSSM_DATA_PTR   keyDigest);             // contents allocd and RETURNED
-
-/*
- * Given a CFTypeRef passphrase which may be a CFDataRef or a CFStringRef,
- * return a refcounted CFStringRef suitable for use with the PKCS12 library.
- * PKCS12 passphrases in CFData format must be UTF8 encoded. 
- */
-OSStatus impExpPassphraseToCFString(
-       CFTypeRef   passin,
-       CFStringRef *passout);  // may be the same as passin, but refcounted
-
-/*
- * Given a CFTypeRef passphrase which may be a CFDataRef or a CFStringRef,
- * return a refcounted CFDataRef whose bytes are suitable for use with 
- * PKCS5 (v1.5 and v2.0) key derivation.
- */
-OSStatus impExpPassphraseToCFData(
-       CFTypeRef   passin,
-       CFDataRef   *passout);  // may be the same as passin, but refcounted
-
-/*
- * Obtain passphrase, given a SecKeyImportExportParameters. 
- *
- * Passphrase comes from one of two places: app-specified, in 
- * SecKeyImportExportParameters.passphrase (either as CFStringRef
- * or CFDataRef); or via the secure passphrase mechanism.
- *
- * Passphrase is returned in one of two forms:
- *
- * -- Secure passphrase is returned as a CSSM_KEY_PTR, which the 
- *    caller must CSSM_FreeKey later. THe CSSM_KEY_PTR must also 
- *    be free()d. 
- *
- * -- CFTypeRef for app-supplied passphrases. This can be one of 
- *    two types:
- *
- *    -- CFStringRef, for use with P12
- *    -- CFDataRef, for more general use (e.g. for PKCS5). 
- *   
- *    In either case the caller must CFRelease the result.    
- */
-typedef enum {
-       SPF_String,                     // CFStringRef, P12
-       SPF_Data                        // CFDataRef, PKCS5
-} impExpPassphraseForm;
-
-typedef enum {
-       VP_Export,                      // verify passphrase
-       VP_Import                       // no verify
-} impExpVerifyPhrase;
-
-OSStatus impExpPassphraseCommon(
-       const SecKeyImportExportParameters *keyParams,
-       CSSM_CSP_HANDLE                 cspHand,                // MUST be CSPDL, for passKey generation
-       impExpPassphraseForm    phraseForm,
-       impExpVerifyPhrase              verifyPhrase,   // for secure passphrase
-       CFTypeRef                               *phrase,                // RETURNED, or
-       CSSM_KEY_PTR                    *passKey);              // mallocd and RETURNED
-       
-CSSM_KEYATTR_FLAGS ConvertArrayToKeyAttributes(SecKeyRef aKey, CFArrayRef usage);
-
-Boolean ConvertSecKeyImportExportParametersToSecImportExportKeyParameters(SecKeyRef aKey,
-       const SecItemImportExportKeyParameters* newPtr, SecKeyImportExportParameters* oldPtr);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  /* _SECURITY_SEC_IMPORT_EXPORT_UTILS_H_ */
-