Kripto - Platform

Modul ini mencakup abstraksi platform untuk Crypto.

Ringkasan

Enumerasi

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
Mendefinisikan tanda penggunaan kunci.
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
Mendefinisikan algoritma utama.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Menentukan jenis penyimpanan utama.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Menentukan jenis kunci.

Typedef

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Jenis data ini mewakili referensi utama.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Mewakili hash SHA-256.

Variabel

OT_TOOL_PACKED_END

Fungsi

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Mengenkripsi data yang diberikan.
otPlatCryptoAesFree(otCryptoContext *aContext)
Membebaskan konteks AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
Lakukan inisialisasi operasi AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Tetapkan kunci untuk operasi AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Menghancurkan kunci yang disimpan dalam PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Mendapatkan kunci publik terkait dari referensi kunci yang diteruskan.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Membuat dan mengimpor pasangan kunci ECDSA baru saat referensi diteruskan.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Membuat dan mengisi buffering output dengan pasangan kunci ECDSA baru.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Mendapatkan kunci publik terkait dari konteks input.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Hitung tanda tangan ECDSA untuk pesan yang di-hash menggunakan kunci pribadi dari konteks input.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Hitung tanda tangan ECDSA untuk pesan yang di-hash menggunakan Referensi kunci yang diteruskan.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Gunakan kunci dari konteks input untuk memverifikasi tanda tangan ECDSA dari pesan yang di-hash.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Gunakan keyref untuk memverifikasi tanda tangan ECDSA dari pesan yang di-hash.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Ekspor kunci yang disimpan di PSA ITS.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Periksa apakah referensi kunci yang diteruskan memiliki kunci terkait di PSA ITS.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Batalkan inisialisasi konteks HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Lakukan langkah Perluasan HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Lakukan langkah Ekstrak HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Lakukan inisialisasi konteks HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Batalkan inisialisasi operasi HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Selesaikan operasi HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Lakukan inisialisasi operasi HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Mulai operasi HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Perbarui operasi HMAC dengan input baru.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Impor kunci ke PSA ITS.
otPlatCryptoInit(void)
void
Menginisialisasi modul 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)
Lakukan PKCS#5 PBKDF2 menggunakan CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Melakukan deinisialisasi generator angka pseudorandom (CSPRNG) yang aman secara kriptografis.
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Mengisi buffering tertentu dengan byte acak yang aman secara kriptografis.
otPlatCryptoRandomInit(void)
void
Melakukan inisialisasi generator angka pseudorandom (CSPRNG) yang aman secara kriptografi.
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Batalkan inisialisasi operasi SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Menyelesaikan operasi SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Lakukan inisialisasi operasi SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
Mulai operasi SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Mengupdate operasi SHA-256 dengan input baru.

Struct

otCryptoContext

Menyimpan objek konteks untuk API platform.

otCryptoKey

Merepresentasikan Material Kunci yang diperlukan untuk operasi Kripto.

otPlatCryptoEcdsaKeyPair

Mewakili pasangan kunci ECDSA (kunci publik dan pribadi).

otPlatCryptoEcdsaPublicKey

Merepresentasikan kunci publik ECDSA.

otPlatCryptoEcdsaSignature

Mewakili tanda tangan ECDSA.

otPlatCryptoSha256Hash

Mewakili hash SHA-256.

Enumerasi

enum anonim

 anonymous enum

Mendefinisikan tanda penggunaan kunci.

Properti
OT_CRYPTO_KEY_USAGE_DECRYPT

Penggunaan Kunci: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Penggunaan Kunci: Enkripsi (ditentukan vendor).

OT_CRYPTO_KEY_USAGE_EXPORT

Penggunaan Kunci: Kunci dapat diekspor.

OT_CRYPTO_KEY_USAGE_NONE

Penggunaan Kunci: Penggunaan Kunci kosong.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Penggunaan Kunci: Hash Tanda Tangan.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Penggunaan Kunci: Verifikasi Hash.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Mendefinisikan algoritma utama.

Properti
OT_CRYPTO_KEY_ALG_AES_ECB

Algoritma Kunci: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Algoritma Kunci: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Algoritma Kunci: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Algoritma Kunci: Ditetapkan Vendor.

otCryptoKeyStorage

 otCryptoKeyStorage

Menentukan jenis penyimpanan utama.

Properti
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Persistensi Kunci: Kunci bersifat persisten.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Persistensi Kunci: Kunci tidak stabil.

otCryptoKeyType

 otCryptoKeyType

Menentukan jenis kunci.

Properti
OT_CRYPTO_KEY_TYPE_AES

Jenis Kunci: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Jenis Kunci: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Jenis Kunci: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Jenis Kunci: Data Mentah.

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Jenis data ini mewakili referensi utama.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Mewakili hash SHA-256.

Variabel

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Fungsi

otPlatCryptoAesEncrypt

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

Mengenkripsi data yang diberikan.

Detail
Parameter
[in] aContext
Konteks untuk operasi AES.
[in] aInput
Pointer ke buffering input.
[in] aOutput
Pointer ke buffering output.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengenkripsi aInput.
OT_ERROR_FAILED
Gagal mengenkripsi aInput.
OT_ERROR_INVALID_ARGS
aContext atau aKey atau aOutput adalah NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Membebaskan konteks AES.

Detail
Parameter
[in] aContext
Konteks untuk operasi AES.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membebaskan konteks AES.
OT_ERROR_FAILED
Gagal membebaskan konteks AES.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Lakukan inisialisasi operasi AES.

Detail
Parameter
[in] aContext
Konteks untuk operasi AES.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil Menginisialisasi operasi AES.
OT_ERROR_FAILED
Gagal Melakukan inisialisasi operasi AES.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL
OT_ERROR_NO_BUFS
Tidak dapat mengalokasikan konteks.

otPlatCryptoAesSetKey

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

Tetapkan kunci untuk operasi AES.

Detail
Parameter
[in] aContext
Konteks untuk operasi AES.
[out] aKey
Kunci yang digunakan untuk operasi AES.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyetel kunci untuk operasi AES.
OT_ERROR_FAILED
Gagal menyetel kunci untuk operasi AES.
OT_ERROR_INVALID_ARGS
aContext atau aKey adalah NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Menghancurkan kunci yang disimpan dalam PSA ITS.

Detail
Parameter
[in] aKeyRef
Ref kunci yang akan dihancurkan
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menghancurkan kunci.
OT_ERROR_FAILED
Gagal menghancurkan kunci.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Mendapatkan kunci publik terkait dari referensi kunci yang diteruskan.

Kunci publik disimpan secara berbeda, bergantung pada library backend kripto yang digunakan (OPENANCHOR_CONFIG_CRYPTO_LIB).

API ini harus memastikan untuk mengembalikan kunci publik sebagai representasi urutan byte dari titik kurva yang tidak dikompresi (RFC 6605 - detik 4)

Detail
Parameter
[in] aKeyRef
Referensi Kunci ke slot tempat pasangan kunci disimpan.
[out] aPublicKey
Penunjuk ke struktur kunci publik ECDSA untuk menyimpan kunci publik.
Nilai Pengembalian
OT_ERROR_NONE
Kunci publik berhasil diambil, dan aBuffer diperbarui.
OT_ERROR_PARSE
Format DER pasangan kunci tidak dapat diuraikan (format tidak valid).
OT_ERROR_INVALID_ARGS
aContext adalah NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Membuat dan mengimpor pasangan kunci ECDSA baru saat referensi diteruskan.

Detail
Parameter
[in] aKeyRef
Referensi Kunci ke slot tempat pasangan kunci disimpan.
Nilai Pengembalian
OT_ERROR_NONE
Pasangan kunci baru berhasil dibuat.
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk pembuatan kunci.
OT_ERROR_NOT_CAPABLE
Fitur tidak didukung.
OT_ERROR_FAILED
Gagal membuat pasangan kunci.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Membuat dan mengisi buffering output dengan pasangan kunci ECDSA baru.

Detail
Parameter
[out] aKeyPair
Pointer ke struktur pasangan kunci ECDSA untuk menyimpan pasangan kunci yang dihasilkan.
Nilai Pengembalian
OT_ERROR_NONE
Pasangan kunci baru berhasil dibuat.
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk pembuatan kunci.
OT_ERROR_NOT_CAPABLE
Fitur tidak didukung.
OT_ERROR_FAILED
Gagal membuat pasangan kunci.

otPlatCryptoEcdsaGetPublicKey

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

Mendapatkan kunci publik terkait dari konteks input.

Detail
Parameter
[in] aKeyPair
Pointer ke struktur pasangan kunci ECDSA tempat pasangan kunci disimpan.
[out] aPublicKey
Penunjuk ke struktur kunci publik ECDSA untuk menyimpan kunci publik.
Nilai Pengembalian
OT_ERROR_NONE
Kunci publik berhasil diambil, dan aBuffer diperbarui.
OT_ERROR_PARSE
Format DER pasangan kunci tidak dapat diuraikan (format tidak valid).
OT_ERROR_INVALID_ARGS
aContext adalah NULL.

otPlatCryptoEcdsaSign

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

Hitung tanda tangan ECDSA untuk pesan yang di-hash menggunakan kunci pribadi dari konteks input.

Menggunakan prosedur pembuatan tanda tangan digital deterministik dari RFC 6979.

Detail
Parameter
[in] aKeyPair
Pointer ke struktur pasangan kunci ECDSA tempat pasangan kunci disimpan.
[in] aHash
Pointer ke struktur hash SHA-256 tempat nilai hash untuk penghitungan tanda tangan disimpan.
[out] aSignature
Pointer ke struktur tanda tangan ECDSA untuk menghasilkan tanda tangan yang dihitung.
Nilai Pengembalian
OT_ERROR_NONE
Tanda tangan berhasil dihitung, aSignature diperbarui.
OT_ERROR_PARSE
Format DER pasangan kunci tidak dapat diuraikan (format tidak valid).
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk penghitungan tanda tangan.
OT_ERROR_INVALID_ARGS
aContext adalah NULL.

otPlatCryptoEcdsaSignUsingKeyRef

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

Hitung tanda tangan ECDSA untuk pesan yang di-hash menggunakan Referensi kunci yang diteruskan.

Menggunakan prosedur pembuatan tanda tangan digital deterministik dari RFC 6979.

Detail
Parameter
[in] aKeyRef
Referensi Kunci ke slot tempat pasangan kunci disimpan.
[in] aHash
Pointer ke struktur hash SHA-256 tempat nilai hash untuk penghitungan tanda tangan disimpan.
[out] aSignature
Pointer ke struktur tanda tangan ECDSA untuk menghasilkan tanda tangan yang dihitung.
Nilai Pengembalian
OT_ERROR_NONE
Tanda tangan berhasil dihitung, aSignature diperbarui.
OT_ERROR_PARSE
Format DER pasangan kunci tidak dapat diuraikan (format tidak valid).
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk penghitungan tanda tangan.
OT_ERROR_INVALID_ARGS
aContext adalah NULL.

otPlatCryptoEcdsaVerify

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

Gunakan kunci dari konteks input untuk memverifikasi tanda tangan ECDSA dari pesan yang di-hash.

Detail
Parameter
[in] aPublicKey
Penunjuk ke struktur kunci publik ECDSA tempat kunci publik untuk verifikasi tanda tangan disimpan.
[in] aHash
Pointer ke struktur hash SHA-256 tempat nilai hash untuk verifikasi tanda tangan disimpan.
[in] aSignature
Pointer ke struktur tanda tangan ECDSA tempat nilai tanda tangan yang akan diverifikasi disimpan.
Nilai Pengembalian
OT_ERROR_NONE
Tanda tangan berhasil diverifikasi.
OT_ERROR_SECURITY
Tanda tangan tidak valid.
OT_ERROR_INVALID_ARGS
Kunci atau hash tidak valid.
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk verifikasi tanda tangan.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

Gunakan keyref untuk memverifikasi tanda tangan ECDSA dari pesan yang di-hash.

Detail
Parameter
[in] aKeyRef
Referensi Kunci ke slot tempat pasangan kunci disimpan.
[in] aHash
Pointer ke struktur hash SHA-256 tempat nilai hash untuk verifikasi tanda tangan disimpan.
[in] aSignature
Pointer ke struktur tanda tangan ECDSA tempat nilai tanda tangan yang akan diverifikasi disimpan.
Nilai Pengembalian
OT_ERROR_NONE
Tanda tangan berhasil diverifikasi.
OT_ERROR_SECURITY
Tanda tangan tidak valid.
OT_ERROR_INVALID_ARGS
Kunci atau hash tidak valid.
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk verifikasi tanda tangan.

otPlatCryptoExportKey

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

Ekspor kunci yang disimpan di PSA ITS.

Detail
Parameter
[in] aKeyRef
Referensi kunci yang akan digunakan untuk operasi kripto.
[out] aBuffer
Pointer ke buffer tempat kunci perlu diekspor.
[in] aBufferLen
Panjang buffer yang diteruskan untuk menyimpan kunci yang diekspor.
[out] aKeyLen
Pointer untuk menampilkan panjang kunci yang diekspor.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengekspor aKeyRef.
OT_ERROR_FAILED
Gagal mengekspor aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer sebelumnya adalah NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Periksa apakah referensi kunci yang diteruskan memiliki kunci terkait di PSA ITS.

Detail
Parameter
[in] aKeyRef
Referensi Kunci untuk diperiksa.
Nilai Pengembalian
TRUE
Terdapat kunci yang terkait dengan aKeyRef.
FALSE
Tidak ada kunci yang terkait dengan aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Batalkan inisialisasi konteks HKDF.

Detail
Parameter
[in] aContext
Konteks untuk operasi HKDF.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membatalkan inisialisasi operasi HKDF.
OT_ERROR_FAILED
Gagal membatalkan inisialisasi operasi HKDF.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoHkdfExpand

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

Lakukan langkah Perluasan HKDF.

Detail
Parameter
[in] aContext
Konteks operasi untuk operasi HKDF.
[in] aInfo
Pointer ke urutan Info.
[in] aInfoLength
Panjang urutan Info.
[out] aOutputKey
Pointer ke Kunci output.
[in] aOutputKeyLength
Ukuran buffering kunci output.
Nilai Pengembalian
OT_ERROR_NONE
HKDF Expand berhasil.
OT_ERROR_FAILED
Perluasan HKDF gagal.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoHkdfExtract

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

Lakukan langkah Ekstrak HKDF.

Detail
Parameter
[in] aContext
Konteks operasi untuk operasi HKDF.
[in] aSalt
Pointer ke Salt untuk HKDF.
[in] aSaltLength
Durasi Garam.
[in] aInputKey
Pointer ke kunci input.
Nilai Pengembalian
OT_ERROR_NONE
Ekstrak HKDF berhasil.
OT_ERROR_FAILED
Ekstrak HKDF gagal.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Lakukan inisialisasi konteks HKDF.

Detail
Parameter
[in] aContext
Konteks untuk operasi HKDF.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil Menginisialisasi operasi AES.
OT_ERROR_FAILED
Gagal Melakukan inisialisasi operasi AES.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Batalkan inisialisasi operasi HMAC.

Detail
Parameter
[in] aContext
Konteks untuk operasi HMAC.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membatalkan inisialisasi operasi HMAC.
OT_ERROR_FAILED
Gagal membatalkan operasi HMAC yang diinisialisasi.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoHmacSha256Finish

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

Selesaikan operasi HMAC.

Detail
Parameter
[in] aContext
Konteks untuk operasi HMAC.
[out] aBuf
Pointer ke buffering output.
[in] aBufLength
Panjang aBuf dalam byte.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyelesaikan operasi HMAC.
OT_ERROR_FAILED
Gagal menyelesaikan operasi HMAC.
OT_ERROR_INVALID_ARGS
aContext atau aBuf adalah NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Lakukan inisialisasi operasi HMAC.

Detail
Parameter
[in] aContext
Konteks untuk operasi HMAC.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil melakukan inisialisasi operasi HMAC.
OT_ERROR_FAILED
Gagal menginisialisasi operasi HMAC.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoHmacSha256Start

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

Mulai operasi HMAC.

Detail
Parameter
[in] aContext
Konteks untuk operasi HMAC.
[in] aKey
Materi kunci yang akan digunakan untuk operasi HMAC.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil memulai operasi HMAC.
OT_ERROR_FAILED
Gagal memulai operasi HMAC.
OT_ERROR_INVALID_ARGS
aContext atau aKey adalah NULL

otPlatCryptoHmacSha256Update

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

Perbarui operasi HMAC dengan input baru.

Detail
Parameter
[in] aContext
Konteks untuk operasi HMAC.
[in] aBuf
Pointer ke buffering input.
[in] aBufLength
Panjang aBuf dalam byte.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil memperbarui HMAC dengan operasi input baru.
OT_ERROR_FAILED
Gagal memperbarui operasi HMAC.
OT_ERROR_INVALID_ARGS
aContext atau aBuf adalah NULL

otPlatCryptoImportKey

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

Impor kunci ke PSA ITS.

Jika OT_CRYPTO_KEY_STORAGE_VOLATILE diteruskan untuk aKeyPersistence, lalu aKeyRef adalah output, nilai awal tidak akan berpengaruh dan API platform HARUS mengupdatenya untuk menampilkan referensi kunci baru.

Detail
Parameter
[in,out] aKeyRef
Pointer ke referensi kunci yang akan digunakan untuk operasi kripto.
[in] aKeyType
Encoding Jenis Kunci untuk kunci.
[in] aKeyAlgorithm
Encoding algoritma kunci untuk kunci.
[in] aKeyUsage
Encoding Penggunaan Kunci untuk kunci (kombinasi OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistensi Kunci untuk kunci ini
[in] aKey
Kunci sebenarnya yang akan diimpor.
[in] aKeyLen
Panjang kunci yang akan diimpor.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengimpor kunci.
OT_ERROR_FAILED
Gagal mengimpor kunci.
OT_ERROR_INVALID_ARGS
aKey ditetapkan ke NULL.

API ini hanya digunakan oleh core OT saat OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE diaktifkan.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Menginisialisasi modul 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
)

Lakukan PKCS#5 PBKDF2 menggunakan CMAC (AES-CMAC-PRF-128).

Detail
Parameter
[in] aPassword
Sandi yang akan digunakan saat membuat kunci.
[in] aPasswordLen
Panjang sandi.
[in] aSalt
Salt yang akan digunakan saat membuat kunci.
[in] aSaltLen
Durasi garam.
[in] aIterationCounter
Jumlah iterasi.
[in] aKeyLen
Panjang kunci yang dihasilkan dalam byte.
[out] aKey
Pointer ke kunci yang dihasilkan.
Nilai Pengembalian
OT_ERROR_NONE
Pasangan kunci baru berhasil dibuat.
OT_ERROR_NO_BUFS
Gagal mengalokasikan buffer untuk pembuatan kunci.
OT_ERROR_NOT_CAPABLE
Fitur tidak didukung.
OT_ERROR_FAILED
Gagal membuat kunci.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Melakukan deinisialisasi generator angka pseudorandom (CSPRNG) yang aman secara kriptografis.

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Mengisi buffering tertentu dengan byte acak yang aman secara kriptografis.

Detail
Parameter
[out] aBuffer
Pointer ke buffer untuk diisi dengan byte acak.
[in] aSize
Ukuran buffer (jumlah byte yang akan diisi).
Nilai Pengembalian
OT_ERROR_NONE
Berhasil mengisi buffer dengan nilai acak.
OT_ERROR_FAILED
Operasi gagal.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Melakukan inisialisasi generator angka pseudorandom (CSPRNG) yang aman secara kriptografi.

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Batalkan inisialisasi operasi SHA-256.

Detail
Parameter
[in] aContext
Konteks untuk operasi SHA-256.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil membatalkan inisialisasi operasi SHA-256.
OT_ERROR_FAILED
Gagal membatalkan inisialisasi operasi SHA-256.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoSha256Finish

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

Menyelesaikan operasi SHA-256.

Detail
Parameter
[in] aContext
Konteks untuk operasi SHA-256.
[in] aHash
Pointer ke buffering output, tempat hash perlu disimpan.
[in] aHashSize
Panjang aHash dalam byte.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menyelesaikan operasi SHA-256.
OT_ERROR_FAILED
Gagal menyelesaikan operasi SHA-256.
OT_ERROR_INVALID_ARGS
aContext atau aHash adalah NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Lakukan inisialisasi operasi SHA-256.

Detail
Parameter
[in] aContext
Konteks untuk operasi SHA-256.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil menginisialisasi operasi SHA-256.
OT_ERROR_FAILED
Gagal menginisialisasi operasi SHA-256.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Mulai operasi SHA-256.

Detail
Parameter
[in] aContext
Konteks untuk operasi SHA-256.
Nilai Pengembalian
OT_ERROR_NONE
Berhasil memulai operasi SHA-256.
OT_ERROR_FAILED
Gagal memulai operasi SHA-256.
OT_ERROR_INVALID_ARGS
aContext sebelumnya adalah NULL

otPlatCryptoSha256Update

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

Mengupdate operasi SHA-256 dengan input baru.

Detail
Parameter
[in] aContext
Konteks untuk operasi SHA-256.
[in] aBuf
Pointer ke buffering input.
[in] aBufLength
Panjang aBuf dalam byte.
Nilai Pengembalian
OT_ERROR_NONE
SHA-256 berhasil diupdate dengan operasi input baru.
OT_ERROR_FAILED
Gagal mengupdate operasi SHA-256.
OT_ERROR_INVALID_ARGS
aContext atau aBuf adalah NULL

Makro

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Ukuran buffer maksimum (dalam byte) untuk menampilkan pasangan kunci EDCSA dalam format DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Ukuran buffer (dalam byte) untuk merepresentasikan kunci publik EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Ukuran buffer (dalam byte) untuk merepresentasikan tanda tangan EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Panjang Max PBKDF2 SALT: awalan garam (6) + panjang panid (8) + nama jaringan (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Panjang hash SHA256 (dalam byte).

Referensi

Topik Referensi OpenThread API berasal dari kode sumber yang tersedia di GitHub. Untuk informasi selengkapnya, atau untuk berkontribusi pada dokumentasi kami, lihat Referensi.