]> git.saurik.com Git - apple/security.git/blobdiff - SecurityTests/clxutils/threadTest/rsaSign.cpp
Security-57740.51.3.tar.gz
[apple/security.git] / SecurityTests / clxutils / threadTest / rsaSign.cpp
diff --git a/SecurityTests/clxutils/threadTest/rsaSign.cpp b/SecurityTests/clxutils/threadTest/rsaSign.cpp
deleted file mode 100644 (file)
index 7e23c5e..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Simple RSA sign/verify threadTest module
- */
-/*
- * Simple sign/verify test
- */
-#include "testParams.h"
-#include <Security/cssmtype.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-#include <cspxutils/cspwrap.h>
-#include <cspxutils/common.h>
-#include <BSafe/bsafe.h>
-
-/* for memory leak debug only, with only one thread running */
-#define DO_PAUSE                       0
-
-#define SAFE_RAND_DATA         0
-
-#define KEY_SIZE                       CSP_RSA_KEY_SIZE_DEFAULT                /* key size, bits */
-#define MAX_SIG_SIZE           ((KEY_SIZE / 8) * 2)    /* max signature size, bytes */
-#define PTEXT_SIZE                     1024
-#define NUM_SEED_BYTES         32
-
-static B_ALGORITHM_METHOD *BSAFE_ALGORITHM_CHOOSER[] = {
-  &AM_MD5_RANDOM,
-  &AM_MD,
-  &AM_MD5,
-  &AM_MAC,
-  &AM_SHA,
-  &AM_RSA_CRT_DECRYPT,
-  &AM_RSA_CRT_ENCRYPT,
-  &AM_RSA_DECRYPT,
-  &AM_RSA_ENCRYPT,
-  &AM_RSA_KEY_GEN,
-  (B_ALGORITHM_METHOD *)NULL_PTR
-};
-
-/* generate RSA key pair */
-static int RsaGenKeyPair(
-       const TestParams        *testParams,
-       unsigned                        keySize,
-       B_KEY_OBJ                       *pubKey,
-       B_KEY_OBJ                       *privKey)
-{
-       int                                     brtn;
-       B_ALGORITHM_OBJ                 keypairGenerator = (B_ALGORITHM_OBJ)NULL_PTR;
-       static unsigned char    f4Data[3] = {0x01, 0x00, 0x01};
-       B_ALGORITHM_OBJ                 randomAlgorithm = (B_ALGORITHM_OBJ)NULL_PTR;
-       uint8                                   seedBytes[NUM_SEED_BYTES];
-       CSSM_DATA                               seedData = {NUM_SEED_BYTES, seedBytes};
-       A_RSA_KEY_GEN_PARAMS    keygenParams;
-       
-       /* boilerplate RSA key pair generate */
-       /* first the random algorithm object */
-       brtn = B_CreateAlgorithmObject(&randomAlgorithm);
-       if(brtn) {
-               printf("***B_CreateAlgorithmObject error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_SetAlgorithmInfo(randomAlgorithm,
-               AI_MD5Random,
-               NULL_PTR);
-       if(brtn) {
-               printf("***B_SetAlgorithmInfo error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_RandomInit(randomAlgorithm,
-               BSAFE_ALGORITHM_CHOOSER,
-               (A_SURRENDER_CTX *)NULL_PTR);
-       if(brtn) {
-               printf("***B_RandomInit error (%d)\n", brtn);
-               return 1;
-       }
-       #if     SAFE_RAND_DATA
-       threadGetRandData(testParams, &seedData, NUM_SEED_BYTES);
-       #else
-       simpleGenData(&seedData, NUM_SEED_BYTES,NUM_SEED_BYTES);
-       #endif
-
-       brtn = B_RandomUpdate(randomAlgorithm, seedBytes, NUM_SEED_BYTES, 
-                       (A_SURRENDER_CTX *)NULL_PTR);
-       if(brtn) {
-               printf("***B_RandomUpdate error (%d)\n", brtn);
-               return 1;
-       }
-
-       /* create a keypair generator */
-       brtn = B_CreateAlgorithmObject(&keypairGenerator);
-       if(brtn) {
-               printf("***B_CreateAlgorithmObject error (%d)\n", brtn);
-               return 1;
-       }
-       keygenParams.modulusBits = keySize;
-       keygenParams.publicExponent.data = f4Data;
-       keygenParams.publicExponent.len = 3;
-
-       brtn = B_SetAlgorithmInfo(keypairGenerator,
-               AI_RSAKeyGen,
-               (POINTER)&keygenParams);
-       if(brtn) {
-               printf("***B_SetAlgorithmInfo error (%d)\n", brtn);
-               return 1;
-       }
-       
-       /* go for it */
-       brtn = B_GenerateInit(keypairGenerator,
-               BSAFE_ALGORITHM_CHOOSER,
-               (A_SURRENDER_CTX *)NULL_PTR);
-       if(brtn) {
-               printf("***B_GenerateInit error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_CreateKeyObject(pubKey);
-       if(brtn) {
-               printf("***B_CreateKeyObject error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_CreateKeyObject(privKey);
-       if(brtn) {
-               printf("***B_CreateKeyObject error (%d)\n", brtn);
-               return 1;
-       }
-
-       brtn = B_GenerateKeypair(keypairGenerator,
-               *pubKey,
-               *privKey,
-               randomAlgorithm,
-               (A_SURRENDER_CTX *)NULL_PTR);
-       if(brtn) {
-               printf("***B_GenerateKeypair error (%d)\n", brtn);
-               return 1;
-       }
-
-       B_DestroyAlgorithmObject (&keypairGenerator);
-       B_DestroyAlgorithmObject (&randomAlgorithm);
-       return 0;
-}
-
-static int rsaSign(
-               const TestParams        *testParams,
-               B_KEY_OBJ                       privKey,
-               const CSSM_DATA         *ptext,
-               uint8                           *sigBytes,
-               unsigned                        maxSigSize,
-               unsigned                        *actSigSize)            // RETURNED
-{
-       int                                     brtn;
-       B_ALGORITHM_OBJ                 signer = (B_ALGORITHM_OBJ)NULL_PTR;
-
-       brtn = B_CreateAlgorithmObject(&signer);
-       if(brtn) {
-               printf("***B_CreateAlgorithmObject error (%d)\n", brtn);
-               return 1;
-       }
-       
-       /* we happen to know that no info is needed for any signing algs */
-       brtn = B_SetAlgorithmInfo(signer,
-               AI_MD5WithRSAEncryption,
-               NULL);
-       if(brtn) {
-               printf("***B_SetAlgorithmInfo error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_SignInit(signer,
-               privKey,
-               BSAFE_ALGORITHM_CHOOSER,
-               (A_SURRENDER_CTX *)NULL_PTR);
-       if(brtn) {
-               printf("***B_SignInit error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_SignUpdate(signer,
-               ptext->Data,
-               ptext->Length,
-               NULL);
-       if(brtn) {
-               printf("***B_SignUpdate error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_SignFinal(signer,
-               sigBytes,
-               actSigSize,
-               maxSigSize,
-               NULL,                           // randAlg
-               NULL);
-       if(brtn) {
-               printf("***B_SignFinal error (%d)\n", brtn);
-       }
-       B_DestroyAlgorithmObject(&signer);
-       return brtn;
-}
-
-static int rsaSigVerify(
-               const TestParams        *testParams,
-               B_KEY_OBJ                       pubKey,
-               const CSSM_DATA         *ptext,
-               uint8                           *sigBytes,
-               unsigned                        sigSize)                // RETURNED
-{
-       int                                     brtn;
-       B_ALGORITHM_OBJ                 verifier = (B_ALGORITHM_OBJ)NULL_PTR;
-
-       brtn = B_CreateAlgorithmObject(&verifier);
-       if(brtn) {
-               printf("***B_CreateAlgorithmObject error (%d)\n", brtn);
-               return 1;
-       }
-       
-       /* we happen to know that no info is needed for any verifying algs */
-       brtn = B_SetAlgorithmInfo(verifier,
-               AI_MD5WithRSAEncryption,
-               NULL);
-       if(brtn) {
-               printf("***B_SetAlgorithmInfo error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_VerifyInit(verifier,
-               pubKey,
-               BSAFE_ALGORITHM_CHOOSER,
-               (A_SURRENDER_CTX *)NULL_PTR);
-       if(brtn) {
-               printf("***B_VerifyInit error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_VerifyUpdate(verifier,
-               ptext->Data,
-               ptext->Length,
-               NULL);
-       if(brtn) {
-               printf("***B_VerifyUpdate error (%d)\n", brtn);
-               return 1;
-       }
-       brtn = B_VerifyFinal(verifier,
-               sigBytes,
-               sigSize,
-               NULL,                           // randAlg
-               NULL);
-       if(brtn) {
-               printf("***B_VerifyFinal error (%d)\n", brtn);
-       }
-       B_DestroyAlgorithmObject(&verifier);
-       return brtn;
-}
-
-/* per-thread info */
-typedef struct {
-       B_KEY_OBJ       privKey;
-       B_KEY_OBJ       pubKey;
-       CSSM_DATA       ptext;
-} TT_RsaSignParams;
-
-int rsaSignInit(TestParams *testParams)
-{
-       int                                     rtn;
-       TT_RsaSignParams                *svParams;
-       
-       svParams = (TT_RsaSignParams *)CSSM_MALLOC(sizeof(TT_RsaSignParams));
-       rtn = RsaGenKeyPair(testParams,
-               KEY_SIZE,
-               &svParams->pubKey,
-               &svParams->privKey);
-       if(rtn) {
-               printf("***Error generating key pair; aborting\n");
-               return 1;
-       }
-       svParams->ptext.Data = (uint8 *)CSSM_MALLOC(PTEXT_SIZE);
-       svParams->ptext.Length = PTEXT_SIZE;
-       
-       testParams->perThread = svParams;
-       return 0;
-}
-
-int rsaSignTest(TestParams *testParams)
-{
-       TT_RsaSignParams        *svParams = (TT_RsaSignParams *)testParams->perThread;
-       unsigned                        loop;
-       int                                     rtn;
-       uint8                           sigBytes[MAX_SIG_SIZE];
-       unsigned                        actSigSize;
-       
-       for(loop=0; loop<testParams->numLoops; loop++) {
-               if(testParams->verbose) {
-                       printf("signVerify thread %d: loop %d\n", 
-                               testParams->threadNum, loop);
-               }
-               else if(!testParams->quiet) {
-                       printChar(testParams->progressChar);
-               }
-               #if SAFE_RAND_DATA
-               CSSM_RETURN crtn = threadGetRandData(testParams, &svParams->ptext, PTEXT_SIZE);
-               if(crtn) {
-                       return 1;
-               }
-               #else
-               simpleGenData(&svParams->ptext, PTEXT_SIZE,PTEXT_SIZE);
-               #endif
-               rtn = rsaSign(testParams,
-                       svParams->privKey,
-                       &svParams->ptext,
-                       sigBytes,
-                       MAX_SIG_SIZE,
-                       &actSigSize);
-               if(rtn) {
-                       return 1;
-               }
-               rtn = rsaSigVerify(testParams,
-                       svParams->pubKey,
-                       &svParams->ptext,
-                       sigBytes,
-                       actSigSize);
-               if(rtn) {
-                       return 1;
-               }
-
-               #if DO_PAUSE
-               fpurge(stdin);
-               printf("Hit CR to proceed: ");
-               getchar();
-               #endif
-       }
-       return 0;
-}
-