示例#1
0
 def _pseudo_random_data(self, bytes):
     if not 0 <= bytes <= self.max_bytes_per_request:
         raise AssertionError(
             'You cannot ask for more than 1 MiB of data per request')
     num_blocks = ceil_shift(bytes, self.block_size_shift)
     retval = self._generate_blocks(num_blocks)[:bytes]
     self._set_key(self._generate_blocks(self.blocks_per_key))
     return retval
 def _pseudo_random_data(self, bytes):
     if not 0 <= bytes <= self.max_bytes_per_request:
         raise AssertionError('You cannot ask for more than 1 MiB of data per request')
     num_blocks = ceil_shift(bytes, self.block_size_shift)
     retval = self._generate_blocks(num_blocks)[:bytes]
     self._set_key(self._generate_blocks(self.blocks_per_key))
     assert len(retval) == bytes
     assert len(self.key) == self.key_size
     return retval
示例#3
0
def do_encrypt(message, keyname='key_0x8d2bc.pem'):
	key = RSA.importKey(open(keyname).read())
	#see PKCS1_v1_5.py > verify()
	k = ceil_shift(key.size(), 3)
	if len(message) != k:
		print "key length does not match!"
		return ""
	m = key.encrypt(message, 0)[0]
	return m
示例#4
0
def do_encrypt_hash(h, signature, keyname='pub.der'):
	key = RSA.importKey(open(keyname).read())
	#see PKCS1_v1_5.py > verify()
	k = ceil_shift(key.size(), 3)
	if len(signature) != k:
		print "key length does not match!"
		return False
	m = key.encrypt(signature, 0)[0]
	print "deciphered signature: %s" % binascii.hexlify(m)
	return False
示例#5
0
    def _pseudo_random_data(self, bytes):
        if not (0 <= bytes <= self.max_bytes_per_request):
            raise AssertionError("You cannot ask for more than 1 MiB of data per request")

        num_blocks = ceil_shift(bytes, self.block_size_shift)   # num_blocks = ceil(bytes / self.block_size)

        # Compute the output
        retval = self._generate_blocks(num_blocks)[:bytes]

        # Switch to a new key to avoid later compromises of this output (i.e.
        # state compromise extension attacks)
        self._set_key(self._generate_blocks(self.blocks_per_key))

        assert len(retval) == bytes
        assert len(self.key) == self.key_size

        return retval
示例#6
0
    def _pseudo_random_data(self, bytes):
        if not (0 <= bytes <= self.max_bytes_per_request):
            raise AssertionError("You cannot ask for more than 1 MiB of data per request")

        num_blocks = ceil_shift(bytes, self.block_size_shift)   # num_blocks = ceil(bytes / self.block_size)

        # Compute the output
        retval = self._generate_blocks(num_blocks)[:bytes]

        # Switch to a new key to avoid later compromises of this output (i.e.
        # state compromise extension attacks)
        self._set_key(self._generate_blocks(self.blocks_per_key))

        assert len(retval) == bytes
        assert len(self.key) == self.key_size

        return retval
示例#7
0
    def test_ceil_shift(self):
        """Util.number.ceil_shift"""
        self.assertRaises(AssertionError, number.ceil_shift, -1, 1)
        self.assertRaises(AssertionError, number.ceil_shift, 1, -1)

        # b = 0
        self.assertEqual(0, number.ceil_shift(0, 0))
        self.assertEqual(1, number.ceil_shift(1, 0))
        self.assertEqual(2, number.ceil_shift(2, 0))
        self.assertEqual(3, number.ceil_shift(3, 0))

        # b = 1
        self.assertEqual(0, number.ceil_shift(0, 1))
        self.assertEqual(1, number.ceil_shift(1, 1))
        self.assertEqual(1, number.ceil_shift(2, 1))
        self.assertEqual(2, number.ceil_shift(3, 1))

        # b = 2
        self.assertEqual(0, number.ceil_shift(0, 2))
        self.assertEqual(1, number.ceil_shift(1, 2))
        self.assertEqual(1, number.ceil_shift(2, 2))
        self.assertEqual(1, number.ceil_shift(3, 2))
        self.assertEqual(1, number.ceil_shift(4, 2))
        self.assertEqual(2, number.ceil_shift(5, 2))
        self.assertEqual(2, number.ceil_shift(6, 2))
        self.assertEqual(2, number.ceil_shift(7, 2))
        self.assertEqual(2, number.ceil_shift(8, 2))
        self.assertEqual(3, number.ceil_shift(9, 2))

        for b in range(3, 1 + 129, 3):  # 3, 6, ... , 129
            self.assertEqual(0, number.ceil_shift(0, b))

            n = 1
            while n <= 2**(b + 2):
                (q, r) = divmod(n - 1, 2**b)
                expected = q + int(not not r)
                self.assertEqual((n - 1, b, expected),
                                 (n - 1, b, number.ceil_shift(n - 1, b)))

                (q, r) = divmod(n, 2**b)
                expected = q + int(not not r)
                self.assertEqual((n, b, expected),
                                 (n, b, number.ceil_shift(n, b)))

                (q, r) = divmod(n + 1, 2**b)
                expected = q + int(not not r)
                self.assertEqual((n + 1, b, expected),
                                 (n + 1, b, number.ceil_shift(n + 1, b)))

                n *= 2
示例#8
0
    def test_ceil_shift(self):
        """Util.number.ceil_shift"""
        self.assertRaises(AssertionError, number.ceil_shift, -1, 1)
        self.assertRaises(AssertionError, number.ceil_shift, 1, -1)

        # b = 0
        self.assertEqual(0, number.ceil_shift(0, 0))
        self.assertEqual(1, number.ceil_shift(1, 0))
        self.assertEqual(2, number.ceil_shift(2, 0))
        self.assertEqual(3, number.ceil_shift(3, 0))

        # b = 1
        self.assertEqual(0, number.ceil_shift(0, 1))
        self.assertEqual(1, number.ceil_shift(1, 1))
        self.assertEqual(1, number.ceil_shift(2, 1))
        self.assertEqual(2, number.ceil_shift(3, 1))

        # b = 2
        self.assertEqual(0, number.ceil_shift(0, 2))
        self.assertEqual(1, number.ceil_shift(1, 2))
        self.assertEqual(1, number.ceil_shift(2, 2))
        self.assertEqual(1, number.ceil_shift(3, 2))
        self.assertEqual(1, number.ceil_shift(4, 2))
        self.assertEqual(2, number.ceil_shift(5, 2))
        self.assertEqual(2, number.ceil_shift(6, 2))
        self.assertEqual(2, number.ceil_shift(7, 2))
        self.assertEqual(2, number.ceil_shift(8, 2))
        self.assertEqual(3, number.ceil_shift(9, 2))

        for b in range(3, 1+129, 3):    # 3, 6, ... , 129
            self.assertEqual(0, number.ceil_shift(0, b))

            n = 1L
            while n <= 2L**(b+2):
                (q, r) = divmod(n-1, 2L**b)
                expected = q + int(not not r)
                self.assertEqual((n-1, b, expected),
                                 (n-1, b, number.ceil_shift(n-1, b)))

                (q, r) = divmod(n, 2L**b)
                expected = q + int(not not r)
                self.assertEqual((n, b, expected),
                                 (n, b, number.ceil_shift(n, b)))

                (q, r) = divmod(n+1, 2L**b)
                expected = q + int(not not r)
                self.assertEqual((n+1, b, expected),
                                 (n+1, b, number.ceil_shift(n+1, b)))

                n *= 2