Example of Using Prime Number Generation Functions

Check Primality  

void CheckPrime(void){
   Ipp32u result;
   int size;
 
   // define 256-bit Prime Generator
   int maxBitSize = 256;
   ippsPrimeGetSize(maxBitSize, &size);
   IppsPrimeState* pPrimeGen = (IppsPrimeState*)( new Ipp8u [size] );
   ippsPrimeInit(maxBitSize, pPrimeGen);
 
   // define Pseudo Random Generator (default settings)
   ippsPRNGGetSize(&size);
   IppsPRNGState* pPrng = (IppsPRNGState*)(new Ipp8u [size] );
   ippsPRNGInit(160, pPrng);
 
   // define known prime value (2^128 -3)/76439
   Ipp32u bnuPrime1[] = {
      0xBEAD208B, 0x5E668076, 0x2ABF62E3, 0xDB7C};
   IppsBigNumState* bnP1 = New_BN(4, bnuPrime1);
   // make sure P1 is really prime
   ippsPrimeSet_BN(bnP1, pPrimeGen);
   ippsPrimeTest(50, &result, pPrimeGen,
                 ippsPRNGen, pPrng);
   IS_PRIME==result?
      cout <<"Primality of P1 is confirmed\n" :
      cout <<"Primality of P1 isn't confirmed\n";
 
 
      // define another known prime value 2^128 -2^97 -1
   Ipp32u bnuPrime2[] = {
      0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFD};
   IppsBigNumState* bnP2 = New_BN(4, bnuPrime2);
   // make sure P2 is really prime
   ippsPrimeSet_BN(bnP2, pPrimeGen);
   ippsPrimeTest(50, &result, pPrimeGen,
                 ippsPRNGen, pPrng);
   IS_PRIME==result?
      cout <<"Primality of P2 is confirmed\n" :
      cout <<"Primality of P2 isn't confirmed\n";
 
   // define composite Big Number C = P1*P2
   IppsBigNumState* bnC = New_BN(8);
   ippsMul_BN(bnP1, bnP2, bnC);
   // make sure C is really composite
   ippsPrimeSet_BN(bnC, pPrimeGen);
   ippsPrimeTest(50, &result, pPrimeGen,
                 ippsPRNGen, pPrng);
   IS_PRIME==result?
      cout <<"Strange, but C=P1*P2 is prime\n" :
      cout <<"OK, C=P1*P2 is composite\n";
 
   delete [] (Ipp8u*)pPrimeGen;
   delete [] (Ipp8u*)pPrng;
   delete [] (Ipp8u*)bnP1;
   delete [] (Ipp8u*)bnP2;
   delete [] (Ipp8u*)bnC;
}
 

See Also

Submit feedback on this help topic

Copyright © 2000 - 2010, Intel Corporation. All rights reserved.