current_sample += j delta2, j = dpa.dpa_addition(T[:, current_sample:], 0, message_0, 1, delta1, threshold) current_sample += j delta3, j = dpa.dpa_addition(T[:, current_sample:], 0, message_0, 0, delta2, threshold) current_sample += j delta = helper.byte_to_int(delta3, delta2, delta1, delta0) if (silent != 1): print "delta=", hex(delta) ''' * DPA 2 * E_1 = D_0 + T1_1 ''' if (silent != 1): print 'DPA2: Recovering D_0 from E_1 = D_0 + T1_1...' # calculate known T1's T1 = helper.int_to_byte_vec(helper.byte_array_to_int_vec(message_0) + delta) d_0_0, j = dpa.dpa_addition(T[:, current_sample:], 0, T1, 3, -1, threshold) current_sample += j d_0_1, j = dpa.dpa_addition(T[:, current_sample:], 0, T1, 2, d_0_0, threshold) current_sample += j d_0_2, j = dpa.dpa_addition(T[:, current_sample:], 0, T1, 1, d_0_1, threshold) current_sample += j d_0_3, j = dpa.dpa_addition(T[:, current_sample:], 0, T1, 0, d_0_2, threshold) current_sample += j D_0 = helper.byte_to_int(d_0_3, d_0_2, d_0_1, d_0_0) if (silent != 1): print "D_0=", hex(D_0) ''' * DPA 3 * A_1 = T1_1 + T2_1 '''
def Sigma1_vec(w): w = np.array(w) value = helper.byte_array_to_int_vec(w) result = __Sigma1(value) return helper.int_to_byte_vec(result)