/* Copyright (c) 1998,2011,2014 Apple Inc. All Rights Reserved. * * NOTICE: USE OF THE MATERIALS ACCOMPANYING THIS NOTICE IS SUBJECT * TO THE TERMS OF THE SIGNED "FAST ELLIPTIC ENCRYPTION (FEE) REFERENCE * SOURCE CODE EVALUATION AGREEMENT" BETWEEN APPLE, INC. AND THE * ORIGINAL LICENSEE THAT OBTAINED THESE MATERIALS FROM APPLE, * INC. ANY USE OF THESE MATERIALS NOT PERMITTED BY SUCH AGREEMENT WILL * EXPOSE YOU TO LIABILITY. *************************************************************************** * * NSCipherFile.h - ObjC wrapper for feeCipherFile * * Revision History * ---------------- * 28 Oct 96 at NeXT * Created. */ #import <CryptKit/CryptKit.h> #import <CryptKit/CipherFileTypes.h> @interface NSCipherFile : NSObject { void *_priv; } /* * Alloc and return an autoreleased NSCipherFile object associated with * the specified data. */ + newFromCipherText : (NSData *)cipherText encrType : (cipherFileEncrType)encrType sendPubKeyData : (NSData *)sendPubKeyData otherKeyData : (NSData *)otherKeyData sigData : (NSData *)sigData // optional; nil means no signature userData : (unsigned)userData; // for caller's convenience /* * Obtain the contents of a feeCipherFile as NSData. */ - (NSData *)dataRepresentation; /* * Alloc and return an autoreleased NSCipherFile object given a data * representation. */ + newFromDataRepresentation : (NSData *)dataRep; /* * Given an NSCipherFile object, obtain its constituent parts. */ - (cipherFileEncrType)encryptionType; - (NSData *)cipherText; - (NSData *)sendPubKeyData; - (NSData *)otherKeyData; - (NSData *)sigData; - (unsigned)userData; /* * High-level cipherFile support. */ /* * Obtain the data representation of a NSCipherFile given the specified * plainText and cipherFileEncrType. * Receiver's public key is required for all encrTypes; sender's private * key is required for signature generation and also for encrType * CFE_PublicDES and CFE_FEED. */ +(feeReturn)createCipherFileForPrivKey : (NSFEEPublicKey *)sendPrivKey recvPubKey : (NSFEEPublicKey *)recvPubKey encrType : (cipherFileEncrType)encrType plainText : (NSData *)plainText genSig : (BOOL)genSig doEnc64 : (BOOL)doEnc64 // YES ==> perform enc64 userData : (unsigned)userData // for caller's convenience cipherFileData : (NSData **)cipherFileData; // RETURNED /* * Parse and decrypt a data representation of an NSCipherFile object. * * recvPrivKey is required in all cases. If sendPubKey is present, * sendPubKey - rather than the embedded sender's public key - will be * used for signature validation. */ + (feeReturn)parseCipherFileData : (NSFEEPublicKey *)recvPrivKey sendPubKey : (NSFEEPublicKey *)sendPubKey cipherFileData : (NSData *)cipherFileData doDec64 : (BOOL)doDec64 encrType : (cipherFileEncrType *)encrType // RETURNED plainText : (NSData **)plainText // RETURNED sigStatus : (feeSigStatus *)sigStatus // RETURNED sigSigner : (NSString **)sigSigner // RETURNED userData : (unsigned *)userData; // RETURNED /* * Parse and decrypt an NSCipherFile object obtained via * +newFromDataRepresentation. * * recvPrivKey is required in all cases. If sendPubKey is present, * sendPubKey - rather than the embedded sender's public key - will be * used for signature validation. */ - (feeReturn)decryptCipherFileData : (NSFEEPublicKey *)recvPrivKey sendPubKey : (NSFEEPublicKey *)sendPubKey plainText : (NSData **)plainText // RETURNED sigStatus : (feeSigStatus *)sigStatus // RETURNED sigSigner : (NSString **)sigSigner; // RETURNED @end