ฉันต้องการยืนยันระบบของฉันด้วยการเรียกใช้เวกเตอร์ทดสอบ ECDSA NIST แต่ฉันไม่ได้รับผลลัพธ์ที่คาดหวัง ฉันสามารถคำนวณลายเซ็นได้ แต่ไม่ถูกต้องหรืออย่างน้อยส่วนประกอบ "r" และ "s" มีค่าที่แตกต่างจากในเวกเตอร์ nist ฉันทำอะไรผิด?
เวกเตอร์ทดสอบ: NIST: FIPS 186-4 ECDSA - 186-3ecdsasiggencomponenttestvectors.zip
#รวม <mbedtls/ecdsa.h>
#รวม <mbedtls/ecp.h>
#รวม <mbedtls/bignum.h>
#รวม <mbedtls/entropy.h>
#รวม <mbedtls/ctr_drbg.h>
// ลบการตรวจสอบข้อผิดพลาดทั้งหมด
//อันแรกของ [P-256,SHA-256]-เวกเตอร์
uint8_t ecc_d_p256[] = "\x51\x9b\x42...";
uint8_t ecc_hash_p256[] = "\x44\xac\xf6...":
ถ่าน const *pers = "ทดสอบ";
mbedtls_mpi r, s, d;
mbedtls_ecp_group grp;
mbedtls_ctr_drbg_context ctr_drbg;
mbedtls_entropy_context mbedtls_entropy;
//ในนั้น
mbedtls_mpi_init(&r);
mbedtls_mpi_init(&s);
mbedtls_mpi_init(&d);
mbedtls_ecp_group_init(&grp);
mbedtls_ctr_drbg_init(&ctr_drbg);
mbedtls_entropy_init(&mbedtls_entropy);
//ตั้งค่า
mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &mbedtls_entropy, pers, 4);
mbedtls_mpi_read_binary(&d, ecc_d_p256, (ขนาดของ(ecc_d_p256)-1));
mbedtls_ecp_group_load(&grp, MBEDTLS_ECP_DP_SECP256R1);
//เข้าสู่ระบบ
mbedtls_ecdsa_sign_det_ext(&grp, &r, &s, &d,
ecc_hash_p256, ขนาดของ (ecc_hash_p256)-1,
MBEDTLS_MD_SHA256
mbedtls_ctr_drbg_random
&ot_mbedtls_ctr_drbg);
//เอาต์พุต
//"r" และ "s" มีเอาต์พุต 32 ไบต์ แต่ไม่ใช่เอาต์พุตที่ "ถูกต้อง"