Example #1
0
	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)
Example #2
0
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])
Example #3
0
    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)
Example #4
0
	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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
    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)
Example #9
0
    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)
Example #10
0
    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)