Example of Using Prime Number Generation Functions

Check Primality

int PrimeGen_sample(void){PrimeGen   int error = 0;


   int ctxSize;
   // define 256-bit Prime Generator
   int maxBitSize = 256;
   ippsPrimeGetSize(256, &ctxSize);
   IppsPrimeState* pPrimeG = (IppsPrimeState*)( new Ipp8u [ctxSize] );
   ippsPrimeInit(256, pPrimeG);


   // define Pseudo Random Generator (default settings)
   ippsPRNGGetSize(&ctxSize);
   IppsPRNGState* pRand = (IppsPRNGState*)(new Ipp8u [ctxSize] );
   ippsPRNGInit(160, pRand);


   do {
      Ipp32u result;


      // test primality of the value (known in advance)
      BigNumber P1("0xDB7C2ABF62E35E668076BEAD208B");
      ippsPrimeTest_BN(P1, 50, &result, pPrimeG, ippsPRNGen, pRand);
      error = IPP_IS_PRIME!=result;
      if(error) {
         cout <<"Primality of the known prime isn't confirmed\n";
         break;
      }
      else cout <<"Primality of the known prime is confirmed\n";


      // generate 256-bit prime
      BigNumber P(0, 256/8);
      while( ippStsNoErr != ippsPrimeGen_BN(P, 256, 50, pPrimeG, ippsPRNGen, pRand) ) ;
      // and test it
      ippsPrimeTest_BN(P, 50, &result, pPrimeG, ippsPRNGen, pRand);
      error = IPP_IS_PRIME!=result;
      if(error) {
         cout <<"Primality of the generated number isn't confirmed\n";
         break;
      }
      else cout <<"Primality of the generated number  is confirmed\n";
   } while(0);


   delete [] (Ipp8u*)pRand;
   delete [] (Ipp8u*)pPrimeG;


   return 0==error;
}