]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_apple_csp/lib/algmaker.cpp
Security-59306.11.20.tar.gz
[apple/security.git] / OSX / libsecurity_apple_csp / lib / algmaker.cpp
diff --git a/OSX/libsecurity_apple_csp/lib/algmaker.cpp b/OSX/libsecurity_apple_csp/lib/algmaker.cpp
deleted file mode 100644 (file)
index 9b67290..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Copyright (c) 2000-2001,2011,2014 Apple 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.
- */
-
-#ifdef BSAFE_CSP_ENABLE
-
-
-//
-// algmaker - algorithm factory for BSafe 4
-//
-#include "bsafecspi.h"
-#include "bsafecsp.h"
-#include "AppleCSPSession.h"
-
-//
-// BSafe's Chooser table. 
-// These are references to all *BSafe algorithms* we use (and thus must link in)
-//
-const B_ALGORITHM_METHOD * const BSafe::bsChooser[] = {
-    // digests
-    &AM_SHA,
-    &AM_MD5,
-       &AM_MD2,
-
-    // organizational
-    &AM_CBC_ENCRYPT,
-    &AM_CBC_DECRYPT,
-    &AM_ECB_ENCRYPT,
-    &AM_ECB_DECRYPT,
-    &AM_OFB_ENCRYPT,
-    &AM_OFB_DECRYPT,
-
-    // DES & variants
-    &AM_DES_ENCRYPT,
-    &AM_DES_DECRYPT,
-    &AM_DESX_ENCRYPT,
-    &AM_DESX_DECRYPT,
-    &AM_DES_EDE_ENCRYPT,
-    &AM_DES_EDE_DECRYPT,
-
-    // RCn stuff
-    &AM_RC2_CBC_ENCRYPT,
-    &AM_RC2_CBC_DECRYPT,
-    &AM_RC2_ENCRYPT,
-    &AM_RC2_DECRYPT,
-    &AM_RC4_ENCRYPT,
-    &AM_RC4_DECRYPT,
-    &AM_RC5_ENCRYPT,
-    &AM_RC5_DECRYPT,
-    &AM_RC5_CBC_ENCRYPT,
-    &AM_RC5_CBC_DECRYPT,
-
-    // RSA
-    &AM_RSA_STRONG_KEY_GEN,
-    &AM_RSA_KEY_GEN,
-    &AM_RSA_CRT_ENCRYPT_BLIND,
-    &AM_RSA_CRT_DECRYPT_BLIND,
-    &AM_RSA_ENCRYPT,
-    &AM_RSA_DECRYPT,
-
-    // DSA
-    &AM_DSA_PARAM_GEN,
-    &AM_DSA_KEY_GEN,
-
-    // signatures
-    &AM_DSA_SIGN,
-    &AM_DSA_VERIFY,
-
-    // random number generation
-    &AM_MD5_RANDOM,
-    &AM_SHA_RANDOM,
-
-    // sentinel
-    (B_ALGORITHM_METHOD *)NULL_PTR
-};
-
-
-//
-// Makers
-//
-template <class Ctx>
-class Maker0 : public BSafe::MakerBase {
-public:
-       Ctx *make(AppleCSPSession &session, const Context &context) const
-       { return new Ctx(session, context); }
-};
-
-template <class Ctx, class Arg>
-class Maker1 : public BSafe::MakerBase {
-       Arg arg;
-public:
-       Maker1(Arg a) : arg(a) { }
-       Ctx *make(AppleCSPSession &session, const Context &context) const
-       { return new Ctx(session, context, arg); }
-};
-
-template <class Ctx, class Arg1, class Arg2>
-class Maker2 : public BSafe::MakerBase {
-       Arg1 arg1; Arg2 arg2;
-public:
-       Maker2(Arg1 a1, Arg2 a2) : arg1(a1), arg2(a2) { }
-       Ctx *make(AppleCSPSession &session, const Context &context) const
-       { return new Ctx(session, context, arg1, arg2); }
-};
-
-template <class Ctx, class Arg1, class Arg2, class Arg3>
-class Maker3 : public BSafe::MakerBase {
-       Arg1 arg1; Arg2 arg2; Arg3 arg3;
-public:
-       Maker3(Arg1 a1, Arg2 a2, Arg3 a3) : 
-               arg1(a1), arg2(a2), arg3(a3) { }
-       Ctx *make(AppleCSPSession &session, const Context &context) const
-       { return new Ctx(session, context, arg1, arg2, arg3); }
-};
-
-
-bug_const BSafe::MakerTable BSafe::algorithms[] = {
-    // signing algorithms
-       // constructor args: BSafe algorithm, signature size
-    { 
-               CSSM_ALGID_SHA1WithDSA, 
-               CSSM_ALGCLASS_SIGNATURE,
-               new Maker2<SigningContext, B_INFO_TYPE, size_t>
-                       (AI_DSAWithSHA1, 48)                    // max size of 48 bytes
-       },
-    { 
-               CSSM_ALGID_SHA1WithRSA, 
-               CSSM_ALGCLASS_SIGNATURE,
-               new Maker2<SigningContext, B_INFO_TYPE, size_t>
-                       (AI_SHA1WithRSAEncryption, 0)   // size = RSA key size
-       },
-       
-    { 
-               CSSM_ALGID_MD5WithRSA, 
-               CSSM_ALGCLASS_SIGNATURE,
-               new Maker2<SigningContext, B_INFO_TYPE, size_t>
-                       (AI_MD5WithRSAEncryption, 0)    // size = RSA key size
-       },
-       
-    { 
-               CSSM_ALGID_MD2WithRSA, 
-               CSSM_ALGCLASS_SIGNATURE,
-               new Maker2<SigningContext, B_INFO_TYPE, size_t>
-                       (AI_MD2WithRSAEncryption, 0)    // size = RSA key size
-       },
-       
-    // MAC algorithms
-       // constructor args: BSafe algorithm, signature size
-    { 
-               CSSM_ALGID_SHA1HMAC,    
-               CSSM_ALGCLASS_MAC,
-               new Maker2<MacContext, B_INFO_TYPE, size_t>
-                       (AI_SHA1, 20) 
-       },
-
-       // symmetric key generation
-       // constructor args: min/max key size in bits, mustBeByteSized
-    { 
-               CSSM_ALGID_RC2, 
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (1*8, 128*8, true) 
-       },
-    { 
-               CSSM_ALGID_RC4, 
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (1*8, 256*8, true) 
-       },
-    { 
-               CSSM_ALGID_RC5, 
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (1*8, 255*8, true) 
-       },
-    { 
-               CSSM_ALGID_DES, 
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (64, 64, true) 
-       },
-    { 
-               CSSM_ALGID_DESX,        
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (192, 192, true) 
-       },
-    { 
-               CSSM_ALGID_3DES_3KEY,   
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (192, 192, true) 
-       },
-    { 
-               CSSM_ALGID_SHA1HMAC,    
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker3<SymmetricKeyGenContext, uint32, uint32, bool>
-                       (160, 2048, true) 
-       },
-       
-    // symmetric encryption algorithms
-       // constructor arg: block size (1 ==> stream cipher)
-    { 
-               CSSM_ALGID_DES,
-               CSSM_ALGCLASS_SYMMETRIC,                
-               new Maker1<BlockCipherContext, size_t>(8)
-       },
-    { 
-               CSSM_ALGID_DESX,
-               CSSM_ALGCLASS_SYMMETRIC,
-               new Maker1<BlockCipherContext, size_t>(8)
-       },
-    { 
-               CSSM_ALGID_3DES_3KEY_EDE,
-               CSSM_ALGCLASS_SYMMETRIC,
-               new Maker1<BlockCipherContext, size_t>(8)
-       },
-    { 
-               CSSM_ALGID_RC2,
-               CSSM_ALGCLASS_SYMMETRIC,
-               new Maker1<BlockCipherContext, size_t>(8)
-       },
-    { 
-               CSSM_ALGID_RC4,
-               CSSM_ALGCLASS_SYMMETRIC,
-               new Maker1<BlockCipherContext, size_t>(1)
-       },
-    { 
-               CSSM_ALGID_RC5,
-               CSSM_ALGCLASS_SYMMETRIC,
-               new Maker1<BlockCipherContext, size_t>(8)
-       },
-
-    // asymmetric encryption algorithms
-    { 
-               CSSM_ALGID_RSA,         
-               CSSM_ALGCLASS_ASYMMETRIC,
-               new Maker0<PublicKeyCipherContext>()
-       },
-    { 
-               CSSM_ALGID_DSA,
-               CSSM_ALGCLASS_ASYMMETRIC,
-               new Maker0<PublicKeyCipherContext>()
-       },
-       
-       // key pair generate algorithms
-    { 
-               CSSM_ALGID_RSA,         
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker0<BSafeKeyPairGenContext>()
-       },
-    { 
-               CSSM_ALGID_DSA,
-               CSSM_ALGCLASS_KEYGEN,
-               new Maker0<BSafeKeyPairGenContext>()
-       },
-       
-       // pseudo-random number generators
-       { 
-               CSSM_ALGID_MD5Random,   
-               CSSM_ALGCLASS_RANDOMGEN,
-               new Maker1<RandomContext, B_INFO_TYPE>(AI_MD5Random) 
-       },
-       { 
-               CSSM_ALGID_SHARandom, 
-               CSSM_ALGCLASS_RANDOMGEN,
-               new Maker1<RandomContext, B_INFO_TYPE>(AI_SHA1Random) 
-       },
-};
-
-const unsigned int BSafe::algorithmCount = sizeof(algorithms) / sizeof(algorithms[0]);
-
-
-//
-// BSafeFactory hookup
-//
-void BSafeFactory::setNormAllocator(Allocator *alloc)
-{
-       BSafe::setNormAllocator(alloc);
-}
-void BSafeFactory::setPrivAllocator(Allocator *alloc)
-{
-       BSafe::setPrivAllocator(alloc);
-}
-
-bool BSafeFactory::setup(
-       AppleCSPSession &session,
-       CSPFullPluginSession::CSPContext * &cspCtx, 
-       const Context &context)
-{
-       return BSafe::setup(session, cspCtx, context);
-}
-
-
-//
-// Algorithm setup
-//
-bool BSafe::setup(
-       AppleCSPSession &session,
-       CSPFullPluginSession::CSPContext * &cspCtx, 
-       const Context &context)
-{
-    for (const BSafe::MakerTable *alg = algorithms; 
-            alg < algorithms + algorithmCount; 
-                alg++) {
-        if ((alg->algorithmId == context.algorithm()) &&
-                   (alg->algClass == context.type())) {
-                               if(cspCtx != NULL) {
-                                       /* we allow reuse */
-                                       return true;
-                               }
-                               // make new context
-                               cspCtx = alg->maker->make(session, context);
-                               return true;
-        }
-       }
-       /* not ours */
-    return false;
-}
-#endif /* BSAFE_CSP_ENABLE */