def testConvertStringToArrayToStringRef( self, bits ): value = random.getrandbits(bits) res_array = GF2n.convertStringToArray(value, BITS_PER_CHUNK) res_string = GF2n.convertArrayToString(res_array, BITS_PER_CHUNK) self.assertEqual(value, res_string)
def analyseResults(calcParam, verbose): specParam = { \ "num_coeffs" : rsh_test_parameters.get_rsh_test_parameter_num_coeffs(), \ "field_size":rsh_test_parameters.get_rsh_test_parameter_field_size(), \ "coeffs" : rsh_test_parameters.get_rsh_test_parameter_coeffs(), \ "x" : rsh_test_parameters.get_rsh_test_parameter_x(), \ "irred_poly" : rsh_test_parameters.get_rsh_test_parameter_irred_poly(), \ "mask" : rsh_test_parameters.get_rsh_test_parameter_mask(), \ "resultExpandStep" : 0, \ "resultReduceStep" : 0, \ "resultDownSweepStep" : 0, \ "rsultProdStep" : 0, \ "resultSumStep" : 0 \ } field = GF2n(specParam["field_size"][0], specParam["irred_poly"][0]) calculatePythonResults(field, specParam) compareResults(specParam, calcParam) if (verbose): for key in specParam.keys(): print(key + ":") print(specParam[key])
def testMySecondMul(self, bits, func): # do cuda arithmetic f_gpu = GF2nStub.GF2nStub("Cuda", bits) a_gpu = f_gpu() b_gpu = f_gpu() res_gpu = GF2nStub.run(func, a_gpu, b_gpu) rand_a = GF2nStub.getRandomNumber(bits, 42) rand_b = GF2nStub.getRandomNumber(bits, 84) print "a = ", rand_a print "b = ", rand_b f_ref = GF2n.GF2n(bits) a_ref = f_ref(rand_a) b_ref = f_ref(rand_b) res_ref = a_ref * b_ref print "res_ref = ", res_ref # compare results self.assertEqual(res_gpu, res_ref)
def testConvertStringToArray( self, bits ): value = random.getrandbits(bits) res_cpu = GF2nStub.convertStringToArray(value, BITS_PER_CHUNK) res_ref = GF2n.convertStringToArray(value, BITS_PER_CHUNK) self.assertEqual(res_cpu, res_ref)
def testOpenSSLExponentiation(self, bits, exp): # do cuda arithmetic f_gpu = GF2nStub.GF2nStub("OpenSSL", bits) a_gpu = f_gpu() res_gpu = GF2nStub.run("exp", a_gpu, exp) # calcualte reference rand_a = GF2nStub.getRandomNumber(bits, 42) f_ref = GF2n.GF2n(bits) a_ref = f_ref(rand_a) res_ref = a_ref**exp # compare results self.assertEqual(res_gpu, res_ref)
def testOpenSSLInverseElement(self, bits): # do cuda arithmetic f_gpu = GF2nStub.GF2nStub("OpenSSL", bits) a_gpu = f_gpu() res_gpu = GF2nStub.run("inverse", a_gpu, 0) # calcualte reference rand_a = GF2nStub.getRandomNumber(bits, 42) f_ref = GF2n.GF2n(bits) a_ref = f_ref(rand_a) res_ref = a_ref.inverse() # compare results self.assertEqual(res_gpu, res_ref)
def testCudaExponentiation(self, bits, k, func): # do cuda arithmetic f_gpu = GF2nStub.GF2nStub("Cuda", bits) a_gpu = f_gpu() res_gpu = GF2nStub.run(func, a_gpu, k) # calcualte reference rand_a = GF2nStub.getRandomNumber(bits, 42) f_ref = GF2n.GF2n(bits) a_ref = f_ref(rand_a) res_ref = a_ref**k # compare results self.assertEqual(res_gpu, res_ref)
def testOpenSSLMultiplication(self, bits): # do OpenSSL arithmetic f_cpu = GF2nStub.GF2nStub("OpenSSL", bits) a_cpu = f_cpu() b_cpu = f_cpu() res_cpu = a_cpu * b_cpu # calcualte reference rand_a = GF2nStub.getRandomNumber(bits, 42) rand_b = GF2nStub.getRandomNumber(bits, 84) f_ref = GF2n.GF2n(bits) a_ref = f_ref(rand_a) b_ref = f_ref(rand_b) res_ref = a_ref * b_ref # compare results self.assertEqual(res_cpu, res_ref)
def testCudaMultiplication(self, bits, func): # do cuda arithmetic f_gpu = GF2nStub.GF2nStub("Cuda", bits) a_gpu = f_gpu() b_gpu = f_gpu() res_gpu = GF2nStub.run(func, a_gpu, b_gpu) # calcualte reference rand_a = GF2nStub.getRandomNumber(bits, 42) rand_b = GF2nStub.getRandomNumber(bits, 84) f_ref = GF2n.GF2n(bits) a_ref = f_ref(rand_a) b_ref = f_ref(rand_b) res_ref = a_ref * b_ref # compare results self.assertEqual(res_gpu, res_ref)
def testOpenSSLAddition(self, bits): # do OpenSSL arithmetic f_cpu = GF2nStub.GF2nStub("OpenSSL", bits, -1) a_cpu = f_cpu() b_cpu = f_cpu() res_cpu = a_cpu + b_cpu # calcualte reference rand_irred_poly = GF2nStub.getRandomNumber(bits + 1, 23) rand_a = GF2nStub.getRandomNumber(bits, 42) rand_b = GF2nStub.getRandomNumber(bits, 84) f_ref = GF2n.GF2n(bits, rand_irred_poly) a_ref = f_ref(rand_a) b_ref = f_ref(rand_b) res_ref = a_ref + b_ref # compare results self.assertEqual(res_cpu, res_ref)