From 800fc6c9b5d0c9c6706e5333101cc12af351a327 Mon Sep 17 00:00:00 2001 From: "Pavel V. Shatov (Meister)" Date: Fri, 9 Nov 2018 17:55:22 +0300 Subject: Added randomized test vector. --- ed25519/ed25519_fpga_model.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'ed25519/ed25519_fpga_model.cpp') diff --git a/ed25519/ed25519_fpga_model.cpp b/ed25519/ed25519_fpga_model.cpp index 69c184c..d0b5a25 100644 --- a/ed25519/ed25519_fpga_model.cpp +++ b/ed25519/ed25519_fpga_model.cpp @@ -40,7 +40,7 @@ //------------------------------------------------------------------------------ // Mode Switch //------------------------------------------------------------------------------ -#define USE_MICROCODE +//#define USE_MICROCODE //------------------------------------------------------------------------------ @@ -63,11 +63,12 @@ static FPGA_WORD fpga_model_ed25519_bswap (FPGA_WORD w); //------------------------------------------------------------------------------ // Locals //------------------------------------------------------------------------------ -static FPGA_BUFFER ed25519_d_1, ed25519_q_y_1; -static FPGA_BUFFER ed25519_d_2, ed25519_q_y_2; -static FPGA_BUFFER ed25519_d_3, ed25519_q_y_3; -static FPGA_BUFFER ed25519_d_4, ed25519_q_y_4; -static FPGA_BUFFER ed25519_d_5, ed25519_q_y_5; +static FPGA_BUFFER ed25519_d_1, ed25519_q_y_1; // #1 from RFC +static FPGA_BUFFER ed25519_d_2, ed25519_q_y_2; // #2 from RFC +static FPGA_BUFFER ed25519_d_3, ed25519_q_y_3; // #3 from RFC +static FPGA_BUFFER ed25519_d_4, ed25519_q_y_4; // #4 from RFC +static FPGA_BUFFER ed25519_d_5, ed25519_q_y_5; // #5 from RFC +static FPGA_BUFFER ed25519_d_6, ed25519_q_y_6; // randomized //------------------------------------------------------------------------------ @@ -126,6 +127,14 @@ int main() if (!ok) return EXIT_FAILURE; + // + // test base point multiplier: Q = d * G + // + printf("Trying to derive public key from private key...\n\n"); + ok = test_ed25519_base_point_multiplier(&ed25519_d_6, &ed25519_q_y_6); + if (!ok) return EXIT_FAILURE; + + // // everything went just fine // @@ -144,12 +153,14 @@ static void fpga_model_ed25519_init() FPGA_WORD tmp_d_3[FPGA_OPERAND_NUM_WORDS] = ED25519_D_HASHED_LSB_3; FPGA_WORD tmp_d_4[FPGA_OPERAND_NUM_WORDS] = ED25519_D_HASHED_LSB_4; FPGA_WORD tmp_d_5[FPGA_OPERAND_NUM_WORDS] = ED25519_D_HASHED_LSB_5; + FPGA_WORD tmp_d_6[FPGA_OPERAND_NUM_WORDS] = ED25519_D_HASHED_LSB_6; FPGA_WORD tmp_q_y_1[FPGA_OPERAND_NUM_WORDS] = ED25519_Q_Y_1; FPGA_WORD tmp_q_y_2[FPGA_OPERAND_NUM_WORDS] = ED25519_Q_Y_2; FPGA_WORD tmp_q_y_3[FPGA_OPERAND_NUM_WORDS] = ED25519_Q_Y_3; FPGA_WORD tmp_q_y_4[FPGA_OPERAND_NUM_WORDS] = ED25519_Q_Y_4; FPGA_WORD tmp_q_y_5[FPGA_OPERAND_NUM_WORDS] = ED25519_Q_Y_5; + FPGA_WORD tmp_q_y_6[FPGA_OPERAND_NUM_WORDS] = ED25519_Q_Y_6; /* fill buffers for large multi-word integers */ for ( w_src = 0, w_dst = FPGA_OPERAND_NUM_WORDS - 1; @@ -161,6 +172,7 @@ static void fpga_model_ed25519_init() ed25519_d_3.words[w_dst] = tmp_d_3[w_src]; ed25519_d_4.words[w_dst] = tmp_d_4[w_src]; ed25519_d_5.words[w_dst] = tmp_d_5[w_src]; + ed25519_d_6.words[w_dst] = tmp_d_6[w_src]; // public key is in reverse order ed25519_q_y_1.words[w_dst] = fpga_model_ed25519_bswap(tmp_q_y_1[w_dst]); @@ -168,6 +180,7 @@ static void fpga_model_ed25519_init() ed25519_q_y_3.words[w_dst] = fpga_model_ed25519_bswap(tmp_q_y_3[w_dst]); ed25519_q_y_4.words[w_dst] = fpga_model_ed25519_bswap(tmp_q_y_4[w_dst]); ed25519_q_y_5.words[w_dst] = fpga_model_ed25519_bswap(tmp_q_y_5[w_dst]); + ed25519_q_y_6.words[w_dst] = fpga_model_ed25519_bswap(tmp_q_y_6[w_dst]); } } -- cgit v1.2.3