Exemplo n.º 1
0
    def batchRun(self,
                 batchsize=1024,
                 random_key=True,
                 random_pt=True,
                 seed=None):
        """
            Run multiple encryptions on random data

            Args:
                batchsize (int): The number of encryption to run (default 1024).
                random_key (bool): True if the key is random (default False).
                random_pt (bool): True if the plaintext are random (default True).
                seed (int): random int32 for the PRG.
        """
        if seed is None:
            seed = random.randint(0, 2**32)

        data = []
        data.extend(
            packuint32(1 | (random_key << 1) | (random_pt << 2)
                       | (batchsize << 16)))
        data.extend(packuint32(seed))
        self.sam3u_write(0, data)

        # generate the inputs
        if random_key:
            key = [[0 for x in range(16)] for y in range(batchsize)]
        else:
            key = None

        if random_pt:
            pt = [[0 for x in range(16)] for y in range(batchsize)]
        else:
            pt = None

        for b in range(batchsize):
            if random_key:
                for j in range(16):
                    key[b][15 - j] = seed >> 24
                    seed += ((seed * seed) & 0xffffffff) | 0x5
                    seed &= 0xffffffff
            if random_pt:
                for j in range(16):
                    pt[b][15 - j] = seed >> 24
                    seed += ((seed * seed) & 0xffffffff) | 0x5
                    seed &= 0xffffffff
        return key, pt
Exemplo n.º 2
0
    def samples(self, numsamples):

        nresp = packuint32(numsamples)
        self.usb.sendCtrl(self.USB_SAMPLES, 0, nresp)
Exemplo n.º 3
0
 def repeat(self, width):
     resp = self.usb.readCtrl(self.USB_GLITCH_SETTINGS, 0, 8)
     nresp = resp[0:4]
     nresp.extend(packuint32(width))
     self.usb.sendCtrl(self.USB_GLITCH_SETTINGS, 0, nresp)
Exemplo n.º 4
0
    def ext_offset(self, offset):

        resp = self.usb.readCtrl(self.USB_GLITCH_SETTINGS, 0, 8)
        nresp = packuint32(offset)
        nresp.extend(resp[4:8])
        self.usb.sendCtrl(self.USB_GLITCH_SETTINGS, 0, nresp)