modexp ====== Modular exponentiation core for implementing public key algorithms such as RSA, DH, ElGamal etc. The core calculates the following functions: C = M ** e mod N M = C ** d mod N d is the private key exponent. M is a message with a length of n bits e is the exponent with a length of at most 32 bits N is the modulus with a length of n bits n is can be 32 and up to and including 8192 bits in steps of 32 bits. The core has a 32-bit memory like interface. The core is written in Verilog 2001 and suitable for implementation in FPGA and ASIC devices. No vendor specific macros are used in the code. ## Implementation details ## The core is using Montgomery multiplication with 32-bit operands. The core is iterative and will not be the fastest core on the planet. The core will perform blinding to protect against side channel attacks. ## FPGA-results ## No results yet. ## Status ## ***(2015-03-13)*** A working, bit exact C model with test cases has been developed and is used to drive the HW development. There is also a Java functional model available as support for high level undertanding. Development of the Montgomery product module started. Top level modexp module with memories for all operands are being worked on.