Package prim_cipher_pkg

Functions

perm_16bit(logic[15:0] state_in, logic[15:0][3:0] perm)
Parameters:
  • state_in (logic[15:0])

  • perm (logic[15:0][3:0])

perm_32bit(logic[31:0] state_in, logic[31:0][4:0] perm)
Parameters:
  • state_in (logic[31:0])

  • perm (logic[31:0][4:0])

perm_64bit(logic[63:0] state_in, logic[63:0][5:0] perm)
Parameters:
  • state_in (logic[63:0])

  • perm (logic[63:0][5:0])

perm_8bit(logic[7:0] state_in, logic[7:0][2:0] perm)
Parameters:
  • state_in (logic[7:0])

  • perm (logic[7:0][2:0])

present_get_dec_key128(logic[127:0] key_in, logic[4:0] round_cnt)
Parameters:
  • key_in (logic[127:0])

  • round_cnt (logic[4:0]) --

    total number of rounds employed

present_get_dec_key64(logic[63:0] key_in, logic[4:0] round_cnt)

these functions can be used to derive the DEC key from the ENC key by stepping the key by the correct number of rounds using the keyschedule functions above.

Parameters:
  • key_in (logic[63:0])

  • round_cnt (logic[4:0]) --

    total number of rounds employed

present_get_dec_key80(logic[79:0] key_in, logic[4:0] round_cnt)
Parameters:
  • key_in (logic[79:0])

  • round_cnt (logic[4:0]) --

    total number of rounds employed

present_inv_update_key128(logic[127:0] key_in, logic[4:0] round_idx)
Parameters:
  • key_in (logic[127:0])

  • round_idx (logic[4:0])

present_inv_update_key64(logic[63:0] key_in, logic[4:0] round_idx)

inverse key schedule

Parameters:
  • key_in (logic[63:0])

  • round_idx (logic[4:0])

present_inv_update_key80(logic[79:0] key_in, logic[4:0] round_idx)
Parameters:
  • key_in (logic[79:0])

  • round_idx (logic[4:0])

present_update_key128(logic[127:0] key_in, logic[4:0] round_idx)
Parameters:
  • key_in (logic[127:0])

  • round_idx (logic[4:0])

present_update_key64(logic[63:0] key_in, logic[4:0] round_idx)

forward key schedule

Parameters:
  • key_in (logic[63:0])

  • round_idx (logic[4:0])

present_update_key80(logic[79:0] key_in, logic[4:0] round_idx)
Parameters:
  • key_in (logic[79:0])

  • round_idx (logic[4:0])

prince_mult_prime_32bit(logic[31:0] state_in)

M prime multiplication

Parameters:

state_in (logic[31:0])

prince_mult_prime_64bit(logic[63:0] state_in)

M prime multiplication

Parameters:

state_in (logic[63:0])

prince_nibble_red16(logic[15:0] vect)

XOR reduction of four nibbles in a 16bit subvector

Parameters:

vect (logic[15:0])

prince_shiftrows_32bit(logic[31:0] state_in, logic[15:0][3:0] shifts)

nibble shifts

Parameters:
  • state_in (logic[31:0])

  • shifts (logic[15:0][3:0])

prince_shiftrows_64bit(logic[63:0] state_in, logic[15:0][3:0] shifts)
Parameters:
  • state_in (logic[63:0])

  • shifts (logic[15:0][3:0])

sbox4_16bit(logic[15:0] state_in, logic[15:0][3:0] sbox4)
Parameters:
  • state_in (logic[15:0])

  • sbox4 (logic[15:0][3:0])

sbox4_32bit(logic[31:0] state_in, logic[15:0][3:0] sbox4)
Parameters:
  • state_in (logic[31:0])

  • sbox4 (logic[15:0][3:0])

sbox4_64bit(logic[63:0] state_in, logic[15:0][3:0] sbox4)
Parameters:
  • state_in (logic[63:0])

  • sbox4 (logic[15:0][3:0])

sbox4_8bit(logic[7:0] state_in, logic[15:0][3:0] sbox4)

/////////////////////// Common Subfunctions // ///////////////////////

Parameters:
  • state_in (logic[7:0])

  • sbox4 (logic[15:0][3:0])