Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Referensi Struktur keymaster1_device

Referensi Struktur keymaster1_device

#include < keymaster1.h >

Bidang Data

struktur hw_device_t umum
uint32_t versi_klien
uint32_t bendera
ruang kosong * konteks
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(* verifikasi_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_tsigned_data_length, const uint8_t *signature_size)
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, algoritma keymaster_algorithm_t , tujuan keymaster_purpose_t , keymaster_block_mode_t **mode, size_t *modes_length)
keymaster_error_t (* get_supported_padding_modes )(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , tujuan keymaster_purpose_t , keymaster_padding_t **mode, size_t *modes_length)
keymaster_error_t (* get_supported_digests )(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , tujuan keymaster_purpose_t , keymaster_digest_t **intisari, size_t *digests_length)
keymaster_error_t (* get_supported_import_formats )(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , keymaster_key_format_t **format, size_t *formats_length)
keymaster_error_t (* get_supported_export_formats )(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , keymaster_key_format_t **format, 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 **karakteristik)
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 **karakteristik)
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 **karakteristik)
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 (* mulai )(const struct keymaster1_device *dev, tujuan keymaster_purpose_t , 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
keymaster_error_t (* selesai )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *tanda tangan, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)
keymaster_error_t (* batalkan )(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)

Detil Deskripsi

Definisi perangkat Keymaster1

Definisi pada baris 28 dari file keymaster1.h .

Dokumentasi Lapangan

keymaster_error_t (* batalkan)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle)

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

Definisi pada 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 tidak menjadi satu-satunya sumber entropi yang digunakan, dan fungsi pencampuran diperlukan untuk mengamankan, dalam arti jika RNG diunggulkan (dari sumber mana pun) dengan data apa pun yang tidak dapat diprediksi oleh penyerang (atau kontrol), maka keluaran RNG tidak dapat dibedakan dari acak. Jadi, jika entropi dari sumber mana pun baik, outputnya akan baik.

Parameter
[di] dev Struktur perangkat keymaster.
[di] data Data acak untuk dicampur.
[di] data_panjang Panjang data .

Definisi pada baris 242 dari file keymaster1.h .

keymaster_error_t (* begin)(const struct keymaster1_device *dev, tujuan keymaster_purpose_t , 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

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

Sangat penting bahwa setiap panggilan ke begin() dipasangkan dengan panggilan berikutnya ke finish() atau abort() , untuk memungkinkan implementasi keymaster membersihkan semua status operasi internal. Kegagalan untuk melakukan ini dapat membocorkan ruang keadaan internal atau sumber daya internal lainnya dan pada akhirnya dapat menyebabkan begin() mengembalikan KM_ERROR_TOO_MANY_OPERATIONS ketika kehabisan ruang untuk operasi. Hasil apa pun selain KM_ERROR_OK dari begin() , update() atau finish() secara implisit membatalkan operasi, dalam hal ini abort() tidak perlu dipanggil (dan akan mengembalikan KM_ERROR_INVALID_OPERATION_HANDLE jika dipanggil).

Parameter
[di] dev Struktur perangkat keymaster.
[di] tujuan Tujuan operasi, salah satu KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN atau KM_PURPOSE_VERIFY. Perhatikan bahwa untuk mode AEAD, enkripsi dan dekripsi menyiratkan penandatanganan dan verifikasi, masing-masing, tetapi harus ditetapkan sebagai KM_PURPOSE_ENCRYPT dan KM_PURPOSE_DECRYPT.
[di] kunci Kunci yang akan digunakan untuk operasi. key harus memiliki tujuan yang sesuai dengan purpose dan semua persyaratan penggunaannya harus dipenuhi, atau begin() akan mengembalikan kode kesalahan yang sesuai.
[di] in_params Parameter tambahan untuk operasi. Ini biasanya digunakan untuk menyediakan data autentikasi, dengan KM_TAG_AUTH_TOKEN. Jika KM_TAG_APPLICATION_ID atau KM_TAG_APPLICATION_DATA diberikan selama pembuatan, mereka harus disediakan 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.
[keluar] out_params Parameter keluaran. Digunakan untuk mengembalikan data tambahan dari inisialisasi operasi, terutama untuk mengembalikan IV atau nonce dari operasi yang menghasilkan IV atau nonce. Penelepon mengambil kepemilikan larik parameter keluaran dan harus membebaskannya dengan keymaster_free_param_set() . out_params dapat disetel ke NULL jika tidak ada parameter keluaran yang diharapkan. Jika out_params adalah NULL, dan parameter keluaran dihasilkan, begin() akan mengembalikan KM_ERROR_OUTPUT_PARAMETER_NULL.
[keluar] operasi_handle Pegangan operasi yang baru dibuat yang harus diteruskan ke update() , finish() atau abort() . Jika operation_handle adalah NULL, begin() akan mengembalikan KM_ERROR_OUTPUT_PARAMETER_NULL.

Definisi pada baris 451 dari file keymaster1.h .

uint32_t client_version

INI DIHAPUS. Gunakan bidang "module_api_version" dan "hal_api_version" baru di inisialisasi keymaster_module.

Definisi pada baris 41 dari file keymaster1.h .

struct hw_device_t umum

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

Definisi pada baris 35 dari file keymaster1.h .

konteks batal*

Definisi pada baris 48 dari file keymaster1.h .

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

Fungsi ini opsional dan harus disetel ke NULL jika tidak diterapkan.

Mengembalikan 0 jika berhasil atau kode kesalahan kurang dari 0.

Definisi pada baris 100 dari file keymaster1.h .

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

Menghapus semua kunci di keystore perangkat keras. Digunakan saat keystore direset sepenuhnya. Setelah memanggil fungsi ini, tidak mungkin menggunakan gumpalan kunci yang dibuat atau diimpor sebelumnya untuk operasi apa pun.

Fungsi ini opsional dan harus disetel ke NULL jika tidak diterapkan.

Parameter
[di] dev Struktur perangkat keymaster.

Definisi pada 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 gumpalan kunci. Setelah memanggil fungsi ini, tidak mungkin menggunakan kunci untuk operasi lain. Dapat diterapkan ke kunci dari akar kepercayaan asing (kunci tidak dapat digunakan di bawah akar kepercayaan saat ini).

Fungsi ini opsional dan harus disetel ke NULL jika tidak diterapkan.

Parameter
[di] dev Struktur perangkat keymaster.
[di] kunci Kunci yang akan dihapus.

Definisi pada 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 gumpalan kunci.

Fungsi ini opsional dan harus disetel ke NULL jika tidak diterapkan.

Mengembalikan 0 jika berhasil atau kode kesalahan kurang dari 0.

Definisi pada 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 *ekspor)

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

Parameter
[di] dev Struktur perangkat keymaster.
[di] ekspor_format Format yang akan digunakan untuk mengekspor kunci.
[di] key_to_ekspor Kunci untuk mengekspor.
[keluar] ekspor_data Bahan kunci yang diekspor. Penelepon mengambil alih kepemilikan.
[keluar] ekspor_data_panjang Panjang export_data .

Definisi pada baris 377 dari file keymaster1.h .

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 *tanda tangan, keymaster_key_param_set_t *out_params, keymaster_blob_t *output)

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

Parameter
[di] dev Struktur perangkat keymaster.
[di] operasi_handle Pegangan operasi dikembalikan oleh begin() . Pegangan ini akan dibatalkan.
[di] 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() .
[di] tanda tangan Tanda tangan yang akan diverifikasi jika tujuan yang ditentukan dalam panggilan begin() adalah KM_PURPOSE_VERIFY.
[keluar] keluaran Data keluaran, jika ada. Penelepon mengasumsikan kepemilikan buffer yang dialokasikan.

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

Definisi pada baris 521 dari file keymaster1.h .

bendera uint32_t

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

Definisi pada baris 46 dari file keymaster1.h .

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 **karakteristik)

Menghasilkan kunci, atau pasangan kunci, mengembalikan gumpalan kunci dan/atau deskripsi kunci.

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

  • KM_TAG_ALGORITHM;
  • KM_TAG_TUJUAN; 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 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 algoritme yang memerlukannya.

Tag berikut mungkin tidak ditentukan; nilai-nilai mereka akan diberikan oleh implementasi.

  • KM_TAG_ASAL,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parameter
[di] dev Struktur perangkat keymaster.
[di] params Array parameter pembuatan kunci.
[di] params_count Panjang params .
[keluar] key_blob mengembalikan kunci yang dihasilkan. key_blob tidak boleh NULL. Penelepon mengasumsikan kepemilikan key_blob->key_material dan harus membebaskan() itu.
[keluar] karakteristik mengembalikan karakteristik kunci yang dihasilkan, jika bukan NULL. Jika non-NULL, pemanggil mengasumsikan kepemilikan dan harus membatalkan alokasi dengan keymaster_free_characteristics() . Perhatikan bahwa KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID, dan KM_TAG_APPLICATION_DATA tidak pernah dikembalikan.

Definisi pada 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. Gumpalan kunci yang dikembalikan buram dan selanjutnya harus disediakan untuk ditandatangani dan diverifikasi.

Pengembalian: 0 jika berhasil atau kode kesalahan kurang dari 0.

Definisi pada 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 ) **karakteristik

Mengembalikan karakteristik kunci yang ditentukan, atau KM_ERROR_INVALID_KEY_BLOB jika key_blob tidak valid (implementasi harus sepenuhnya memvalidasi integritas kunci). 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 termasuk dalam karakteristik yang dikembalikan. Pemanggil mengasumsikan kepemilikan objek karakteristik yang dialokasikan, yang harus dialokasikan dengan keymaster_free_characteristics() .

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

Parameter
[di] dev Struktur perangkat keymaster.
[di] key_blob Kunci untuk mengambil karakteristik dari.
[di] client_id Data ID klien, atau NULL jika tidak ada yang terkait.
[di] app_id Data aplikasi, atau NULL jika tidak ada yang terkait.
[keluar] karakteristik Karakteristik kunci.

Definisi pada 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 format X.509 (standar Java) array byte yang disandikan.

Pengembalian: 0 pada keberhasilan atau kode kesalahan kurang dari 0. Pada kesalahan, x509_data tidak boleh dialokasikan.

Definisi pada 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)

Mendapat algoritma yang didukung.

Parameter
[di] dev Struktur perangkat keymaster.
[keluar] algoritma Array algoritma yang didukung. Penelepon mengambil kepemilikan array dan harus membebaskan () itu.
[keluar] algoritma_panjang Panjang algorithms .

Definisi pada baris 133 dari file keymaster1.h .

keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , tujuan keymaster_purpose_t , keymaster_block_mode_t **mode, size_t *modes_length)

Mendapat mode blok yang didukung untuk algoritma yang ditentukan.

Parameter
[di] dev Struktur perangkat keymaster.
[di] algoritma Algoritme yang mode yang didukungnya akan dikembalikan.
[keluar] mode Array mode yang didukung. Penelepon mengambil kepemilikan array dan harus membebaskan () itu.
[keluar] mode_panjang Panjang modes .

Definisi pada baris 149 dari file keymaster1.h .

keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, algoritme keymaster_algorithm_t , tujuan keymaster_purpose_t , keymaster_digest_t **digest, size_t *digests_length)

Mendapat intisari yang didukung untuk algoritme yang ditentukan. Penelepon mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[di] dev Struktur perangkat keymaster.
[di] algoritma Algoritme yang intisarinya didukung akan dikembalikan.
[keluar] mencerna Array intisari didukung. Penelepon mengambil kepemilikan array dan harus membebaskan () itu.
[keluar] intisari_panjang Panjang digests .

Definisi pada baris 187 dari file keymaster1.h .

keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , keymaster_key_format_t **format, size_t *formats_length)

Mendapatkan format ekspor kunci yang didukung untuk kunci dari algoritme yang ditentukan. Penelepon mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[di] dev Struktur perangkat keymaster.
[di] algoritma Algoritme yang format yang didukungnya akan dikembalikan.
[keluar] format Array format yang didukung. Penelepon mengambil kepemilikan array dan harus membebaskan () itu.
[keluar] format_panjang Panjang formats .

Definisi pada baris 224 dari file keymaster1.h .

keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , keymaster_key_format_t **format, size_t *formats_length)

Mendapatkan format impor kunci yang didukung untuk kunci dari algoritme yang ditentukan. Penelepon mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[di] dev Struktur perangkat keymaster.
[di] algoritma Algoritme yang format yang didukungnya akan dikembalikan.
[keluar] format Array format yang didukung. Penelepon mengambil kepemilikan array dan harus membebaskan () itu.
[keluar] format_panjang Panjang formats .

Definisi pada baris 206 dari file keymaster1.h .

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, algoritma keymaster_algorithm_t , tujuan keymaster_purpose_t , keymaster_padding_t **mode, size_t *modes_length)

Mendapatkan mode padding yang didukung untuk algoritme yang ditentukan. Penelepon mengasumsikan kepemilikan array yang dialokasikan.

Parameter
[di] dev Struktur perangkat keymaster.
[di] algoritma Algoritme yang mode padding yang didukung akan dikembalikan.
[keluar] mode Array mode padding didukung. Penelepon mengambil kepemilikan array dan harus membebaskan () itu.
[keluar] mode_panjang Panjang modes .

Definisi pada baris 168 dari file keymaster1.h .

Mengimpor kunci, atau pasangan kunci, mengembalikan gumpalan kunci dan/atau deskripsi kunci.

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

  • KM_TAG_ALGORITHM;
  • KM_TAG_TUJUAN; 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 mengautentikasi untuk setiap penggunaan.

Tag berikut akan mengambil nilai default jika tidak ditentukan:

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

Tag berikut mungkin tidak ditentukan; nilai-nilai mereka akan diberikan oleh implementasi.

  • KM_TAG_ASAL,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
Parameter
[di] dev Struktur perangkat keymaster.
[di] params Parameter yang menentukan kunci yang diimpor.
[di] params_count Jumlah entri dalam params .
[di] format_kunci menentukan format data kunci di key_data.
[keluar] key_blob Digunakan untuk mengembalikan gumpalan kunci buram. Harus bukan NULL. Penelepon mengasumsikan kepemilikan key_material yang terkandung.
[keluar] karakteristik Digunakan untuk mengembalikan karakteristik kunci yang diimpor. Mungkin NULL, dalam hal ini tidak ada karakteristik yang akan dikembalikan. Jika non-NULL, pemanggil mengasumsikan kepemilikan dan harus membatalkan alokasi dengan keymaster_free_characteristics() . Perhatikan bahwa KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID, dan KM_TAG_APPLICATION_DATA tidak pernah dikembalikan.

Definisi pada 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 penyandian DER (standar Java). Gumpalan kunci yang dikembalikan buram dan selanjutnya akan diberikan untuk ditandatangani dan diverifikasi.

Pengembalian: 0 jika berhasil atau kode kesalahan kurang dari 0.

Definisi pada 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 *ditandatangani
Tidak digunakan lagi:
Menandatangani data menggunakan key-blob yang dihasilkan sebelumnya. Ini dapat menggunakan kunci asimetris atau kunci rahasia.

Pengembalian: 0 jika berhasil atau kode kesalahan kurang dari 0.

Definisi pada 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_parabt * out_param

Menyediakan data ke, dan mungkin menerima keluaran dari, operasi kriptografi yang sedang berlangsung dimulai dengan begin() .

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

update() mungkin tidak menggunakan semua data yang disediakan dalam buffer data. update() akan mengembalikan jumlah yang dikonsumsi dalam *data_consumed. Penelepon harus memberikan data yang tidak terpakai dalam panggilan berikutnya.

Parameter
[di] dev Struktur perangkat keymaster.
[di] operasi_handle Pegangan operasi dikembalikan oleh begin() .
[di] 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 masukan telah disediakan.
[di] memasukkan Data yang akan diproses, sesuai dengan parameter yang ditetapkan dalam panggilan ke begin() . Perhatikan bahwa update() mungkin atau mungkin tidak menggunakan semua data yang disediakan. Lihat input_consumed .
[keluar] masukan_dikonsumsi Jumlah data yang dikonsumsi oleh update() . Jika ini kurang dari jumlah yang diberikan, pemanggil harus memberikan sisanya dalam panggilan berikutnya ke update() .
[keluar] out_params Parameter keluaran. Digunakan untuk mengembalikan data tambahan dari operasi Pemanggil mengambil kepemilikan larik parameter keluaran dan harus membebaskannya dengan keymaster_free_param_set() . out_params dapat disetel ke NULL jika tidak ada parameter keluaran yang diharapkan. Jika out_params adalah NULL, dan parameter keluaran dihasilkan, begin() akan mengembalikan KM_ERROR_OUTPUT_PARAMETER_NULL.
[keluar] keluaran Data keluaran, jika ada. Penelepon mengasumsikan kepemilikan buffer yang dialokasikan. keluaran tidak boleh NULL.

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

Definisi pada baris 495 dari file keymaster1.h .

int(* verifikasi_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 size_tanda tangan,_panjang tanda tangan)
Tidak digunakan lagi:
Memverifikasi data yang ditandatangani dengan gumpalan kunci. Ini dapat menggunakan kunci asimetris atau kunci rahasia.

Pengembalian: 0 pada verifikasi yang berhasil atau kode kesalahan kurang dari 0.

Definisi pada baris 118 dari file keymaster1.h .


Dokumentasi untuk struct ini dibuat dari file berikut: