ใบรับรองของคุณมีรหัสสาธารณะ P-256 หรือ secp256r1 หรือ prime256v1 ที่คุณเห็น ที่นี่. อย่างไรก็ตาม คีย์อยู่ในรูปแบบที่ไม่บีบอัด (เริ่มต้นด้วย byte 04
จากนั้น 64 ไบต์สุ่มการค้นหา) และพารามิเตอร์โดเมนถูกระบุโดยใช้ OID พร้อมเส้นโค้งที่กล่าวถึงข้างต้น ดังนั้นพิกัดเดียวคือค่าของรหัสสาธารณะ และพิกัดเหล่านั้นจะเป็น 1 + 64 ไบต์เหมือนกันเสมอ ไม่มีปัญหาที่นั่น
คุณอาจกำลังพูดถึง R และ S ตามที่คุณพูดถึงในคำถาม อย่างไรก็ตาม R เป็นตัวเลขสุ่มและ S เป็นลายเซ็นสุ่มที่เกี่ยวข้อง ซึ่งหมายความว่า พวกเขาไม่ใช่พิกัด.
ตอนนี้ไม่ได้ระบุเส้นโค้ง มีการระบุไว้ในใบรับรองผู้ออกซึ่งอ้างอิงในใบรับรองนี้ อย่างไรก็ตาม เราสามารถสันนิษฐานได้อย่างปลอดภัยว่าเป็นเส้นโค้งเดียวกันกับที่เรากำลังพูดถึง แน่นอน หากคุณกำลังสร้างผู้ตรวจสอบ คุณก็ ควร ดึงเส้นโค้งและรหัสสาธารณะออกจากใบรับรองผู้ออก
ดังที่คุณเห็นในส่วนสุดท้ายของใบรับรอง:
BIT STRING (568 บิต) 0011000001000101000000100010000000000000101000111011101011001100001001â¦
ลำดับ (2 องค์ประกอบ)
จำนวนเต็ม (248 บิต) 2892853004106127101112322441046660521562717594643885711748150025403073â¦
จำนวนเต็ม (256 บิต) 1104268754670564871921027255657571260094376165878172031675520861809130â¦
ค่าสุ่มคือ 248 บิตและลายเซ็นคือ 256 บิต ค่าเหล่านี้ต้องมีขนาดเล็กกว่าขนาดฟิลด์ ซึ่งหมายความว่าการเข้ารหัสความยาวไดนามิกของจำนวนเต็มเหล่านี้อาจแตกต่างกัน หากคุณมีรหัสที่ไม่ถูกต้อง ในกรณีนี้ องค์ประกอบ R อาจมีขนาดเล็กกว่าที่คุณคาดไว้ ถ้าคุณคิดแค่ 256 บิต คุณก็จะมีปัญหา
สิ่งที่คุณต้องทำคือตรวจสอบให้แน่ใจว่าซอฟต์แวร์ของคุณจะตีความตัวเลขเหล่านี้หากเข้ารหัสเป็น 1 ไบต์ เป็น 33 ไบต์ (รวมถึง 00
ไบต์การเติมทางด้านซ้าย) หรือขนาดใดก็ได้ในระหว่างนั้น หลังจากนั้น คุณอาจต้องเข้ารหัสอีกครั้งเป็น 32 + 32 = 64 ไบต์ เพื่อให้การตรวจสอบลายเซ็นของคุณทำงานได้
หรือคุณสามารถใช้ซอฟต์แวร์ที่ตรวจสอบรูปแบบลายเซ็น ANS X9.62 ได้ หรือใช้ไลบรารีที่ยอมรับ R และ S เป็นตัวเลขแยกกันโดยใช้ไลบรารี "bignum" บางประเภท