1/* 2 * Copyright (c) 2004 Apple Computer, 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 * SecImportExportPem.h - private PEM routines for SecImportExport 24 */ 25 26#ifndef _SECURITY_SEC_IMPORT_EXPORT_PEM_H_ 27#define _SECURITY_SEC_IMPORT_EXPORT_PEM_H_ 28 29#include "SecImportExport.h" 30#include "SecExternalRep.h" 31 32/* take these PEM header strings right from the authoritative source */ 33#include <openssl/pem.h> 34 35/* Other PEM Header strings not defined in openssl */ 36#define PEM_STRING_DH_PUBLIC "DH PUBLIC KEY" 37#define PEM_STRING_DH_PRIVATE "DH PRIVATE KEY" 38#define PEM_STRING_PKCS12 "PKCS12" 39#define PEM_STRING_SESSION "SYMMETRIC KEY" 40//#define PEM_STRING_ECDSA_PUBLIC "EC PUBLIC KEY" 41#define PEM_STRING_ECDSA_PRIVATE "EC PRIVATE KEY" 42 43#ifdef __cplusplus 44extern "C" { 45#endif 46 47/* 48 * PEM decode incoming data, appending SecImportRep's to specified array. 49 * Returned SecImportReps may or may not have a known type and format. 50 * IF incoming data is not PEM or base64, we return errSecSuccess with *isPem false. 51 */ 52OSStatus impExpParsePemToImportRefs( 53 CFDataRef importedData, 54 CFMutableArrayRef importReps, // output appended here 55 bool *isPem); // true means we think it was PEM regardless of 56 // final return code 57 58/* 59 * PEM encode a single SecExportRep's data, appending to a CFData. 60 */ 61OSStatus impExpPemEncodeExportRep( 62 CFDataRef derData, 63 const char *pemHeader, 64 CFArrayRef pemParamLines, // optional 65 CFMutableDataRef outData); 66 67#ifdef __cplusplus 68} 69#endif 70 71#endif /* _SECURITY_SEC_IMPORT_EXPORT_PEM_H_ */ 72