Tiền mã hoá – Nền tảng

Mô-đun này bao gồm nội dung tóm tắt về nền tảng cho tiền mã hoá.

Tóm tắt

Bảng liệt kê

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
Xác định cờ sử dụng khoá.
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
Xác định các thuật toán chính.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Xác định các loại bộ nhớ chính.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Xác định các loại khoá.

Typedef

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Kiểu dữ liệu này đại diện cho tham chiếu khoá.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Đại diện cho hàm băm SHA-256.

Biến

OT_TOOL_PACKED_END

Hàm

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Mã hoá dữ liệu được cung cấp.
otPlatCryptoAesFree(otCryptoContext *aContext)
Miễn phí ngữ cảnh AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
Bắt đầu thao tác AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Đặt khoá cho hoạt động AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Huỷ bỏ khoá lưu trữ trong PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Lấy khoá công khai liên kết từ tệp tham chiếu khoá đã chuyển.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Tạo và nhập một cặp khoá ECDSA mới tại tệp tham chiếu đã chuyển.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Tạo và điền sẵn vùng đệm đầu ra bằng một cặp khoá ECDSA mới.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Nhận khoá công khai liên kết từ ngữ cảnh nhập.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Tính toán chữ ký ECDSA cho một thư đã băm bằng cách sử dụng khoá riêng tư trong ngữ cảnh nhập.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Tính toán chữ ký ECDSA cho một thư đã băm bằng cách sử dụng Giá trị tham chiếu khoá đã chuyển.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Sử dụng khoá trong ngữ cảnh nhập để xác minh chữ ký ECDSA của thư đã băm.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Sử dụng keyref để xác minh chữ ký ECDSA của thư đã băm.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Xuất khoá được lưu trữ trong PSA ITS.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Kiểm tra xem tham chiếu khoá được chuyển có khoá liên kết trong Thông báo dịch vụ công cộng (PSA) hay không.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Huỷ khởi tạo ngữ cảnh HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Thực hiện bước Mở rộng HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Thực hiện bước Trích xuất HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Khởi tạo ngữ cảnh HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Huỷ khởi tạo thao tác HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Hoàn tất toán tử HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Khởi động thao tác HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Bắt đầu thao tác HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Cập nhật toán tử HMAC với giá trị đầu vào mới.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Nhập khoá vào PSA ITS.
otPlatCryptoInit(void)
void
Khởi động mô-đun 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)
Thực hiện PKCS#5 PBKDF2 bằng CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Huỷ khởi tạo trình tạo số giả ngẫu nhiên được bảo mật bằng mật mã (CSPRNG).
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Lấp đầy vùng đệm nhất định bằng các byte ngẫu nhiên được bảo mật bằng mật mã.
otPlatCryptoRandomInit(void)
void
Khởi động trình tạo số giả ngẫu nhiên được bảo mật bằng mật mã (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Huỷ khởi động thao tác SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Hoàn tất thao tác SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Khởi chạy thao tác SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
Bắt đầu thao tác SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Cập nhật thao tác SHA-256 bằng dữ liệu đầu vào mới.

Cấu trúc

otCryptoContext

Lưu trữ đối tượng ngữ cảnh cho các API nền tảng.

otCryptoKey

Đại diện cho Tài liệu chính cần thiết cho các thao tác Crypto.

otPlatCryptoEcdsaKeyPair

Đại diện cho một cặp khoá ECDSA (khoá công khai và riêng tư).

otPlatCryptoEcdsaPublicKey

Đại diện cho khoá công khai ECDSA.

otPlatCryptoEcdsaSignature

Đại diện cho chữ ký ECDSA.

otPlatCryptoSha256Hash

Đại diện cho hàm băm SHA-256.

Bảng liệt kê

enum ẩn danh

 anonymous enum

Xác định cờ sử dụng khoá.

Thuộc tính
OT_CRYPTO_KEY_USAGE_DECRYPT

Cách sử dụng chính: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Sử dụng khoá: Mã hoá (do nhà cung cấp xác định).

OT_CRYPTO_KEY_USAGE_EXPORT

Sử dụng khoá: Bạn có thể xuất khoá.

OT_CRYPTO_KEY_USAGE_NONE

Sử dụng khoá: Trường hợp sử dụng khoá trống.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Cách sử dụng khoá: Hàm băm ký tên.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Sử dụng khoá: Xác minh hàm băm.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Xác định các thuật toán chính.

Thuộc tính
OT_CRYPTO_KEY_ALG_AES_ECB

Thuật toán chính: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Thuật toán chính: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Thuật toán khoá: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Thuật toán chính: Nhà cung cấp xác định.

otCryptoKeyStorage

 otCryptoKeyStorage

Xác định các loại bộ nhớ chính.

Thuộc tính
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Khả năng lưu trữ cố định của khoá: Khoá liên tục.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Khả năng lưu trữ cố định của khoá: Khoá dễ biến động.

otCryptoKeyType

 otCryptoKeyType

Xác định các loại khoá.

Thuộc tính
OT_CRYPTO_KEY_TYPE_AES

Loại khoá: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Loại khoá: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Loại khoá: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Loại khoá: Dữ liệu thô.

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Kiểu dữ liệu này đại diện cho tham chiếu khoá.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Đại diện cho hàm băm SHA-256.

Biến

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Hàm

otPlatCryptoAesEncrypt

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

Mã hoá dữ liệu được cung cấp.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động AES.
[in] aInput
Con trỏ đến vùng đệm đầu vào.
[in] aOutput
Con trỏ đến vùng đệm đầu ra.
Giá trị trả về
OT_ERROR_NONE
Đã mã hoá thành công aInput.
OT_ERROR_FAILED
Không mã hoá được aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey hoặc aOutput là NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Miễn phí ngữ cảnh AES.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động AES.
Giá trị trả về
OT_ERROR_NONE
Đã giải phóng thành công ngữ cảnh AES.
OT_ERROR_FAILED
Không giải phóng được ngữ cảnh AES.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Bắt đầu thao tác AES.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động AES.
Giá trị trả về
OT_ERROR_NONE
Đã khởi chạy thành công thao tác AES.
OT_ERROR_FAILED
Không khởi động được thao tác AES.
OT_ERROR_INVALID_ARGS
aContext là NULL
OT_ERROR_NO_BUFS
Không thể phân bổ ngữ cảnh.

otPlatCryptoAesSetKey

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

Đặt khoá cho hoạt động AES.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động AES.
[out] aKey
Khoá sử dụng cho hoạt động AES.
Giá trị trả về
OT_ERROR_NONE
Đã đặt thành công khoá để hoạt động AES.
OT_ERROR_FAILED
Không đặt được khoá cho hoạt động AES.
OT_ERROR_INVALID_ARGS
aContext hoặc aKey là NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Huỷ bỏ khoá lưu trữ trong PSA ITS.

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu khoá cần bị huỷ
Giá trị trả về
OT_ERROR_NONE
Đã huỷ thành công khoá.
OT_ERROR_FAILED
Không huỷ được khoá.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Lấy khoá công khai liên kết từ tệp tham chiếu khoá đã chuyển.

Khoá công khai được lưu trữ theo nhiều cách, tuỳ thuộc vào thư viện phần phụ trợ tiền mã hoá đang được sử dụng (OPENChanges_CONFIG_CRYPTO_LIB).

API này phải đảm bảo trả về khóa công khai dưới dạng đại diện chuỗi byte của một điểm đường cong không nén (RFC 6605 - sec 4)

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu phím đến vị trí lưu trữ cặp khoá.
[out] aPublicKey
Con trỏ đến cấu trúc khoá công khai ECDSA để lưu trữ khoá công khai.
Giá trị trả về
OT_ERROR_NONE
Đã truy xuất thành công khoá công khai và aBuffer đã được cập nhật.
OT_ERROR_PARSE
Không thể phân tích cú pháp định dạng DER của cặp khoá (định dạng không hợp lệ).
OT_ERROR_INVALID_ARGS
aContext là giá trị NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Tạo và nhập một cặp khoá ECDSA mới tại tệp tham chiếu đã chuyển.

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu phím đến vị trí lưu trữ cặp khoá.
Giá trị trả về
OT_ERROR_NONE
Một cặp khoá mới đã được tạo thành công.
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để tạo khoá.
OT_ERROR_NOT_CAPABLE
Tính năng không được hỗ trợ.
OT_ERROR_FAILED
Không tạo được cặp khoá.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Tạo và điền sẵn vùng đệm đầu ra bằng một cặp khoá ECDSA mới.

Thông tin chi tiết
Thông số
[out] aKeyPair
Con trỏ đến cấu trúc cặp khoá ECDSA để lưu trữ cặp khoá đã tạo.
Giá trị trả về
OT_ERROR_NONE
Một cặp khoá mới đã được tạo thành công.
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để tạo khoá.
OT_ERROR_NOT_CAPABLE
Tính năng không được hỗ trợ.
OT_ERROR_FAILED
Không tạo được cặp khoá.

otPlatCryptoEcdsaGetPublicKey

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

Nhận khoá công khai liên kết từ ngữ cảnh nhập.

Thông tin chi tiết
Thông số
[in] aKeyPair
Con trỏ tới cấu trúc cặp khoá ECDSA nơi lưu trữ cặp khoá.
[out] aPublicKey
Con trỏ đến cấu trúc khoá công khai ECDSA để lưu trữ khoá công khai.
Giá trị trả về
OT_ERROR_NONE
Đã truy xuất thành công khoá công khai và aBuffer đã được cập nhật.
OT_ERROR_PARSE
Không thể phân tích cú pháp định dạng DER của cặp khoá (định dạng không hợp lệ).
OT_ERROR_INVALID_ARGS
aContext là giá trị NULL.

otPlatCryptoEcdsaSign

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

Tính toán chữ ký ECDSA cho một thư đã băm bằng cách sử dụng khoá riêng tư trong ngữ cảnh nhập.

Sử dụng quy trình tạo chữ ký số xác định theo tiêu chuẩn RFC 6979.

Thông tin chi tiết
Thông số
[in] aKeyPair
Con trỏ tới cấu trúc cặp khoá ECDSA nơi lưu trữ cặp khoá.
[in] aHash
Con trỏ đến cấu trúc hàm băm SHA-256 nơi lưu trữ giá trị hàm băm để tính toán chữ ký.
[out] aSignature
Con trỏ đến cấu trúc chữ ký ECDSA để xuất chữ ký đã tính toán.
Giá trị trả về
OT_ERROR_NONE
Chữ ký đã được tính toán thành công và aSignature đã được cập nhật.
OT_ERROR_PARSE
Không thể phân tích cú pháp định dạng DER của cặp khoá (định dạng không hợp lệ).
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để tính toán chữ ký.
OT_ERROR_INVALID_ARGS
aContext là giá trị NULL.

otPlatCryptoEcdsaSignUsingKeyRef

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

Tính toán chữ ký ECDSA cho một thư đã băm bằng cách sử dụng Giá trị tham chiếu khoá đã chuyển.

Sử dụng quy trình tạo chữ ký số xác định theo tiêu chuẩn RFC 6979.

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu phím đến vị trí lưu trữ cặp khoá.
[in] aHash
Con trỏ đến cấu trúc hàm băm SHA-256 nơi lưu trữ giá trị hàm băm để tính toán chữ ký.
[out] aSignature
Con trỏ đến cấu trúc chữ ký ECDSA để xuất chữ ký đã tính toán.
Giá trị trả về
OT_ERROR_NONE
Chữ ký đã được tính toán thành công và aSignature đã được cập nhật.
OT_ERROR_PARSE
Không thể phân tích cú pháp định dạng DER của cặp khoá (định dạng không hợp lệ).
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để tính toán chữ ký.
OT_ERROR_INVALID_ARGS
aContext là giá trị NULL.

otPlatCryptoEcdsaVerify

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

Sử dụng khoá trong ngữ cảnh nhập để xác minh chữ ký ECDSA của thư đã băm.

Thông tin chi tiết
Thông số
[in] aPublicKey
Con trỏ trỏ đến cấu trúc khoá công khai ECDSA nơi lưu trữ khoá công khai để xác minh chữ ký.
[in] aHash
Con trỏ dẫn đến cấu trúc hàm băm SHA-256 nơi lưu trữ giá trị hàm băm để xác minh chữ ký.
[in] aSignature
Con trỏ đến cấu trúc chữ ký ECDSA nơi lưu trữ giá trị chữ ký cần xác minh.
Giá trị trả về
OT_ERROR_NONE
Đã xác minh thành công chữ ký.
OT_ERROR_SECURITY
Chữ ký không hợp lệ.
OT_ERROR_INVALID_ARGS
Khoá hoặc hàm băm không hợp lệ.
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để xác minh chữ ký.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

Sử dụng keyref để xác minh chữ ký ECDSA của thư đã băm.

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu phím đến vị trí lưu trữ cặp khoá.
[in] aHash
Con trỏ dẫn đến cấu trúc hàm băm SHA-256 nơi lưu trữ giá trị hàm băm để xác minh chữ ký.
[in] aSignature
Con trỏ đến cấu trúc chữ ký ECDSA nơi lưu trữ giá trị chữ ký cần xác minh.
Giá trị trả về
OT_ERROR_NONE
Đã xác minh thành công chữ ký.
OT_ERROR_SECURITY
Chữ ký không hợp lệ.
OT_ERROR_INVALID_ARGS
Khoá hoặc hàm băm không hợp lệ.
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để xác minh chữ ký.

otPlatCryptoExportKey

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

Xuất khoá được lưu trữ trong PSA ITS.

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu chính được dùng cho các hoạt động mã hoá.
[out] aBuffer
Con trỏ đến vùng đệm nơi cần xuất khoá.
[in] aBufferLen
Độ dài của vùng đệm được truyền để lưu trữ khoá đã xuất.
[out] aKeyLen
Con trỏ để trả về độ dài của khoá đã xuất.
Giá trị trả về
OT_ERROR_NONE
Đã xuất thành công aKeyRef.
OT_ERROR_FAILED
Không xuất được aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer là NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Kiểm tra xem tham chiếu khoá được chuyển có khoá liên kết trong Thông báo dịch vụ công cộng (PSA) hay không.

Thông tin chi tiết
Thông số
[in] aKeyRef
Tham chiếu khoá cần kiểm tra.
Giá trị trả về
TRUE
Có một khoá liên kết với aKeyRef.
FALSE
Không có khoá nào liên kết với aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Huỷ khởi tạo ngữ cảnh HKDF.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HKDF.
Giá trị trả về
OT_ERROR_NONE
Đã huỷ khởi chạy thành công hoạt động HKDF.
OT_ERROR_FAILED
Không thể huỷ khởi chạy hoạt động HKDF.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoHkdfExpand

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

Thực hiện bước Mở rộng HKDF.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh hoạt động của thao tác HKDF.
[in] aInfo
Con trỏ đến chuỗi Thông tin.
[in] aInfoLength
Độ dài của chuỗi Thông tin.
[out] aOutputKey
Con trỏ đến Khoá đầu ra.
[in] aOutputKeyLength
Kích thước của vùng đệm khoá đầu ra.
Giá trị trả về
OT_ERROR_NONE
HKDF Expand đã thành công.
OT_ERROR_FAILED
Không thể mở rộng HKDF.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoHkdfExtract

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

Thực hiện bước Trích xuất HKDF.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh hoạt động của thao tác HKDF.
[in] aSalt
Con trỏ đến vị trí ngẫu nhiên để tìm HKDF.
[in] aSaltLength
Độ dài của muối.
[in] aInputKey
Con trỏ đến phím nhập.
Giá trị trả về
OT_ERROR_NONE
Trích xuất HKDF thành công.
OT_ERROR_FAILED
Không trích xuất được HKDF.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Khởi tạo ngữ cảnh HKDF.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HKDF.
Giá trị trả về
OT_ERROR_NONE
Đã khởi chạy thành công thao tác AES.
OT_ERROR_FAILED
Không khởi động được thao tác AES.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Huỷ khởi tạo thao tác HMAC.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HMAC.
Giá trị trả về
OT_ERROR_NONE
Đã huỷ khởi tạo thành công thao tác HMAC.
OT_ERROR_FAILED
Không thể chưa khởi chạy thao tác HMAC.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoHmacSha256Finish

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

Hoàn tất toán tử HMAC.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HMAC.
[out] aBuf
Con trỏ đến vùng đệm đầu ra.
[in] aBufLength
Độ dài của aBuf tính bằng byte.
Giá trị trả về
OT_ERROR_NONE
Đã hoàn tất thành công thao tác HMAC.
OT_ERROR_FAILED
Không hoàn tất được thao tác HMAC.
OT_ERROR_INVALID_ARGS
aContext hoặc aBuf là NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Khởi động thao tác HMAC.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HMAC.
Giá trị trả về
OT_ERROR_NONE
Đã khởi chạy thành công thao tác HMAC.
OT_ERROR_FAILED
Không khởi chạy được hoạt động HMAC.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoHmacSha256Start

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

Bắt đầu thao tác HMAC.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HMAC.
[in] aKey
Vật liệu chính dùng cho hoạt động HMAC.
Giá trị trả về
OT_ERROR_NONE
Đã bắt đầu thành công hoạt động HMAC.
OT_ERROR_FAILED
Không bắt đầu được hoạt động HMAC.
OT_ERROR_INVALID_ARGS
aContext hoặc aKey là NULL

otPlatCryptoHmacSha256Update

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

Cập nhật toán tử HMAC với giá trị đầu vào mới.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động HMAC.
[in] aBuf
Con trỏ đến vùng đệm nhập.
[in] aBufLength
Độ dài của aBuf tính bằng byte.
Giá trị trả về
OT_ERROR_NONE
Đã cập nhật thành công HMAC với thao tác nhập mới.
OT_ERROR_FAILED
Không cập nhật được hoạt động HMAC.
OT_ERROR_INVALID_ARGS
aContext hoặc aBuf là NULL

otPlatCryptoImportKey

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

Nhập khoá vào PSA ITS.

Nếu OT_CRYPTO_KEY_STORAGE_VOLATILE được truyền cho aKeyPersistence thì aKeyRef sẽ được xuất ra, thì giá trị ban đầu không quan trọng và API nền tảng PHẢI cập nhật giá trị này để trả về giá trị tham chiếu khoá mới.

Thông tin chi tiết
Thông số
[in,out] aKeyRef
Con trỏ đến tham chiếu khoá được dùng cho các hoạt động mã hoá.
[in] aKeyType
Mã hoá Loại khoá cho khoá.
[in] aKeyAlgorithm
Mã hoá thuật toán khoá cho khoá.
[in] aKeyUsage
Mã hoá sử dụng khoá cho khoá (các tổ hợp của OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Khả năng lưu trữ cố định của khoá này
[in] aKey
Khoá thực tế cần nhập.
[in] aKeyLen
Độ dài của khoá cần nhập.
Giá trị trả về
OT_ERROR_NONE
Đã nhập thành công khoá.
OT_ERROR_FAILED
Không nhập được khoá.
OT_ERROR_INVALID_ARGS
Đã đặt aKey thành NULL.

API này chỉ được lõi OT sử dụng khi OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE được bật.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Khởi động mô-đun 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
)

Thực hiện PKCS#5 PBKDF2 bằng CMAC (AES-CMAC-PRF-128).

Thông tin chi tiết
Thông số
[in] aPassword
Mật khẩu dùng khi tạo khoá.
[in] aPasswordLen
Độ dài của mật khẩu.
[in] aSalt
Dữ liệu ngẫu nhiên cần dùng khi tạo khoá.
[in] aSaltLen
Độ dài của muối.
[in] aIterationCounter
Số lần lặp lại.
[in] aKeyLen
Độ dài của khoá đã tạo tính bằng byte.
[out] aKey
Con trỏ đến khoá đã tạo.
Giá trị trả về
OT_ERROR_NONE
Một cặp khoá mới đã được tạo thành công.
OT_ERROR_NO_BUFS
Không phân bổ được vùng đệm để tạo khoá.
OT_ERROR_NOT_CAPABLE
Tính năng không được hỗ trợ.
OT_ERROR_FAILED
Không tạo được khoá.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Huỷ khởi tạo trình tạo số giả ngẫu nhiên được bảo mật bằng mật mã (CSPRNG).

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Lấp đầy vùng đệm nhất định bằng các byte ngẫu nhiên được bảo mật bằng mật mã.

Thông tin chi tiết
Thông số
[out] aBuffer
Con trỏ đến một vùng đệm để điền các byte ngẫu nhiên.
[in] aSize
Kích thước vùng đệm (số byte cần lấp đầy).
Giá trị trả về
OT_ERROR_NONE
Đã điền thành công vùng đệm bằng các giá trị ngẫu nhiên.
OT_ERROR_FAILED
Không thực hiện được thao tác này.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Khởi động trình tạo số giả ngẫu nhiên được bảo mật bằng mật mã (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Huỷ khởi động thao tác SHA-256.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động SHA-256.
Giá trị trả về
OT_ERROR_NONE
Huỷ khởi chạy thành công thao tác SHA-256.
OT_ERROR_FAILED
Không khởi chạy được thao tác SHA-256.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoSha256Finish

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

Hoàn tất thao tác SHA-256.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động SHA-256.
[in] aHash
Con trỏ đến vùng đệm đầu ra, nơi cần lưu trữ hàm băm.
[in] aHashSize
Độ dài của aHash tính bằng byte.
Giá trị trả về
OT_ERROR_NONE
Đã hoàn tất thành công thao tác SHA-256.
OT_ERROR_FAILED
Không hoàn tất được thao tác SHA-256.
OT_ERROR_INVALID_ARGS
aContext hoặc aHash là NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Khởi chạy thao tác SHA-256.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động SHA-256.
Giá trị trả về
OT_ERROR_NONE
Đã khởi chạy thành công thao tác SHA-256.
OT_ERROR_FAILED
Không khởi chạy được thao tác SHA-256.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Bắt đầu thao tác SHA-256.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động SHA-256.
Giá trị trả về
OT_ERROR_NONE
Đã bắt đầu thành công hoạt động SHA-256.
OT_ERROR_FAILED
Không bắt đầu thao tác SHA-256 được.
OT_ERROR_INVALID_ARGS
aContext là NULL

otPlatCryptoSha256Update

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

Cập nhật thao tác SHA-256 bằng dữ liệu đầu vào mới.

Thông tin chi tiết
Thông số
[in] aContext
Ngữ cảnh cho hoạt động SHA-256.
[in] aBuf
Con trỏ đến vùng đệm nhập.
[in] aBufLength
Độ dài của aBuf tính bằng byte.
Giá trị trả về
OT_ERROR_NONE
Đã cập nhật thành công SHA-256 bằng thao tác nhập mới.
OT_ERROR_FAILED
Không cập nhật được thao tác SHA-256.
OT_ERROR_INVALID_ARGS
aContext hoặc aBuf là NULL

Macro

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Dung lượng bộ nhớ đệm tối đa (tính bằng byte) để biểu thị cặp khoá EDCSA ở định dạng DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Dung lượng bộ nhớ đệm (tính bằng byte) để biểu thị khoá công khai EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Dung lượng bộ nhớ đệm (tính bằng byte) để biểu thị chữ ký EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Độ dài SALT PBKDF2 tối đa: tiền tố muối (6) + panid mở rộng (8) + tên mạng (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Độ dài của hàm băm SHA256 (tính bằng byte).

Tài nguyên

Các chủ đề tham khảo API OpenThread bắt nguồn từ mã nguồn, có trên GitHub. Để biết thêm thông tin hoặc để đóng góp cho tài liệu của chúng tôi, hãy tham khảo Tài nguyên.