]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_apple_csp/lib/AppleCSPContext.h
Security-57031.1.35.tar.gz
[apple/security.git] / libsecurity_apple_csp / lib / AppleCSPContext.h
diff --git a/libsecurity_apple_csp/lib/AppleCSPContext.h b/libsecurity_apple_csp/lib/AppleCSPContext.h
deleted file mode 100644 (file)
index ad7b373..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
- * 
- * The contents of this file constitute Original Code as defined in and are
- * subject to the Apple Public Source License Version 1.2 (the 'License').
- * You may not use this file except in compliance with the License. Please obtain
- * a copy of the License at http://www.apple.com/publicsource and read it before
- * using this file.
- * 
- * This 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.
- */
-
-
-//
-// AppleCSPContext.h - CSP-wide contexts 
-//
-#ifndef _H_APPLE_CSP_CONTEXT
-#define _H_APPLE_CSP_CONTEXT
-
-#include <security_cdsa_plugin/CSPsession.h>
-#include "BinaryKey.h"
-
-//
-// Parent class for all CSPContexts implemented in this CSP.
-// Currently the only thing we add is a reference to our
-// creator's session.
-//
-class AppleCSPSession;
-
-class AppleCSPContext : public CSPFullPluginSession::CSPContext
-{
-public:
-       AppleCSPContext(AppleCSPSession &session)
-               : mSession(session) {}
-    
-    ~AppleCSPContext();
-       
-       /* 
-        * get symmetric key bits - context.key can be either ref or raw.
-        * A convenience routine typically used by symmetric contexts' 
-        * init() routines. 
-        */
-       static void symmetricKeyBits(
-               const Context   &context,
-               AppleCSPSession &session,
-               CSSM_ALGORITHMS requiredAlg,    // throws if this doesn't match key alg
-               CSSM_KEYUSE     intendedUse,    // throws if key usage doesn't match this
-               uint8                   *&keyBits,              // RETURNED (not mallocd or copied)
-               CSSM_SIZE               &keyLen);               // RETURNED
-               
-protected:     
-       AppleCSPSession &session() { return mSession; }
-
-private:
-       AppleCSPSession &mSession;
-};
-
-//
-// Context for CSSM_ALGID_APPLE_YARROW.
-//
-class YarrowContext : public AppleCSPContext
-{
-public:
-       YarrowContext(AppleCSPSession &session);
-       virtual ~YarrowContext();
-       virtual void init(const Context &context, bool encoding = true);
-       void final(CssmData &out);
-       size_t outputSize(bool final, size_t inSize) { return outSize; }
-
-private:
-       uint32  outSize;
-};
-
-//
-// Classes which inherit from AppleCSPContext and which also perform
-// key pair generation inherit from this class as well.
-//
-class AppleKeyPairGenContext  {
-public:
-       virtual ~AppleKeyPairGenContext();
-       
-       //
-       // Subclass implements generate(const Context &, CssmKey &,
-       // CssmKey &). That method (called from CSPFullPluginSession)
-       // allocates two subclass-specific BinaryKeys and calls this
-       // method. This will eventually call down to generate(const Context &,
-       // BinaryKey &, BinaryKey &) and optionally to 
-       // BinaryKey::generateKeyBlob.
-       //
-       void generate(
-               const Context   &context, 
-               AppleCSPSession &session,               // for ref keys
-               CssmKey                 &pubKey, 
-               BinaryKey               *pubBinKey,
-               CssmKey                 &privKey,
-               BinaryKey               *privBinKey);
-
-protected:
-       // Subclasses must implement this. It cooks up a key pair.
-       virtual void generate(
-               const Context   &context,
-               BinaryKey               &pubBinKey,             // valid on successful return
-               BinaryKey               &privBinKey,    // ditto
-               uint32                  &keySize) = 0;  // ditto
-};
-
-//
-// Classes which inherit from AppleCSPContext and which also perform
-// symmetric key generation inherit from this class as well.
-//
-class AppleSymmKeyGenContext  {
-public:
-       //
-       // Subclass implements generate(const Context &, CssmKey &, 
-       // CssmKey &). Note that the second CssmKey is a dummy 
-       // argument. That method merely calls generateSymKey, allowing us 
-       // to get to the associated AppleCSPSession if we need to 
-       // store reference keys. We take care of all attribute and 
-       // usage validation and of header formatting. Parameters for
-       // validation typlically specified in constructor via an
-       // algorithm factory. 
-       //
-       AppleSymmKeyGenContext(
-               uint32                  minSize,        // in bits
-               uint32                  maxSize,        // ditto
-               bool                    byteSized)      // true --> key size must
-                                                                       //   be multiple of 8 bits
-               :       minSizeInBits(minSize),
-                       maxSizeInBits(maxSize),
-                       mustBeByteSized(byteSized)  {}
-                       
-       void generateSymKey(
-               const Context   &context, 
-               AppleCSPSession &session,               // for ref keys
-               CssmKey                 &cssmKey);              // RETURNED 
-
-private:
-       uint32                  minSizeInBits;
-       uint32                  maxSizeInBits;
-       bool                    mustBeByteSized;
-
-};
-
-/*
- * Generic symmetric key generation context, for algorithms whose
- * requirements can be expressed in min/max key size and 
- * mustBeByteSized. Such algorithms just need create one of these
- * from an algorithm factory.
- */
-class AppleSymmKeyGenerator : public AppleCSPContext, private AppleSymmKeyGenContext {
-public:
-       AppleSymmKeyGenerator(
-               AppleCSPSession &session,
-               uint32                  minSize,                // in bits
-               uint32                  maxSize,                // ditto
-               bool                    byteSized) :    // true --> key size must
-                                                                               //   be multiple of 8 bits
-                       AppleCSPContext(session),
-                       AppleSymmKeyGenContext(minSize, maxSize, byteSized) { }
-       
-       void init(const Context &context, bool encoding = true) { }
-                       
-       /* this just passes the request up to AppleSymmKeyGenContext */
-       void generate(
-               const Context   &context, 
-               CssmKey                 &symKey, 
-               CssmKey                 &dummyKey) {
-                       AppleSymmKeyGenContext::generateSymKey(
-                                       context, 
-                                       session(),
-                                       symKey);
-               }
-
-};
-
-#endif /* _H_APPLE_CSP_CONTEXT */