Example #1
0
 def getbytes(self, request_bytes):
     """Return random bytestring of length `request_bytes`."""
     self.digest_size = 64 + request_bytes
     self.update(words2bytes(self.tf.key))
     output = self.final()
     self.tf.key = bytes2words(output[0:64])
     return output[64:]
 def getbytes(self, request_bytes):
     """Return random bytestring of length `request_bytes`."""
     self.digest_size = 64 + request_bytes
     self.update(words2bytes(self.tf.key))
     output = self.final()
     self.tf.key = bytes2words(output[0:64])
     return output[64:]
Example #3
0
 def __init__(self, msg='', digest_bits=512, key=None, block_type='msg'):
     self.tf = Threefish512()
     if key:
         self.digest_bits = 512
         self._start_new_type('key')
         self.update(key)
         self.tf.key = bytes2words(self.final(False))
     self.digest_bits = digest_bits
     self.digest_size = (digest_bits + 7) >> 3
     self._start_new_type('cfg_final')
     b = words2bytes((0x133414853, digest_bits, 0, 0, 0, 0, 0, 0))
     self._process_block(b, 32)
     self._start_new_type(block_type)
     if msg:
         self.update(msg)
Example #4
0
    def _process_block(self, block, byte_count_add):
        """Encrypt internal state using Threefish.

        Primarily for internal use.

        """
        block_len = len(block)
        for i in xrange(0, block_len, 64):
            w = bytes2words(block[i:i + 64])
            self.tf.tweak[0] = add64(self.tf.tweak[0], byte_count_add)
            self.tf.prepare_tweak()
            self.tf.prepare_key()
            self.tf.key = self.tf.encrypt_block(w)
            self.tf._feed_forward(self.tf.key, w)
            # set second tweak value to ~SKEIN_T1_FLAG_FIRST:
            self.tf.tweak[1] &= bigint(0xbfffffffffffffff)
    def _process_block(self, block, byte_count_add):
        """Encrypt internal state using Threefish.

        Primarily for internal use.

        """
        block_len = len(block)
        for i in xrange(0,block_len,64):
            w = bytes2words(block[i:i+64])
            self.tf.tweak[0] = add64(self.tf.tweak[0], byte_count_add)
            self.tf.prepare_tweak()
            self.tf.prepare_key()
            self.tf.key = self.tf.encrypt_block(w)
            self.tf._feed_forward(self.tf.key, w)
            # set second tweak value to ~SKEIN_T1_FLAG_FIRST:
            self.tf.tweak[1] &= bigint(0xbfffffffffffffff)
 def __init__(self, msg='', digest_bits=512, key=None,
              block_type='msg'):
     self.tf = Threefish512()
     if key:
         self.digest_bits = 512
         self._start_new_type('key')
         self.update(key)
         self.tf.key = bytes2words(self.final(False))
     self.digest_bits = digest_bits
     self.digest_size = (digest_bits + 7) >> 3
     self._start_new_type('cfg_final')
     b = words2bytes((0x133414853,digest_bits,0,0,0,0,0,0))
     self._process_block(b,32)
     self._start_new_type(block_type)
     if msg:
         self.update(msg)
Example #7
0
 def reseed(self, seed):
     """(Re)seed the generator."""
     self.digest_size = 64
     self.update(words2bytes(self.tf.key) + seed)
     self.tf.key = bytes2words(self.final())
 def reseed(self, seed):
     """(Re)seed the generator."""
     self.digest_size = 64
     self.update(words2bytes(self.tf.key) + seed)
     self.tf.key = bytes2words(self.final())