คริปโต - แพลตฟอร์ม

โมดูลนี้มีกระบวนการ Abstraction ของแพลตฟอร์มสำหรับคริปโต

สรุป

การแจกแจง

anonymous enum{
  OT_CRYPTO_KEY_USAGE_NONE = 0,
  OT_CRYPTO_KEY_USAGE_EXPORT = 1 << 0,
  OT_CRYPTO_KEY_USAGE_ENCRYPT = 1 << 1,
  OT_CRYPTO_KEY_USAGE_DECRYPT = 1 << 2,
  OT_CRYPTO_KEY_USAGE_SIGN_HASH = 1 << 3,
  OT_CRYPTO_KEY_USAGE_VERIFY_HASH = 1 << 4
}
enum
กำหนดการตั้งค่าสถานะการใช้งานหลัก
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256,
  OT_CRYPTO_KEY_ALG_ECDSA
}
enum
กำหนดอัลกอริทึมที่สำคัญ
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
กำหนดประเภทพื้นที่เก็บข้อมูลหลัก
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
กำหนดประเภทคีย์

Typedef

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
ประเภทข้อมูลนี้แสดงถึงข้อมูลอ้างอิงหลัก
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
แสดงแฮช SHA-256

ตัวแปร

OT_TOOL_PACKED_END

ฟังก์ชัน

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
เข้ารหัสข้อมูลที่ระบุ
otPlatCryptoAesFree(otCryptoContext *aContext)
อิสระในบริบทของ AES
otPlatCryptoAesInit(otCryptoContext *aContext)
เริ่มต้นการดำเนินการ AES
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
ตั้งค่าคีย์สำหรับการดำเนินการ AES
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
ทำลายคีย์ที่จัดเก็บไว้ใน PSA ITS
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
รับคีย์สาธารณะที่เชื่อมโยงจากการอ้างอิงคีย์ที่ส่งผ่าน
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
สร้างและนำเข้าคู่คีย์ ECDSA ใหม่เมื่อการอ้างอิงที่มีการส่งผ่าน
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
สร้างและเติมบัฟเฟอร์เอาต์พุตด้วยคู่คีย์ ECDSA ใหม่
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
รับคีย์สาธารณะที่เกี่ยวข้องจากบริบทการป้อนข้อมูล
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
คำนวณลายเซ็น ECDSA สำหรับข้อความที่แฮชโดยใช้คีย์ส่วนตัวจากบริบทอินพุต
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
คำนวณลายเซ็น ECDSA สำหรับข้อความที่แฮชโดยใช้การอ้างอิงคีย์ที่ส่งผ่าน
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
ใช้คีย์จากบริบทอินพุตเพื่อยืนยันลายเซ็น ECDSA ของข้อความที่แฮช
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
ใช้ Keyref เพื่อยืนยันลายเซ็น ECDSA ของข้อความที่แฮช
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
ส่งออกคีย์ที่เก็บไว้ใน PSA ITS
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
ตรวจสอบว่าการอ้างอิงคีย์ที่ส่งมีคีย์ที่เชื่อมโยงใน PSA ITS หรือไม่
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
เริ่มต้นบริบท HKDF
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
ทำขั้นตอนขยาย HKDF
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
ดำเนินการตามขั้นตอนแยก HKDF
otPlatCryptoHkdfInit(otCryptoContext *aContext)
เริ่มต้นบริบท HKDF
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
ยกเลิกการเริ่มต้นการดำเนินการ HMAC
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
ดำเนินการ HMAC ให้เสร็จสมบูรณ์
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
เริ่มต้นการดำเนินการ HMAC
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
เริ่มการดำเนินการ HMAC
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
อัปเดตการดำเนินการ HMAC ด้วยอินพุตใหม่
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
นำเข้าคีย์ไปยัง PSA ITS
otPlatCryptoInit(void)
void
เริ่มต้นโมดูล Crypto
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
แสดง PKCS#5 PBKDF2 โดยใช้ CMAC (AES-CMAC-PRF-128)
otPlatCryptoRandomDeinit(void)
void
ยกเลิกการเริ่มต้นเครื่องมือสร้างหมายเลขที่มีการรักษาความปลอดภัยแบบเข้ารหัสลับ (CSPRNG)
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
เติมบัฟเฟอร์ที่ระบุด้วยไบต์แบบสุ่มที่มีความปลอดภัยแบบเข้ารหัส
otPlatCryptoRandomInit(void)
void
เริ่มต้นเครื่องมือสร้างหมายเลขที่มีการรักษาความปลอดภัยแบบเข้ารหัสลับ (CSPRNG)
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
ยกเลิกการเริ่มต้นการดำเนินการ SHA-256
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
ดำเนินการ SHA-256 ให้เสร็จ
otPlatCryptoSha256Init(otCryptoContext *aContext)
เริ่มต้นการดำเนินการ SHA-256
otPlatCryptoSha256Start(otCryptoContext *aContext)
เริ่มการดำเนินการ SHA-256
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
อัปเดตการดำเนินการ SHA-256 ด้วยอินพุตใหม่

โครงสร้าง

otCryptoContext

จัดเก็บออบเจ็กต์บริบทสำหรับ API ของแพลตฟอร์ม

otCryptoKey

แสดงเนื้อหาคีย์ที่จำเป็นสำหรับการดำเนินการ Crypto

otPlatCryptoEcdsaKeyPair

แสดงคู่คีย์ ECDSA (คีย์สาธารณะและคีย์ส่วนตัว)

otPlatCryptoEcdsaPublicKey

แสดงคีย์สาธารณะ ECDSA

otPlatCryptoEcdsaSignature

แสดงลายเซ็น ECDSA

otPlatCryptoSha256Hash

แสดงแฮช SHA-256

การแจกแจง

enum ที่ไม่ระบุตัวตน

 anonymous enum

กำหนดการตั้งค่าสถานะการใช้งานหลัก

พร็อพเพอร์ตี้
OT_CRYPTO_KEY_USAGE_DECRYPT

การใช้คีย์: AES ECB

OT_CRYPTO_KEY_USAGE_ENCRYPT

การใช้คีย์: การเข้ารหัส (กำหนดผู้ให้บริการ)

OT_CRYPTO_KEY_USAGE_EXPORT

การใช้คีย์: สามารถส่งออกคีย์ได้

OT_CRYPTO_KEY_USAGE_NONE

การใช้คีย์: การใช้คีย์ว่างเปล่า

OT_CRYPTO_KEY_USAGE_SIGN_HASH

การใช้คีย์: แฮชป้าย

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

การใช้คีย์: ยืนยันแฮช

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

กำหนดอัลกอริทึมที่สำคัญ

พร็อพเพอร์ตี้
OT_CRYPTO_KEY_ALG_AES_ECB

อัลกอริทึมหลัก: AES ECB

OT_CRYPTO_KEY_ALG_ECDSA

อัลกอริทึมหลัก: ECDSA

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

อัลกอริทึมหลัก: HMAC SHA-256

OT_CRYPTO_KEY_ALG_VENDOR

อัลกอริทึมหลัก: ผู้ให้บริการกำหนด

otCryptoKeyStorage

 otCryptoKeyStorage

กำหนดประเภทพื้นที่เก็บข้อมูลหลัก

พร็อพเพอร์ตี้
OT_CRYPTO_KEY_STORAGE_PERSISTENT

ความต่อเนื่องของคีย์: คีย์คงอยู่ตลอด

OT_CRYPTO_KEY_STORAGE_VOLATILE

ความต่อเนื่องหลัก: คีย์มีความผันผวน

otCryptoKeyType

 otCryptoKeyType

กำหนดประเภทคีย์

พร็อพเพอร์ตี้
OT_CRYPTO_KEY_TYPE_AES

ประเภทคีย์: AES

OT_CRYPTO_KEY_TYPE_ECDSA

ประเภทคีย์: ECDSA

OT_CRYPTO_KEY_TYPE_HMAC

ประเภทคีย์: HMAC

OT_CRYPTO_KEY_TYPE_RAW

ประเภทคีย์: ข้อมูลดิบ

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

ประเภทข้อมูลนี้แสดงถึงข้อมูลอ้างอิงหลัก

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

แสดงแฮช SHA-256

ตัวแปร

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

ฟังก์ชัน

otPlatCryptoAesEncrypt

otError otPlatCryptoAesEncrypt(
  otCryptoContext *aContext,
  const uint8_t *aInput,
  uint8_t *aOutput
)

เข้ารหัสข้อมูลที่ระบุ

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ AES
[in] aInput
ตัวชี้ไปยังบัฟเฟอร์อินพุต
[in] aOutput
ชี้ไปที่บัฟเฟอร์เอาต์พุต
แสดงผลค่า
OT_ERROR_NONE
เข้ารหัส aInput เรียบร้อยแล้ว
OT_ERROR_FAILED
เข้ารหัส aInput ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aKey หรือ aOutput เป็นค่าว่าง

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

อิสระในบริบทของ AES

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ AES
แสดงผลค่า
OT_ERROR_NONE
ยกเลิกบริบท AES สำเร็จแล้ว
OT_ERROR_FAILED
เพิ่มพื้นที่ว่างสำหรับบริบท AES ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

เริ่มต้นการดำเนินการ AES

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ AES
แสดงผลค่า
OT_ERROR_NONE
เริ่มต้นการดำเนินการ AES สำเร็จแล้ว
OT_ERROR_FAILED
เริ่มต้นการดำเนินการ AES ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง
OT_ERROR_NO_BUFS
จัดสรรบริบทไม่ได้

otPlatCryptoAesSetKey

otError otPlatCryptoAesSetKey(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

ตั้งค่าคีย์สำหรับการดำเนินการ AES

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ AES
[out] aKey
คีย์ที่ใช้สำหรับการดำเนินการ AES
แสดงผลค่า
OT_ERROR_NONE
ตั้งค่าคีย์สำหรับการดำเนินการ AES สำเร็จแล้ว
OT_ERROR_FAILED
ตั้งค่าคีย์สำหรับการดำเนินการ AES ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aKey เป็นค่าว่าง

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

ทำลายคีย์ที่จัดเก็บไว้ใน PSA ITS

รายละเอียด
พารามิเตอร์
[in] aKeyRef
การอ้างอิงคีย์ที่จะถูกทำลาย
แสดงผลค่า
OT_ERROR_NONE
ทำลายคีย์สำเร็จแล้ว
OT_ERROR_FAILED
ทำลายคีย์ไม่สำเร็จ

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

รับคีย์สาธารณะที่เชื่อมโยงจากการอ้างอิงคีย์ที่ส่งผ่าน

คีย์สาธารณะจะได้รับการจัดเก็บแตกต่างกันไปขึ้นอยู่กับไลบรารีแบ็กเอนด์คริปโตที่ใช้อยู่ (OPENTHREAD_CONFIG_CRYPTO_LIB)

API นี้ต้องแน่ใจว่าได้ส่งคืนคีย์สาธารณะเป็นการแสดงลำดับไบต์ของจุดเส้นโค้งที่ไม่ได้บีบอัด (RFC 6605 - sec 4)

รายละเอียด
พารามิเตอร์
[in] aKeyRef
การอ้างอิงคีย์สำหรับช่องโฆษณาที่จัดเก็บคู่คีย์
[out] aPublicKey
ตัวชี้ไปยังโครงสร้างคีย์สาธารณะ ECDSA เพื่อจัดเก็บคีย์สาธารณะ
แสดงผลค่า
OT_ERROR_NONE
เรียกคีย์สาธารณะเรียบร้อยแล้ว และอัปเดต aBuffer แล้ว
OT_ERROR_PARSE
แยกวิเคราะห์รูปแบบ DER ของคู่คีย์ไม่ได้ (รูปแบบไม่ถูกต้อง)
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

สร้างและนำเข้าคู่คีย์ ECDSA ใหม่เมื่อการอ้างอิงที่มีการส่งผ่าน

รายละเอียด
พารามิเตอร์
[in] aKeyRef
การอ้างอิงคีย์สำหรับช่องโฆษณาที่จัดเก็บคู่คีย์
แสดงผลค่า
OT_ERROR_NONE
สร้างคู่คีย์ใหม่เรียบร้อยแล้ว
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการสร้างคีย์ไม่สำเร็จ
OT_ERROR_NOT_CAPABLE
ไม่รองรับฟีเจอร์
OT_ERROR_FAILED
สร้างคู่คีย์ไม่สำเร็จ

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

สร้างและเติมบัฟเฟอร์เอาต์พุตด้วยคู่คีย์ ECDSA ใหม่

รายละเอียด
พารามิเตอร์
[out] aKeyPair
ตัวชี้ไปยังโครงสร้างคู่คีย์ ECDSA เพื่อจัดเก็บคู่คีย์ที่สร้างขึ้น
แสดงผลค่า
OT_ERROR_NONE
สร้างคู่คีย์ใหม่เรียบร้อยแล้ว
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการสร้างคีย์ไม่สำเร็จ
OT_ERROR_NOT_CAPABLE
ไม่รองรับฟีเจอร์
OT_ERROR_FAILED
สร้างคู่คีย์ไม่สำเร็จ

otPlatCryptoEcdsaGetPublicKey

otError otPlatCryptoEcdsaGetPublicKey(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

รับคีย์สาธารณะที่เกี่ยวข้องจากบริบทการป้อนข้อมูล

รายละเอียด
พารามิเตอร์
[in] aKeyPair
ตัวชี้ไปยังโครงสร้างคู่คีย์ ECDSA ซึ่งจัดเก็บคู่คีย์
[out] aPublicKey
ตัวชี้ไปยังโครงสร้างคีย์สาธารณะ ECDSA เพื่อจัดเก็บคีย์สาธารณะ
แสดงผลค่า
OT_ERROR_NONE
เรียกคีย์สาธารณะเรียบร้อยแล้ว และอัปเดต aBuffer แล้ว
OT_ERROR_PARSE
แยกวิเคราะห์รูปแบบ DER ของคู่คีย์ไม่ได้ (รูปแบบไม่ถูกต้อง)
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoEcdsaSign

otError otPlatCryptoEcdsaSign(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

คำนวณลายเซ็น ECDSA สำหรับข้อความที่แฮชโดยใช้คีย์ส่วนตัวจากบริบทอินพุต

ใช้กระบวนการสร้างลายเซ็นดิจิทัลเชิงกำหนดจาก RFC 6979

รายละเอียด
พารามิเตอร์
[in] aKeyPair
ตัวชี้ไปยังโครงสร้างคู่คีย์ ECDSA ซึ่งจัดเก็บคู่คีย์
[in] aHash
ตัวชี้ไปยังโครงสร้างแฮช SHA-256 ที่เก็บค่าแฮชสำหรับการคำนวณลายเซ็น
[out] aSignature
ตัวชี้ไปยังโครงสร้างลายเซ็น ECDSA เพื่อแสดงลายเซ็นที่คำนวณแล้ว
แสดงผลค่า
OT_ERROR_NONE
คำนวณลายเซ็นเรียบร้อยแล้ว อัปเดต aSignature แล้ว
OT_ERROR_PARSE
แยกวิเคราะห์รูปแบบ DER ของคู่คีย์ไม่ได้ (รูปแบบไม่ถูกต้อง)
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการคำนวณลายเซ็นไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoEcdsaSignUsingKeyRef

otError otPlatCryptoEcdsaSignUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

คำนวณลายเซ็น ECDSA สำหรับข้อความที่แฮชโดยใช้การอ้างอิงคีย์ที่ส่งผ่าน

ใช้กระบวนการสร้างลายเซ็นดิจิทัลเชิงกำหนดจาก RFC 6979

รายละเอียด
พารามิเตอร์
[in] aKeyRef
การอ้างอิงคีย์สำหรับช่องโฆษณาที่จัดเก็บคู่คีย์
[in] aHash
ตัวชี้ไปยังโครงสร้างแฮช SHA-256 ที่เก็บค่าแฮชสำหรับการคำนวณลายเซ็น
[out] aSignature
ตัวชี้ไปยังโครงสร้างลายเซ็น ECDSA เพื่อแสดงลายเซ็นที่คำนวณแล้ว
แสดงผลค่า
OT_ERROR_NONE
คำนวณลายเซ็นเรียบร้อยแล้ว อัปเดต aSignature แล้ว
OT_ERROR_PARSE
แยกวิเคราะห์รูปแบบ DER ของคู่คีย์ไม่ได้ (รูปแบบไม่ถูกต้อง)
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการคำนวณลายเซ็นไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoEcdsaVerify

otError otPlatCryptoEcdsaVerify(
  const otPlatCryptoEcdsaPublicKey *aPublicKey,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

ใช้คีย์จากบริบทอินพุตเพื่อยืนยันลายเซ็น ECDSA ของข้อความที่แฮช

รายละเอียด
พารามิเตอร์
[in] aPublicKey
ตัวชี้ไปยังโครงสร้างคีย์สาธารณะ ECDSA ที่จัดเก็บคีย์สาธารณะสำหรับการยืนยันลายเซ็น
[in] aHash
ตัวชี้ไปยังโครงสร้างแฮช SHA-256 ที่เก็บค่าแฮชสำหรับการยืนยันลายเซ็น
[in] aSignature
ตัวชี้ไปยังโครงสร้างลายเซ็น ECDSA ซึ่งจัดเก็บค่าลายเซ็นที่จะยืนยัน
แสดงผลค่า
OT_ERROR_NONE
ยืนยันลายเซ็นเรียบร้อยแล้ว
OT_ERROR_SECURITY
ลายเซ็นไม่ถูกต้อง
OT_ERROR_INVALID_ARGS
คีย์หรือแฮชไม่ถูกต้อง
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการยืนยันลายเซ็นไม่สำเร็จ

otPlatCryptoEcdsaVerifyUsingKeyRef

otError otPlatCryptoEcdsaVerifyUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

ใช้ Keyref เพื่อยืนยันลายเซ็น ECDSA ของข้อความที่แฮช

รายละเอียด
พารามิเตอร์
[in] aKeyRef
การอ้างอิงคีย์สำหรับช่องโฆษณาที่จัดเก็บคู่คีย์
[in] aHash
ตัวชี้ไปยังโครงสร้างแฮช SHA-256 ที่เก็บค่าแฮชสำหรับการยืนยันลายเซ็น
[in] aSignature
ตัวชี้ไปยังโครงสร้างลายเซ็น ECDSA ซึ่งจัดเก็บค่าลายเซ็นที่จะยืนยัน
แสดงผลค่า
OT_ERROR_NONE
ยืนยันลายเซ็นเรียบร้อยแล้ว
OT_ERROR_SECURITY
ลายเซ็นไม่ถูกต้อง
OT_ERROR_INVALID_ARGS
คีย์หรือแฮชไม่ถูกต้อง
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการยืนยันลายเซ็นไม่สำเร็จ

otPlatCryptoExportKey

otError otPlatCryptoExportKey(
  otCryptoKeyRef aKeyRef,
  uint8_t *aBuffer,
  size_t aBufferLen,
  size_t *aKeyLen
)

ส่งออกคีย์ที่เก็บไว้ใน PSA ITS

รายละเอียด
พารามิเตอร์
[in] aKeyRef
การอ้างอิงคีย์ที่จะใช้ในการดำเนินการคริปโต
[out] aBuffer
ตัวชี้ไปยังบัฟเฟอร์ที่ต้องการส่งออกคีย์
[in] aBufferLen
ความยาวของบัฟเฟอร์ที่ส่งผ่านเพื่อจัดเก็บคีย์ที่ส่งออก
[out] aKeyLen
ตัวชี้ที่จะแสดงผลความยาวของคีย์ที่ส่งออก
แสดงผลค่า
OT_ERROR_NONE
ส่งออก aKeyRef สำเร็จแล้ว
OT_ERROR_FAILED
ส่งออก aKeyRef ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aBuffer เป็นค่าว่าง

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

ตรวจสอบว่าการอ้างอิงคีย์ที่ส่งมีคีย์ที่เชื่อมโยงใน PSA ITS หรือไม่

รายละเอียด
พารามิเตอร์
[in] aKeyRef
ข้อมูลอ้างอิงกุญแจที่ต้องตรวจสอบ
แสดงผลค่า
TRUE
มีคีย์ที่เชื่อมโยงกับ aKeyRef
FALSE
ไม่มีคีย์ที่เชื่อมโยงกับ aKeyRef

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

เริ่มต้นบริบท HKDF

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HKDF
แสดงผลค่า
OT_ERROR_NONE
ยกเลิกการเริ่มต้นการดำเนินการ HKDF เรียบร้อยแล้ว
OT_ERROR_FAILED
การดำเนินการ HKDF ที่ไม่ได้เริ่มต้นล้มเหลว
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoHkdfExpand

otError otPlatCryptoHkdfExpand(
  otCryptoContext *aContext,
  const uint8_t *aInfo,
  uint16_t aInfoLength,
  uint8_t *aOutputKey,
  uint16_t aOutputKeyLength
)

ทำขั้นตอนขยาย HKDF

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทการดำเนินการสำหรับการดำเนินการ HKDF
[in] aInfo
ชี้ไปที่ลำดับข้อมูล
[in] aInfoLength
ความยาวของลำดับข้อมูล
[out] aOutputKey
ชี้ไปที่คีย์เอาต์พุต
[in] aOutputKeyLength
ขนาดของบัฟเฟอร์คีย์เอาต์พุต
แสดงผลค่า
OT_ERROR_NONE
HKDFExpand สำเร็จแล้ว
OT_ERROR_FAILED
ขยาย HKDF ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoHkdfExtract

otError otPlatCryptoHkdfExtract(
  otCryptoContext *aContext,
  const uint8_t *aSalt,
  uint16_t aSaltLength,
  const otCryptoKey *aInputKey
)

ดำเนินการตามขั้นตอนแยก HKDF

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทการดำเนินการสำหรับการดำเนินการ HKDF
[in] aSalt
ชี้ไปที่ Salt สำหรับ HKDF
[in] aSaltLength
ความยาวของเกลือ
[in] aInputKey
ชี้ไปที่คีย์อินพุต
แสดงผลค่า
OT_ERROR_NONE
แยก HKDF สำเร็จแล้ว
OT_ERROR_FAILED
การแตกข้อมูล HKDF ล้มเหลว

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

เริ่มต้นบริบท HKDF

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HKDF
แสดงผลค่า
OT_ERROR_NONE
เริ่มต้นการดำเนินการ AES สำเร็จแล้ว
OT_ERROR_FAILED
เริ่มต้นการดำเนินการ AES ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

ยกเลิกการเริ่มต้นการดำเนินการ HMAC

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HMAC
แสดงผลค่า
OT_ERROR_NONE
ยกเลิกการเริ่มต้นการดำเนินการ HMAC เรียบร้อยแล้ว
OT_ERROR_FAILED
การดำเนินการ HMAC ที่ไม่ได้เริ่มต้นล้มเหลว
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoHmacSha256Finish

otError otPlatCryptoHmacSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aBuf,
  size_t aBufLength
)

ดำเนินการ HMAC ให้เสร็จสมบูรณ์

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HMAC
[out] aBuf
ตัวชี้ไปยังบัฟเฟอร์เอาต์พุต
[in] aBufLength
ความยาวของ aBuf ในหน่วยไบต์
แสดงผลค่า
OT_ERROR_NONE
ดำเนินการ HMAC สำเร็จแล้ว
OT_ERROR_FAILED
ดำเนินการ HMAC ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aBuf เป็นค่าว่าง

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

เริ่มต้นการดำเนินการ HMAC

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HMAC
แสดงผลค่า
OT_ERROR_NONE
เริ่มต้นการดำเนินการ HMAC สำเร็จแล้ว
OT_ERROR_FAILED
เริ่มต้นการดำเนินการ HMAC ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoHmacSha256Start

otError otPlatCryptoHmacSha256Start(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

เริ่มการดำเนินการ HMAC

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HMAC
[in] aKey
เนื้อหาคีย์ที่จะใช้สำหรับการดำเนินการ HMAC
แสดงผลค่า
OT_ERROR_NONE
เริ่มการดำเนินการ HMAC เรียบร้อยแล้ว
OT_ERROR_FAILED
เริ่มการดำเนินการ HMAC ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aKey เป็นค่าว่าง

otPlatCryptoHmacSha256Update

otError otPlatCryptoHmacSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

อัปเดตการดำเนินการ HMAC ด้วยอินพุตใหม่

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ HMAC
[in] aBuf
ตัวชี้ไปยังบัฟเฟอร์อินพุต
[in] aBufLength
ความยาวของ aBuf ในหน่วยไบต์
แสดงผลค่า
OT_ERROR_NONE
อัปเดต HMAC ด้วยการดำเนินการป้อนข้อมูลใหม่เรียบร้อยแล้ว
OT_ERROR_FAILED
อัปเดตการดำเนินการ HMAC ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aBuf เป็นค่าว่าง

otPlatCryptoImportKey

otError otPlatCryptoImportKey(
  otCryptoKeyRef *aKeyRef,
  otCryptoKeyType aKeyType,
  otCryptoKeyAlgorithm aKeyAlgorithm,
  int aKeyUsage,
  otCryptoKeyStorage aKeyPersistence,
  const uint8_t *aKey,
  size_t aKeyLen
)

นำเข้าคีย์ไปยัง PSA ITS

หากส่ง OT_CRYPTO_KEY_STORAGE_VOLATILE สำหรับ aKeyPersistence จากนั้น aKeyRef จะเป็นเอาต์พุต ค่าเริ่มต้นจะไม่สำคัญและ API ของแพลตฟอร์มจะต้องอัปเดตเพื่อแสดงการอ้างอิงคีย์ใหม่

รายละเอียด
พารามิเตอร์
[in,out] aKeyRef
ชี้ไปที่การอ้างอิงคีย์ที่จะใช้ในการดำเนินการกับคริปโต
[in] aKeyType
การเข้ารหัสประเภทคีย์สำหรับคีย์
[in] aKeyAlgorithm
การเข้ารหัสคีย์อัลกอริทึมของคีย์
[in] aKeyUsage
การเข้ารหัสการใช้งานคีย์สำหรับคีย์ (ชุดค่าผสมของ OT_CRYPTO_KEY_USAGE_*)
[in] aKeyPersistence
ความต่อเนื่องของคีย์สำหรับคีย์นี้
[in] aKey
คีย์จริงที่จะนำเข้า
[in] aKeyLen
ความยาวของคีย์ที่จะนำเข้า
แสดงผลค่า
OT_ERROR_NONE
นำเข้าคีย์สำเร็จแล้ว
OT_ERROR_FAILED
นำเข้าคีย์ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
ตั้งค่า aKey เป็น NULL แล้ว

API นี้จะใช้กับแกน OT เท่านั้นเมื่อเปิดใช้ OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

เริ่มต้นโมดูล Crypto

otPlatCryptoPbkdf2GenerateKey

otError otPlatCryptoPbkdf2GenerateKey(
  const uint8_t *aPassword,
  uint16_t aPasswordLen,
  const uint8_t *aSalt,
  uint16_t aSaltLen,
  uint32_t aIterationCounter,
  uint16_t aKeyLen,
  uint8_t *aKey
)

แสดง PKCS#5 PBKDF2 โดยใช้ CMAC (AES-CMAC-PRF-128)

รายละเอียด
พารามิเตอร์
[in] aPassword
รหัสผ่านที่จะใช้เมื่อสร้างคีย์
[in] aPasswordLen
ความยาวของรหัสผ่าน
[in] aSalt
Salt ที่จะใช้เมื่อสร้างคีย์
[in] aSaltLen
ความยาวของเกลือ
[in] aIterationCounter
จำนวนการทำซ้ำ
[in] aKeyLen
ความยาวของคีย์ที่สร้างขึ้นในหน่วยไบต์
[out] aKey
ตัวชี้ไปยังคีย์ที่สร้างขึ้น
แสดงผลค่า
OT_ERROR_NONE
สร้างคู่คีย์ใหม่เรียบร้อยแล้ว
OT_ERROR_NO_BUFS
จัดสรรบัฟเฟอร์สำหรับการสร้างคีย์ไม่สำเร็จ
OT_ERROR_NOT_CAPABLE
ไม่รองรับฟีเจอร์
OT_ERROR_FAILED
สร้างคีย์ไม่สำเร็จ

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

ยกเลิกการเริ่มต้นเครื่องมือสร้างหมายเลขที่มีการรักษาความปลอดภัยแบบเข้ารหัสลับ (CSPRNG)

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

เติมบัฟเฟอร์ที่ระบุด้วยไบต์แบบสุ่มที่มีความปลอดภัยแบบเข้ารหัส

รายละเอียด
พารามิเตอร์
[out] aBuffer
ตัวชี้ไปยังบัฟเฟอร์เพื่อเติมไบต์แบบสุ่ม
[in] aSize
ขนาดของบัฟเฟอร์ (จำนวนไบต์ที่จะเติม)
แสดงผลค่า
OT_ERROR_NONE
เติมบัฟเฟอร์ด้วยค่าแบบสุ่มสำเร็จแล้ว
OT_ERROR_FAILED
การดำเนินการล้มเหลว

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

เริ่มต้นเครื่องมือสร้างหมายเลขที่มีการรักษาความปลอดภัยแบบเข้ารหัสลับ (CSPRNG)

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

ยกเลิกการเริ่มต้นการดำเนินการ SHA-256

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ SHA-256
แสดงผลค่า
OT_ERROR_NONE
ยกเลิกการเริ่มต้นการดำเนินการ SHA-256 สำเร็จแล้ว
OT_ERROR_FAILED
การดำเนินการ SHA-256 ที่ไม่ได้เริ่มต้นล้มเหลว
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoSha256Finish

otError otPlatCryptoSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aHash,
  uint16_t aHashSize
)

ดำเนินการ SHA-256 ให้เสร็จ

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ SHA-256
[in] aHash
ตัวชี้ไปยังบัฟเฟอร์เอาต์พุตสำหรับเก็บแฮช
[in] aHashSize
ความยาวของ aHash ในหน่วยไบต์
แสดงผลค่า
OT_ERROR_NONE
ดำเนินการ SHA-256 เสร็จเรียบร้อย
OT_ERROR_FAILED
ดำเนินการ SHA-256 ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aHash เป็นค่าว่าง

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

เริ่มต้นการดำเนินการ SHA-256

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ SHA-256
แสดงผลค่า
OT_ERROR_NONE
เริ่มต้นการดำเนินการ SHA-256 สำเร็จแล้ว
OT_ERROR_FAILED
เริ่มต้นการดำเนินการ SHA-256 ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

เริ่มการดำเนินการ SHA-256

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ SHA-256
แสดงผลค่า
OT_ERROR_NONE
เริ่มการดำเนินการ SHA-256 เรียบร้อยแล้ว
OT_ERROR_FAILED
เริ่มการดำเนินการ SHA-256 ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext เป็นค่าว่าง

otPlatCryptoSha256Update

otError otPlatCryptoSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

อัปเดตการดำเนินการ SHA-256 ด้วยอินพุตใหม่

รายละเอียด
พารามิเตอร์
[in] aContext
บริบทสำหรับการดำเนินการ SHA-256
[in] aBuf
ตัวชี้ไปยังบัฟเฟอร์อินพุต
[in] aBufLength
ความยาวของ aBuf ในหน่วยไบต์
แสดงผลค่า
OT_ERROR_NONE
อัปเดต SHA-256 ด้วยการดำเนินการป้อนข้อมูลใหม่สำเร็จแล้ว
OT_ERROR_FAILED
อัปเดตการดำเนินการ SHA-256 ไม่สำเร็จ
OT_ERROR_INVALID_ARGS
aContext หรือ aBuf เป็นค่าว่าง

มาโคร

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

ขนาดบัฟเฟอร์สูงสุด (เป็นไบต์) สำหรับการแสดงคู่คีย์ EDCSA ในรูปแบบ DER

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

ขนาดบัฟเฟอร์ (ในหน่วยไบต์) สำหรับแสดงคีย์สาธารณะ EDCSA

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

ขนาดบัฟเฟอร์ (ในหน่วยไบต์) สำหรับแสดงลายเซ็น EDCSA

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

ความยาว SALT สูงสุด PBKDF2: คำนำหน้า Salt (6) + แผงแบบขยาย (8) + ชื่อเครือข่าย (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

ความยาวของแฮช SHA256 (ในหน่วยไบต์)

แหล่งข้อมูล

หัวข้ออ้างอิง API ของ OpenThread จะมาจากซอร์สโค้ดซึ่งพร้อมใช้งานใน GitHub ดูข้อมูลเพิ่มเติมหรือมีส่วนร่วมในเอกสารประกอบของเราได้ที่แหล่งข้อมูล