diff options
Diffstat (limited to 'lib/dns/sec/dnssafe/ahchgen.c')
-rw-r--r-- | lib/dns/sec/dnssafe/ahchgen.c | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/lib/dns/sec/dnssafe/ahchgen.c b/lib/dns/sec/dnssafe/ahchgen.c deleted file mode 100644 index f1d7bd7c..00000000 --- a/lib/dns/sec/dnssafe/ahchgen.c +++ /dev/null @@ -1,216 +0,0 @@ -/* Copyright (C) RSA Data Security, Inc. created 1993, 1996. This is an - unpublished work protected as such under copyright law. This work - contains proprietary, confidential, and trade secret information of - RSA Data Security, Inc. Use, disclosure or reproduction without the - express written authorization of RSA Data Security, Inc. is - prohibited. - */ - -/* Define this so that the type of the 'this' pointer in the - virtual functions will be correct for this derived class. - */ -struct AHChooseGenerate; -#define THIS_GENERATE struct AHChooseGenerate - -/* Define this so that the type of the AlgaChoice pointer in the - INIT_ALGA functions will be correct for this derived class. - */ -struct GenerateAlgaChoice; -#define THIS_ALGA_CHOICE struct GenerateAlgaChoice - -#include "global.h" -#include "algae.h" -#include "bsafe2.h" -#include "bkey.h" -#include "balg.h" -#include "balgmeth.h" -#include "ahchgen.h" -#include "amgen.h" - -static int InitGenerateAlga PROTO_LIST - ((GenerateAlgaChoice *, POINTER, B_ALGORITHM_METHOD *, A_SURRENDER_CTX *)); -static int GenerateResult PROTO_LIST - ((GenerateAlgaChoice *, POINTER *, B_Algorithm *, A_SURRENDER_CTX *)); - -static AHGenerateVTable V_TABLE = { - AHChooseGenerateDestructor, AHChooseGenerateInit, AHChooseGenerateKeypair, - AHChooseGenerateParameters -}; - -AHChooseGenerate *AHChooseGenerateConstructor2 (handler, infoType, info) -AHChooseGenerate *handler; -struct B_AlgorithmInfoType *infoType; -POINTER info; -{ - if (handler == (AHChooseGenerate *)NULL_PTR) { - /* This constructor is being used to do a new */ - if ((handler = (AHChooseGenerate *)T_malloc (sizeof (*handler))) - == (AHChooseGenerate *)NULL_PTR) - return (handler); - } - - /* Construct base class */ - AHGenerateConstructor (&handler->generate); - - ALGA_CHOICE_Constructor - (&handler->generateAlgaChoice.algaChoice, InitGenerateAlga); - ResizeContextConstructor (&handler->generateAlgaChoice.secondContext); - ResizeContextConstructor (&handler->generateAlgaChoice.randomBlock); - - /* Set algaChoice. - */ - handler->generateAlgaChoice.algaChoice._algorithmInfoType = infoType; - handler->generateAlgaChoice.algaChoice._algorithmInfo = info; - - handler->generate.vTable = &V_TABLE; - - return (handler); -} - -void AHChooseGenerateDestructor (handler) -AHChooseGenerate *handler; -{ - ResizeContextDestructor (&handler->generateAlgaChoice.secondContext); - ResizeContextDestructor (&handler->generateAlgaChoice.randomBlock); - ALGA_CHOICE_Destructor (&handler->generateAlgaChoice.algaChoice); - /* There is no desructor to call for the base class. */ -} - -int AHChooseGenerateInit (handler, chooser, surrenderContext) -AHChooseGenerate *handler; -B_ALGORITHM_CHOOSER chooser; -A_SURRENDER_CTX *surrenderContext; -{ - return (AlgaChoiceChoose - (&handler->generateAlgaChoice.algaChoice, 0, (B_Key *)NULL_PTR, - chooser, surrenderContext)); -} - -int AHChooseGenerateKeypair - (handler, publicKey, privateKey, randomAlgorithm, surrenderContext) -AHChooseGenerate *handler; -B_Key *publicKey; -B_Key *privateKey; -B_Algorithm *randomAlgorithm; -A_SURRENDER_CTX *surrenderContext; -{ - POINTER result; - int status; - - if ((status = GenerateResult - (&handler->generateAlgaChoice, &result, randomAlgorithm, - surrenderContext)) != 0) - return (status); - if ((status = B_KeySetInfo - (publicKey, handler->generateAlgaChoice._resultInfoType, result)) != 0) - return (status); - return (B_KeySetInfo - (privateKey, handler->generateAlgaChoice._resultInfoType, result)); -} - -int AHChooseGenerateParameters - (handler, resultAlgorithm, randomAlgorithm, surrenderContext) -AHChooseGenerate *handler; -B_Algorithm *resultAlgorithm; -B_Algorithm *randomAlgorithm; -A_SURRENDER_CTX *surrenderContext; -{ - POINTER result; - int status; - - if ((status = GenerateResult - (&handler->generateAlgaChoice, &result, randomAlgorithm, - surrenderContext)) != 0) - return (status); - - /* Force the resultInfoType into a B_AlgorithmInfoType since it is - supplied in the chooser as a B_KeyInfoType. */ - return (B_AlgorithmSetInfo - (resultAlgorithm, (struct B_AlgorithmInfoType *) - handler->generateAlgaChoice._resultInfoType, result)); -} - -static int InitGenerateAlga - (generateAlgaChoice, keyInfo, algorithmMethod, surrenderContext) -GenerateAlgaChoice *generateAlgaChoice; -POINTER keyInfo; -B_ALGORITHM_METHOD *algorithmMethod; -A_SURRENDER_CTX *surrenderContext; -{ - int status; - unsigned int contextSize, secondContextSize; - -UNUSED_ARG (keyInfo) - /* Note that this also gets the resultInfoType which will be used later - by GenerateResult. */ - if ((status = (*((A_GENERATE_ALGA *)algorithmMethod->alga)->Query) - (&contextSize, &secondContextSize, &generateAlgaChoice->_randomBlockLen, - &generateAlgaChoice->_resultInfoType, - generateAlgaChoice->algaChoice._algorithmInfo)) != 0) - return (ConvertAlgaeError (status)); - - /* Create the context. - */ - if ((status = ResizeContextMakeNewContext - (&generateAlgaChoice->algaChoice.context, contextSize)) != 0) - return (status); - - /* Create the second context which is only passed during Init, but - must persist for all operations. */ - if ((status = ResizeContextMakeNewContext - (&generateAlgaChoice->secondContext, secondContextSize)) != 0) - return (status); - - /* Create randomBlock which will be filled in during GenerateResult. */ - if ((status = ResizeContextMakeNewContext - (&generateAlgaChoice->randomBlock, generateAlgaChoice->_randomBlockLen)) - != 0) - return (status); - - if ((status = (*((A_GENERATE_ALGA *)algorithmMethod->alga)->Init) - (generateAlgaChoice->algaChoice.context.z.context, - generateAlgaChoice->secondContext.z.context, - generateAlgaChoice->algaChoice._algorithmInfo, surrenderContext)) != 0) - return (ConvertAlgaeError (status)); - - return (0); -} - -/* Call the generate procedure repeatedly with a new random block - until it succeeds. - */ -static int GenerateResult - (generateAlgaChoice, result, randomAlgorithm, surrenderContext) -GenerateAlgaChoice *generateAlgaChoice; -POINTER *result; -B_Algorithm *randomAlgorithm; -A_SURRENDER_CTX *surrenderContext; -{ - int status; - - /* Fill in the random block and try generating as long as the - the generate operation returns BE_NEED_RANDOM. - */ - do { - if ((status = B_AlgorithmGenerateRandomBytes - (randomAlgorithm, - (unsigned char *)generateAlgaChoice->randomBlock.z.context, - generateAlgaChoice->_randomBlockLen, surrenderContext)) != 0) - return (status); - - if ((status = (*((A_GENERATE_ALGA *) - generateAlgaChoice->algaChoice._alga)->Generate) - (generateAlgaChoice->algaChoice.context.z.context, result, - (unsigned char *)generateAlgaChoice->randomBlock.z.context, - surrenderContext)) != 0) { - if (status != AE_NEED_RANDOM) - return (ConvertAlgaeError (status)); - - /* Else continue and try again */ - } - else - /* Success, so return */ - return (0); - } while (1); -} - |