diff --git a/dap_chain_pkey.c b/dap_chain_pkey.c index 6aafa38bd81ad22d32042c713f5599187b05ab46..c303a7b9f4a013f18dfbe8f888fb0beadf7f5934 100755 --- a/dap_chain_pkey.c +++ b/dap_chain_pkey.c @@ -69,6 +69,10 @@ int dap_chain_pkey_from_enc_key_output(dap_enc_key_t *a_key, void * a_output) case DAP_ENC_KEY_TYPE_SIG_PICNIC: l_output->header.type.type = PKEY_TYPE_SIGN_PICNIC ; break; + case DAP_ENC_KEY_TYPE_SIG_DILITHIUM: + l_output->header.type.type = PKEY_TYPE_SIGN_DILITHIUM; + break; + default: log_it(L_WARNING,"No serialization preset"); return -1; diff --git a/dap_chain_sign.c b/dap_chain_sign.c index 6d8dd6606faf1eedfa6eb868d25527c148bbb2c1..88b1fef7216fc89649c9d1a2822cf8984638da2d 100755 --- a/dap_chain_sign.c +++ b/dap_chain_sign.c @@ -43,6 +43,7 @@ size_t dap_chain_sign_create_output_cals_size(dap_enc_key_t * a_key, size_t a_ou case DAP_ENC_KEY_TYPE_SIG_BLISS: l_sign_size = sizeof(s_sign_bliss_null); break; case DAP_ENC_KEY_TYPE_SIG_PICNIC: l_sign_size = dap_enc_picnic_calc_signature_size(a_key); break; case DAP_ENC_KEY_TYPE_SIG_TESLA: l_sign_size = dap_enc_tesla_calc_signature_size(); break; + case DAP_ENC_KEY_TYPE_SIG_DILITHIUM: l_sign_size = dap_enc_dilithium_calc_signature_size(); break; default : return 0; } @@ -62,6 +63,7 @@ dap_chain_sign_type_t dap_chain_sign_type_from_key_type( dap_enc_key_type_t a_ke case DAP_ENC_KEY_TYPE_SIG_BLISS: l_sign_type.type = SIG_TYPE_BLISS; break; case DAP_ENC_KEY_TYPE_SIG_PICNIC: l_sign_type.type = SIG_TYPE_PICNIC; break; case DAP_ENC_KEY_TYPE_SIG_TESLA: l_sign_type.type = SIG_TYPE_TESLA; break; + case DAP_ENC_KEY_TYPE_SIG_DILITHIUM: l_sign_type.type = SIG_TYPE_DILITHIUM; break; } return l_sign_type; } @@ -77,6 +79,7 @@ dap_enc_key_type_t dap_chain_sign_type_to_key_type(dap_chain_sign_type_t a_cha case SIG_TYPE_BLISS: return DAP_ENC_KEY_TYPE_SIG_BLISS; case SIG_TYPE_TESLA: return DAP_ENC_KEY_TYPE_SIG_TESLA; case SIG_TYPE_PICNIC: return DAP_ENC_KEY_TYPE_SIG_PICNIC; + case SIG_TYPE_DILITHIUM: return DAP_ENC_KEY_TYPE_SIG_DILITHIUM; default: return DAP_ENC_KEY_TYPE_NULL; } } @@ -136,7 +139,8 @@ static int dap_chain_sign_create_output(dap_enc_key_t *a_key, const void * a_dat } switch (a_key->type) { case DAP_ENC_KEY_TYPE_SIG_TESLA: - case DAP_ENC_KEY_TYPE_SIG_PICNIC: + case DAP_ENC_KEY_TYPE_SIG_PICNIC: + case DAP_ENC_KEY_TYPE_SIG_DILITHIUM: // For PICNIC a_output_size should decrease *a_output_size = a_key->enc_na(a_key, a_data, a_data_size, a_output, *a_output_size); return (*a_output_size > 0) ? 0 : -1; @@ -257,6 +261,7 @@ int dap_chain_sign_verify(dap_chain_sign_t * a_chain_sign, const void * a_data, switch (l_key->type) { case DAP_ENC_KEY_TYPE_SIG_TESLA: case DAP_ENC_KEY_TYPE_SIG_PICNIC: + case DAP_ENC_KEY_TYPE_SIG_DILITHIUM: if(l_key->dec_na(l_key, a_data, a_data_size, l_sign, l_sign_size) > 0) l_ret = 0; else diff --git a/test/dap_chain_cert_save_tests.c b/test/dap_chain_cert_save_tests.c index e20ea46d32ccdf7e6e61ff9bf3b79771f0100eb1..4782c1cc055c540ed4cbc82d890568a7df19c557 100755 --- a/test/dap_chain_cert_save_tests.c +++ b/test/dap_chain_cert_save_tests.c @@ -60,6 +60,7 @@ void dap_chain_cert_save_tests_run(void) test_cert_memory_file(DAP_ENC_KEY_TYPE_SIG_BLISS); test_cert_memory_file(DAP_ENC_KEY_TYPE_SIG_TESLA); test_cert_memory_file(DAP_ENC_KEY_TYPE_SIG_PICNIC); + test_cert_memory_file(DAP_ENC_KEY_TYPE_SIG_DILITHIUM); cleanup_test_case(); }