Referensi Struct keymaster1_device

Referensi Struct keymaster1_device

#include < keymaster1.h >

Kolom Data

struct hw_device_t   umum
 
uint32_t  client_version
 
uint32_t  flag
 
void *  context
 
int(*  generate_keypair )(const struct keymaster1_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)
 
int(*  import_keypair )(const struct keymaster1_device *dev, const uint8_t *key, const size_t key_length, uint8_t **key_blob, size_t *key_blob_length)
 
int(*  get_keypair_public )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)
 
int(*  delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
 
int(*  delete_all )(const struct keymaster1_device *dev)
 
int(*  sign_data )(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *data, const size_t data_length, uint8_t **signed_data, size_t *signed_data_length)
 
int(*  verify_data )(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *signed_data, const size_t signed_data_length, const uint8_t *signature, const size_t signature_length)
 
keymaster_error_t (*  get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length)
 
keymaster_error_t (*  get_supported_block_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_block_mode_t **modes, size_t *modes_length)
 
keymaster_error_t (*  get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_padding_t **modes, size_t *modes_length)
 
keymaster_error_t (*  get_supported_digests )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_digest_t **digests, size_t *digests_length)
 
keymaster_error_t (*  get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)
 
keymaster_error_t (*  get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)
 
keymaster_error_t (*  add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length)
 
keymaster_error_t (*  generate_key )(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **characteristics)
 
keymaster_error_t (*  get_key_characteristics )(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics_t **characteristics)
 
keymaster_error_t (*  import_key )(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_format_t key_format, const keymaster_blob_t *key_data, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **characteristics)
 
keymaster_error_t (*  export_key )(const struct keymaster1_device *dev, keymaster_key_format_t export_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_blob_t *export_data)
 
keymaster_error_t (*  delete_key )(const struct keymaster1_device *dev, const keymaster_key_blob_t *key)
 
keymaster_error_t (*  delete_all_keys )(const struct keymaster1_device *dev)
 
keymaster_error_t (*  begin )(const struct keymaster1_device *dev, keymaster_purpose_t purpose, const keymaster_key_blob_t *key, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_t *out_params, keymaster_operation_handle_t *operation_handle)
 
keymaster_error_t (*  update )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *input, size_t *input_consumed, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)
 
keymaster_error_t (*  finish )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *signature, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)
 
keymaster_error_t (*  abort )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)
 

Deskripsi Mendetail

Definisi perangkat Keymaster1

Definisi di baris 28 file keymaster1.h .

Dokumentasi Bidang

Membatalkan operasi kriptografi yang dimulai dengan begin() , membebaskan semua resource internal dan membatalkan operation_handle .

Definisi di baris 531 dari file keymaster1.h .

keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length)

Menambahkan entropi ke RNG yang digunakan oleh keymaster. Entropi yang ditambahkan melalui metode ini dijamin bukan satu-satunya sumber entropi yang digunakan, dan fungsi pencampuran harus aman, dalam arti bahwa jika RNG diberi seed (dari sumber mana pun) dengan data apa pun yang tidak dapat diprediksi (atau dikontrol) oleh penyerang, output RNG tidak dapat dibedakan dari acak. Jadi, jika entropi dari sumber mana pun bagus, output-nya akan bagus.

Parameter
[in] dev Struktur perangkat keymaster.
[in] data Data acak yang akan dicampur.
[in] data_length Panjang data .

Definisi di baris 242 dari file keymaster1.h .

Memulai operasi kriptografi menggunakan kunci yang ditentukan. Jika semuanya baik-baik saja, begin() akan menampilkan KM_ERROR_OK dan membuat handle operasi yang harus diteruskan ke panggilan berikutnya ke update() , finish() atau abort() .

Setiap panggilan ke begin() harus disambungkan dengan panggilan berikutnya ke finish() atau abort() , untuk memungkinkan implementasi keymaster membersihkan status operasi internal apa pun. Kegagalan untuk melakukannya dapat menyebabkan kebocoran ruang status internal atau resource internal lainnya dan pada akhirnya dapat menyebabkan begin() menampilkan KM_ERROR_TOO_MANY_OPERATIONS saat kehabisan ruang untuk operasi. Hasil apa pun selain KM_ERROR_OK dari begin() , update() atau finish() secara implisit akan membatalkan operasi, dalam hal ini abort() tidak perlu dipanggil (dan akan menampilkan KM_ERROR_INVALID_OPERATION_HANDLE jika dipanggil).

Parameter
[in] dev Struktur perangkat keymaster.
[in] tujuan Tujuan operasi, salah satu dari KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN, atau KM_PURPOSE_VERIFY. Perhatikan bahwa untuk mode AEAD, enkripsi dan dekripsi masing-masing menyiratkan penandatanganan dan verifikasi, tetapi harus ditentukan sebagai KM_PURPOSE_ENCRYPT dan KM_PURPOSE_DECRYPT.
[in] key Kunci yang akan digunakan untuk operasi. key harus memiliki tujuan yang kompatibel dengan purpose dan semua persyaratan penggunaannya harus terpenuhi, atau begin() akan menampilkan kode error yang sesuai.
[in] in_params Parameter tambahan untuk operasi. Ini biasanya digunakan untuk memberikan data autentikasi, dengan KM_TAG_AUTH_TOKEN. Jika KM_TAG_APPLICATION_ID atau KM_TAG_APPLICATION_DATA diberikan selama pembuatan, keduanya harus diberikan di sini, atau operasi akan gagal dengan KM_ERROR_INVALID_KEY_BLOB. Untuk operasi yang memerlukan nonce atau IV, pada kunci yang dibuat dengan KM_TAG_CALLER_NONCE, in_params dapat berisi tag KM_TAG_NONCE. Untuk operasi AEAD, KM_TAG_CHUNK_SIZE ditentukan di sini.
[out] out_params Parameter output. Digunakan untuk menampilkan data tambahan dari inisialisasi operasi, terutama untuk menampilkan IV atau nonce dari operasi yang menghasilkan IV atau nonce. Pemanggil mengambil kepemilikan array parameter output dan harus membebaskannya dengan keymaster_free_param_set() . out_params dapat disetel ke NULL jika tidak ada parameter output yang diharapkan. Jika out_params adalah NULL, dan parameter output dihasilkan, begin() akan menampilkan KM_ERROR_OUTPUT_PARAMETER_NULL.
[out] operation_handle Handle operasi yang baru dibuat yang harus diteruskan ke update() , finish() atau abort() . Jika operation_handle adalah NULL, begin() akan menampilkan KM_ERROR_OUTPUT_PARAMETER_NULL.

Definisi di baris 451 dari file keymaster1.h .

uint32_t client_version

INI TIDAK DIGUNAKAN LAGI. Sebagai gantinya, gunakan kolom "module_api_version" dan "hal_api_version" baru dalam inisialisasi keymaster_module.

Definisi di baris 41 dari file keymaster1.h .

struct hw_device_t umum

Metode umum perangkat keymaster. Ini harus menjadi anggota pertama keymaster_device karena pengguna struktur ini akan mentransmisikan hw_device_t ke pointer keymaster_device dalam konteks yang diketahui bahwa hw_device_t mereferensikan keymaster_device.

Definisi di baris 35 dari file keymaster1.h .

konteks void*

Definisi di baris 48 dari file keymaster1.h .

int(* delete_all)(const struct keymaster1_device *dev)
Tidak digunakan lagi:
Menghapus semua kunci di keystore hardware. Digunakan saat keystore direset sepenuhnya.

Fungsi ini bersifat opsional dan harus ditetapkan ke NULL jika tidak diterapkan.

Menampilkan 0 jika berhasil atau kode error kurang dari 0.

Definisi di baris 100 dari file keymaster1.h .

keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev)

Menghapus semua kunci di keystore hardware. Digunakan saat keystore direset sepenuhnya. Setelah memanggil fungsi ini, Anda tidak akan dapat menggunakan blob kunci yang dibuat atau diimpor sebelumnya untuk operasi apa pun.

Fungsi ini bersifat opsional dan harus ditetapkan ke NULL jika tidak diterapkan.

Parameter
[in] dev Struktur perangkat keymaster.

Definisi di baris 407 dari file keymaster1.h .

keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key)

Menghapus kunci, atau pasangan kunci, yang terkait dengan blob kunci. Setelah memanggil fungsi ini, kunci tidak dapat digunakan untuk operasi lain. Dapat diterapkan ke kunci dari root kepercayaan asing (kunci tidak dapat digunakan berdasarkan root kepercayaan saat ini).

Fungsi ini bersifat opsional dan harus ditetapkan ke NULL jika tidak diterapkan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] key Kunci yang akan dihapus.

Definisi di baris 395 dari file keymaster1.h .

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
Tidak digunakan lagi:
Menghapus pasangan kunci yang terkait dengan blob kunci.

Fungsi ini bersifat opsional dan harus ditetapkan ke NULL jika tidak diterapkan.

Menampilkan 0 jika berhasil atau kode error kurang dari 0.

Definisi di baris 88 dari file keymaster1.h .

keymaster_error_t (* export_key)(const struct keymaster1_device *dev, keymaster_key_format_t export_format, const keymaster_key_blob_t *key_to_export, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_blob_t *export_data)

Mengekspor kunci publik, yang menampilkan array byte dalam format yang ditentukan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] export_format Format yang akan digunakan untuk mengekspor kunci.
[in] key_to_export Kunci yang akan diekspor.
[out] export_data Materi kunci yang diekspor. Pemanggil akan mengambil alih kepemilikan.
[out] export_data_length Panjang export_data .

Definisi di baris 377 dari file keymaster1.h .

Menyelesaikan operasi kriptografis yang dimulai dengan begin() dan membatalkan operation_handle .

Parameter
[in] dev Struktur perangkat keymaster.
[in] operation_handle Handle operasi yang ditampilkan oleh begin() . Nama sebutan channel ini akan dibatalkan validasinya.
[in] params Parameter tambahan untuk operasi. Untuk mode AEAD, ini digunakan untuk menentukan KM_TAG_ADDITIONAL_DATA, tetapi hanya jika tidak ada data input yang diberikan ke update() .
[in] tanda tangan Tanda tangan yang akan diverifikasi jika tujuan yang ditentukan dalam panggilan begin() adalah KM_PURPOSE_VERIFY.
[out] output Data output, jika ada. Pemanggil mengasumsikan kepemilikan buffer yang dialokasikan.

Jika operasi yang sedang diselesaikan adalah verifikasi tanda tangan atau dekripsi mode AEAD dan verifikasi gagal, finish() akan menampilkan KM_ERROR_VERIFICATION_FAILED.

Definisi di baris 521 dari file keymaster1.h .

Flag uint32_t

Lihat flag yang ditentukan untuk keymaster0_devices::flags di keymaster_common.h

Definisi di baris 46 dari file keymaster1.h .

Menghasilkan kunci, atau pasangan kunci, yang menampilkan blob kunci dan/atau deskripsi kunci.

Parameter pembuatan kunci ditentukan sebagai pasangan nilai/tag keymaster, yang disediakan di params . Lihat keymaster_tag_t untuk mengetahui daftar lengkapnya. Beberapa nilai yang selalu diperlukan untuk pembuatan kunci yang berguna adalah:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; dan
  • (KM_TAG_USER_SECURE_ID dan KM_TAG_USER_AUTH_TYPE) atau KM_TAG_NO_AUTH_REQUIRED.

KM_TAG_AUTH_TIMEOUT umumnya harus ditentukan kecuali jika KM_TAG_NO_AUTH_REQUIRED ada, atau pengguna harus mengautentikasi untuk setiap penggunaan.

KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH, dan KM_TAG_DIGEST harus ditentukan untuk algoritma yang memerlukannya.

Tag berikut tidak boleh ditentukan; nilainya akan diberikan oleh implementasi.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parameter
[in] dev Struktur perangkat keymaster.
[in] params Array parameter pembuatan kunci.
[in] params_count Panjang params .
[out] key_blob menampilkan kunci yang dihasilkan. key_blob tidak boleh NULL. Pemanggil mengasumsikan kepemilikan key_blob->key_material dan harus membebaskannya.
[out] karakteristik menampilkan karakteristik kunci yang dihasilkan, jika bukan NULL. Jika bukan NULL, pemanggil akan menganggap kepemilikan dan harus mengalokasikan ulang dengan keymaster_free_characteristics() . Perhatikan bahwa KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID, dan KM_TAG_APPLICATION_DATA tidak pernah ditampilkan.

Definisi di baris 282 dari file keymaster1.h .

int(* generate_keypair)(const struct keymaster1_device *dev, const keymaster_keypair_t key_type, const void *key_params, uint8_t **key_blob, size_t *key_blob_length)
Tidak digunakan lagi:
Menghasilkan kunci publik dan pribadi. Blob kunci yang ditampilkan bersifat buram dan selanjutnya harus disediakan untuk penandatanganan dan verifikasi.

Menampilkan: 0 jika berhasil atau kode error kurang dari 0.

Definisi di baris 56 dari file keymaster1.h .

keymaster_error_t (* get_key_characteristics)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key_blob, const keymaster_blob_t *client_id, const keymaster_blob_t *app_data, keymaster_key_characteristics_t **characteristics)

Menampilkan karakteristik kunci yang ditentukan, atau KM_ERROR_INVALID_KEY_BLOB jika key_blob tidak valid (implementasi harus memvalidasi integritas kunci sepenuhnya). client_id dan app_data harus berupa ID dan data yang diberikan saat kunci dibuat atau diimpor, atau kosong jika KM_TAG_APPLICATION_ID dan/atau KM_TAG_APPLICATION_DATA tidak diberikan selama pembuatan. Nilai tersebut tidak disertakan dalam karakteristik yang ditampilkan. Pemanggil mengasumsikan kepemilikan objek karakteristik yang dialokasikan, yang harus dide-alokasikan dengan keymaster_free_characteristics() .

Perhatikan bahwa KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID, dan KM_TAG_APPLICATION_DATA tidak pernah ditampilkan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] key_blob Kunci untuk mengambil karakteristik.
[in] client_id Data client ID, atau NULL jika tidak ada yang terkait.
[in] app_id Data aplikasi, atau NULL jika tidak ada yang terkait.
[out] karakteristik Karakteristik utamanya.

Definisi di baris 309 dari file keymaster1.h .

int(* get_keypair_public)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length, uint8_t **x509_data, size_t *x509_data_length)
Tidak digunakan lagi:
Mendapatkan bagian kunci publik dari pasangan kunci. Kunci publik harus dalam array byte yang dienkode dalam format X.509 (standar Java).

Menampilkan: 0 jika berhasil atau kode error kurang dari 0. Jika terjadi error, x509_data tidak boleh dialokasikan.

Definisi di baris 76 dari file keymaster1.h .

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length)

Mendapatkan algoritma yang didukung.

Parameter
[in] dev Struktur perangkat keymaster.
[out] algoritma Array algoritma yang didukung. Pemanggil mengambil kepemilikan array dan harus membebaskannya.
[out] algorithms_length Panjang algorithms .

Definisi di baris 133 dari file keymaster1.h .

keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_block_mode_t **modes, size_t *modes_length)

Mendapatkan mode blok yang didukung untuk algoritma yang ditentukan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] algoritme Algoritma yang mode yang didukungnya akan ditampilkan.
[out] mode Array mode yang didukung. Pemanggil mengambil kepemilikan array dan harus membebaskannya.
[out] modes_length Panjang modes .

Definisi di baris 149 dari file keymaster1.h .

keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_digest_t **digests, size_t *digests_length)

Mendapatkan ringkasan yang didukung untuk algoritma yang ditentukan. Pemanggil mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] algoritme Algoritma yang ringkasannya didukung akan ditampilkan.
[out] ringkasan Array ringkasan yang didukung. Pemanggil mengambil kepemilikan array dan harus membebaskannya.
[out] digests_length Panjang digests .

Definisi di baris 187 dari file keymaster1.h .

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)

Mendapatkan format ekspor kunci yang didukung untuk kunci algoritma yang ditentukan. Pemanggil mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] algoritme Algoritma yang format yang didukungnya akan ditampilkan.
[out] format Array format yang didukung. Pemanggil mengambil kepemilikan array dan harus membebaskannya.
[out] formats_length Panjang formats .

Definisi pada baris 224 dari file keymaster1.h .

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_key_format_t **formats, size_t *formats_length)

Mendapatkan format impor kunci yang didukung untuk kunci algoritma yang ditentukan. Pemanggil mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] algoritme Algoritma yang format yang didukungnya akan ditampilkan.
[out] format Array format yang didukung. Pemanggil mengambil kepemilikan array dan harus membebaskannya.
[out] formats_length Panjang formats .

Definisi di baris 206 dari file keymaster1.h .

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t purpose, keymaster_padding_t **modes, size_t *modes_length)

Mendapatkan mode padding yang didukung untuk algoritma yang ditentukan. Pemanggil mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[in] dev Struktur perangkat keymaster.
[in] algoritme Algoritma yang mode padding-nya didukung akan ditampilkan.
[out] mode Array mode padding yang didukung. Pemanggil mengambil kepemilikan array dan harus membebaskannya.
[out] modes_length Panjang modes .

Definisi di baris 168 dari file keymaster1.h .

Mengimpor kunci, atau pasangan kunci, yang menampilkan blob kunci dan/atau deskripsi kunci.

Sebagian besar parameter impor kunci ditentukan sebagai pasangan tag/nilai keymaster, yang disediakan di "params". Lihat keymaster_tag_t untuk mengetahui daftar lengkapnya. Nilai yang selalu diperlukan untuk mengimpor kunci yang berguna adalah:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; dan
  • (KM_TAG_USER_SECURE_ID dan KM_TAG_USER_AUTH_TYPE) atau KM_TAG_NO_AUTH_REQUIRED.

KM_TAG_AUTH_TIMEOUT umumnya harus ditentukan. Jika tidak ditentukan, pengguna harus melakukan autentikasi untuk setiap penggunaan.

Tag berikut akan menggunakan nilai default jika tidak ditentukan:

  • KM_TAG_KEY_SIZE akan ditetapkan secara default ke ukuran kunci yang diberikan.
  • KM_TAG_RSA_PUBLIC_EXPONENT akan ditetapkan secara default ke nilai dalam kunci yang diberikan (untuk kunci RSA)

Tag berikut tidak boleh ditentukan; nilainya akan diberikan oleh implementasi.

  • KM_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parameter
[in] dev Struktur perangkat keymaster.
[in] params Parameter yang menentukan kunci yang diimpor.
[in] params_count Jumlah entri dalam params .
[in] key_format menentukan format data kunci di key_data.
[out] key_blob Digunakan untuk menampilkan blob kunci buram. Harus non-NULL. Pemanggil mengasumsikan kepemilikan key_material yang ada.
[out] karakteristik Digunakan untuk menampilkan karakteristik kunci yang diimpor. Dapat berupa NULL, dalam hal ini tidak ada karakteristik yang akan ditampilkan. Jika bukan NULL, pemanggil akan menganggap kepemilikan dan harus mengalokasikan ulang dengan keymaster_free_characteristics() . Perhatikan bahwa KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID, dan KM_TAG_APPLICATION_DATA tidak pernah ditampilkan.

Definisi di baris 357 dari file keymaster1.h .

int(* import_keypair)(const struct keymaster1_device *dev, const uint8_t *key, const size_t key_length, uint8_t **key_blob, size_t *key_blob_length)
Tidak digunakan lagi:
Mengimpor pasangan kunci publik dan pribadi. Kunci yang diimpor akan dalam format PKCS#8 dengan encoding DER (standar Java). Blob kunci yang ditampilkan bersifat buram dan selanjutnya akan disediakan untuk penandatanganan dan verifikasi.

Menampilkan: 0 jika berhasil atau kode error kurang dari 0.

Definisi di baris 66 dari file keymaster1.h .

int(* sign_data)(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *data, const size_t data_length, uint8_t **signed_data, size_t *signed_data_length)
Tidak digunakan lagi:
Menandatangani data menggunakan blob kunci yang dibuat sebelumnya. Ini dapat menggunakan kunci asimetris atau kunci rahasia.

Menampilkan: 0 jika berhasil atau kode error kurang dari 0.

Definisi di baris 108 dari file keymaster1.h .

keymaster_error_t (* update)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *input, size_t *input_consumed, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)

Memberikan data ke, dan mungkin menerima output dari, operasi kriptografis yang sedang berlangsung yang dimulai dengan begin() .

Jika operation_handle tidak valid, update() akan menampilkan KM_ERROR_INVALID_OPERATION_HANDLE.

update() mungkin tidak menggunakan semua data yang disediakan dalam buffer data. update() akan menampilkan jumlah yang digunakan di *data_consumed. Pemanggil harus memberikan data yang tidak digunakan dalam panggilan berikutnya.

Parameter
[in] dev Struktur perangkat keymaster.
[in] operation_handle Handle operasi yang ditampilkan oleh begin() .
[in] in_params Parameter tambahan untuk operasi. Untuk mode AEAD, ini digunakan untuk menentukan KM_TAG_ADDITIONAL_DATA. Perhatikan bahwa data tambahan dapat diberikan dalam beberapa panggilan ke update() , tetapi hanya sampai data input telah diberikan.
[in] input Data yang akan diproses, sesuai dengan parameter yang ditetapkan dalam panggilan ke begin() . Perhatikan bahwa update() mungkin menggunakan atau tidak menggunakan semua data yang disediakan. Lihat input_consumed .
[out] input_consumed Jumlah data yang digunakan oleh update() . Jika kurang dari jumlah yang diberikan, pemanggil harus memberikan sisanya dalam panggilan berikutnya ke update() .
[out] out_params Parameter output. Digunakan untuk menampilkan data tambahan dari operasi Pemanggil mengambil kepemilikan array parameter output dan harus membebaskannya dengan keymaster_free_param_set() . out_params dapat disetel ke NULL jika tidak ada parameter output yang diharapkan. Jika out_params adalah NULL, dan parameter output dihasilkan, begin() akan menampilkan KM_ERROR_OUTPUT_PARAMETER_NULL.
[out] output Data output, jika ada. Pemanggil mengasumsikan kepemilikan buffer yang dialokasikan. output tidak boleh NULL.

Perhatikan bahwa update() mungkin tidak memberikan output apa pun, dalam hal ini output->data_length akan nol, dan output->data dapat berupa NULL atau panjang nol (sehingga pemanggil harus selalu membebaskannya).

Definisi di baris 495 dari file keymaster1.h .

int(* verify_data)(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t key_blob_length, const uint8_t *signed_data, const size_t signed_data_length, const uint8_t *signature, const size_t signature_length)
Tidak digunakan lagi:
Memverifikasi data yang ditandatangani dengan blob kunci. Ini dapat menggunakan kunci asimetris atau kunci rahasia.

Menampilkan: 0 jika verifikasi berhasil atau kode error kurang dari 0.

Definisi di baris 118 dari file keymaster1.h .


Dokumentasi untuk struct ini dibuat dari file berikut: