|
SDK สำหรับ TESAIoT Dev Kit
คู่มืออ้างอิง API และ Tutorial (MTB & µPython)
|
มีฟังก์ชันเดียว ถูก export ออกมาจาก libbento_mpy.a ในฐานะ symbol ชนิด WEAK (template/lib/mpy_secure/overridable.txt) ส่วนเทมเพลตส่งมอบ strong definition มาเป็นซอร์ส ที่ template/bento_libs/claw/kit-pse84-ai/modules/tesaiot/optiga_trust_helpers.c ซึ่งเป็นฝ่ายชนะในตอน link mpy_secure ไม่ได้ส่งมอบคำประกาศของฟังก์ชันนี้มาให้ (bento_secure_undeclared.h); prototype อยู่ใน optiga_trust_helpers.h ของโมดูล tesaiot_hsm
ข้อกำหนดการเรียกใช้ ตรวจลายเซ็นดิจิทัลบนพื้นที่ของโมเดลที่ staged ไว้ ก่อนที่โมเดลนั้นจะถูกส่งต่อให้ registry ของโมเดล ค่าที่คืนเป็น 1 หมายความว่าลายเซ็นถูกต้อง; รหัสที่ติดลบ แยกจากกันโดยเจตนา — ไม่มีลายเซ็น, รูปแบบผิด, ถูกชิปปฏิเสธ และถามชิปไม่ได้ ล้วนต้องการการตอบสนองที่ต่างกัน และห้ามยุบรวมให้เหลือเพียง "failed" ค่าเดียว ให้บันทึกค่าที่คืนมาทุกเส้นทาง รวมทั้งเส้นทางที่สำเร็จ ฟังก์ชันนี้คุยกับ secure element (ชิปนิรภัยแยกส่วน): เรียกได้จาก task context เท่านั้น ห้ามเรียกจาก ISR; OPTIGA manager ต้องทำงานอยู่ และ strong definition จะกัน touch ของ CM55 ออกจากบัส SCB5 ที่ใช้ร่วมกันตลอดทั้ง transaction ไม่มี call site ในเทมเพลตเลย: ผู้เรียกรายเดียวที่มีอยู่คือเส้นทาง staging โมเดลใน modedgeai.c ที่เก็บไว้ใน archive ซึ่งไม่ได้ส่งมอบมาเป็นซอร์ส
ตรวจสอบ แต่ยังไม่บังคับใช้ ในเฟิร์มแวร์ที่ build ด้วยค่าตั้งต้น การตรวจนี้ทำงานจริงและให้คำตัดสินจริง — strong definition ปรากฏใน ELF ของ CM33_NS ที่ optiga_verify_staged_model (ตรวจด้วย arm-none-eabi-nm บน proj_cm33_ns/build/KIT_PSE84_AI/Release/proj_cm33_ns.elf เมื่อ 2026-08-29 ส่วน CM33_S และ CM55 ไม่มี symbol นี้) แต่คำตัดสินนั้นถูกบันทึก ไม่ได้ถูกใช้ปฏิเสธ
ผู้เรียกใน archive จะ raise ข้อผิดพลาดก็ต่อเมื่อ EDGE_AI_REQUIRE_SIGNED == 1 เท่านั้น และแมโครนั้นไม่ได้ถูกนิยามไว้ที่ใดเลยในแพ็กเกจนี้ ข้อความปฏิเสธทั้งสามข้อความจึงไม่ปรากฏใน ELF ของ core ใดเลย ผลคือโมเดลที่ไม่มีลายเซ็นหรือมีลายเซ็นที่ผิด ยังคงถูก stage และถูกโหลด โดยผลการตรวจไปปรากฏที่ stage_info()['sig_rc'] และ stage_info()['signed'] เท่านั้น
ผู้ใช้ไลบรารีที่ต้องการให้เป็นการบังคับใช้จริงต้องอ่านสองฟิลด์นั้นแล้วปฏิเสธเอง ตามรูปแบบในตัวอย่างด้านล่าง หรือ build ด้วย EDGE_AI_REQUIRE_SIGNED=1 การเปิดค่านี้เป็นค่าตั้งต้นและการนำแฟล็กออกมาให้ตั้งได้จาก Makefile เป็นงานที่ยังไม่ได้ทำ