X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/Security/libsecurity_keychain/lib/SecExternalRep.h diff --git a/Security/libsecurity_keychain/lib/SecExternalRep.h b/Security/libsecurity_keychain/lib/SecExternalRep.h deleted file mode 100644 index 5c38e106..00000000 --- a/Security/libsecurity_keychain/lib/SecExternalRep.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright (c) 2004,2011,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@ - * - * SecExternalRep.h - private classes representing external representations of - * SecKeychainItemRefs, used by SecImportExport.h - */ - -#ifndef _SECURITY_SEC_EXTERNAL_REP_H_ -#define _SECURITY_SEC_EXTERNAL_REP_H_ - -#include "SecImportExport.h" - -/* - * mechanism to limit private key import - */ -typedef enum { - PIS_NoLimit, // no limit - PIS_AllowOne, // allow import of at most one - PIS_NoMore // found one, no more allowed -} ImpPrivKeyImportState; - -namespace Security -{ - -namespace KeychainCore -{ - -/* - * When exporting, each instance of this represents one keychain item we're - * exporting. Note that SecIdentityRefs are represented by two of these - one - * for the cert, one for the key. - */ -class SecExportRep -{ -protected: - SecExportRep( - CFTypeRef kcItemRef); - -public: - /* default constructor throws */ - SecExportRep(); - - /* - * Gleans SecExternalItemType from incoming type, throws MacOSError if - * incoming type is bogus, and vends an instance of a suitable subclass. - * Vended object holds a reference to kcItem for its lifetime. - */ - static SecExportRep *vend( - CFTypeRef kcItemRef); - - virtual ~SecExportRep(); - - /* - * Append external representation to CFData. - * Implemented in subclass. - */ - virtual OSStatus exportRep( - SecExternalFormat format, - SecItemImportExportFlags flags, - const SecKeyImportExportParameters *keyParams, // optional - CFMutableDataRef outData, // data appended here - const char **pemHeader); // e.g., "X509 CERTIFICATE" - - /* member variables are read-only to the public */ - SecKeychainItemRef kcItem() { return mKcItem; } - SecExternalItemType externType() { return mExternType; } - CFArrayRef pemParamLines() { return mPemParamLines; } - -protected: - SecKeychainItemRef mKcItem; - SecExternalItemType mExternType; // inferred in vend() - CFArrayRef mPemParamLines; // optional PEM header strings - -}; - -/* - * Class representing one item we're importing from external representation. - * Normally represents the one "thing" the app has provided to - * SecKeychainItemImport(), but when importing in kSecFormatPEMSequence - * format, the inpus is parsed into separate components, each of which - * gets one instance of this class. - */ -class SecImportRep -{ -private: - /* no default constructor */ - SecImportRep() { } - -public: - /* - * Between constructor and the importRep() call, we're a placeholder to - * allow our owner to keep track of what is in an incoming pile of bits. - * We keep a reference to the incoming CFDataRef for our lifetime. - */ - SecImportRep( - CFDataRef external, - SecExternalItemType externType, // may be unknown - SecExternalFormat externFormat, // may be unknown - CSSM_ALGORITHMS keyAlg, // may be unknown, CSSM_ALGID_NONE - CFArrayRef pemParamLines = NULL); - - ~SecImportRep(); - - /* - * Convert to one or more SecKeychainItemRefs and/or import to keychain. - * Both mExternType and mExternFormat must be valid at this point. - * Any conversion requiring unwrapping rerquires either a keychain - * into which the unwrapped items will be imported) or a CSPDL handle (in - * which case the resulting items are floating and ephemeral). - * If we create a SecKeychainItemRefs, the only ref count held on - * return will be that held by outArray. - * - * Incoming CSP handle is required; by convention it must be derived from - * importKeychain if importKeychain is present. - */ - OSStatus importRep( - SecKeychainRef importKeychain, // optional - CSSM_CSP_HANDLE cspHand, // required - SecItemImportExportFlags flags, - const SecKeyImportExportParameters *keyParams, // optional - ImpPrivKeyImportState &keyImportState, // IN/OUT - CFMutableArrayRef outArray); // optional, append here - -private: - /* implemented in SecWrappedKeys.cpp */ - OSStatus importWrappedKeyOpenssl( - SecKeychainRef importKeychain, // optional - CSSM_CSP_HANDLE cspHand, // required - SecItemImportExportFlags flags, - const SecKeyImportExportParameters *keyParams, // optional - CFMutableArrayRef outArray); // optional, append here - - /* optional inferred PrintName attribute */ - char *mPrintName; - -public: - /* Just keep these public, it simplifies things */ - CFDataRef mExternal; - SecExternalItemType mExternType; - SecExternalFormat mExternFormat; - CSSM_ALGORITHMS mKeyAlg; - CFArrayRef mPemParamLines; // optional PEM header strings -}; - -} // end namespace KeychainCore - -} // end namespace Security - -extern "C" { - -/* implemented in SecWrappedKeys.cpp */ -OSStatus impExpWrappedKeyOpenSslExport( - SecKeyRef secKey, - SecItemImportExportFlags flags, - const SecKeyImportExportParameters *keyParams, // optional - CFMutableDataRef outData, // output appended here - const char **pemHeader, // RETURNED - CFArrayRef *pemParamLines);// RETURNED - -} - -#endif /* _SECURITY_SEC_IMPORT_EXPORT_H_ */