keymaster1_device Yapı Referansı
#include < keymaster1.h >
Veri alanları | |
struct hw_device_t | yaygın |
uint32_t | client_version |
uint32_t | bayraklar |
geçersiz * | bağlam |
int(* | create_keypair )(const struct keymaster1_device *dev, const keymaster_keypair_t anahtar_türü, 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 anahtar_uzunluğu, 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 anahtar_blob_uzunluk) |
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 veri_uzunluğu, uint8_t **signed_signed_data *_signed_signed_data)_ |
int(* | doğrulama_verileri )(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 imzalı_veri_uzunluğu, const uint8_t, const uint8_t * imza_t |
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 algoritması, keymaster_while_t amaç, keymaster_block_mode_t **modlar, size_t *modlar_uzunluk) |
keymaster_error_t (* | get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_while_t amaç, keymaster_padding_t **modlar, size_t *modlar_uzunluk) |
keymaster_error_t (* | get_supported_digests )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_while_t amaç, keymaster_digest_t **digests, size_t *digests_length) |
keymaster_error_t (* | get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formats, size_t *formats_length) |
keymaster_error_t (* | get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formats, size_t *formats_length) |
keymaster_error_t (* | add_rng_entropy )(const struct keymaster1_device *dev, const uint8_t *veri, size_t veri_uzunluğu) |
keymaster_error_t (* | create_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 )** |
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 *anahtar) |
keymaster_error_t (* | delete_all_keys )(const struct keymaster1_device *dev) |
keymaster_error_t (* | başla )(const struct keymaster1_device *dev, keymaster_ amaç_t amaç, 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 *operasyon_handle) |
keymaster_error_t (* | güncelleme )(const struct keymaster1_device *dev, keymaster_process_handle_t operasyon_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *giriş, size_t *input_consumed, keymaster_key_param_set_t * out_params_t ) |
keymaster_error_t (* | bitiş )(const struct keymaster1_device *dev, keymaster_process_handle_t operasyon_handle, const keymaster_key_param_set_t *in_params, const keymaster_blob_t *signature, keymaster_key_param_set_t *out_params, keymaster_blob_t *çıktı) |
keymaster_error_t (* | iptal )(const struct keymaster1_device *dev, keymaster_process_handle_t operasyon_handle) |
Detaylı Açıklama
Keymaster1 cihaz tanımı
keymaster1.h dosyasının 28. satırındaki tanım.
Saha Dokümantasyonu
keymaster_error_t (* iptal)(const struct keymaster1_device *dev, keymaster_operation_handle_t operasyon_handle) |
start () ile başlayan bir şifreleme işlemini iptal ederek, tüm dahili kaynakları serbest bırakır ve operation_handle
geçersiz kılar.
keymaster1.h dosyasının 531. satırındaki tanım.
keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *veri, size_t veri_uzunluğu) |
Keymaster tarafından kullanılan RNG'ye entropi ekler. Bu yöntemle eklenen entropinin, kullanılan tek entropi kaynağı olmaması garanti edilir ve karıştırma işlevinin, RNG'nin (herhangi bir kaynaktan) saldırganın tahmin edemediği (veya kontrol), bu durumda RNG çıkışı rastgeleden ayırt edilemez. Böylece, herhangi bir kaynaktan gelen entropi iyiyse, çıktı da iyi olacaktır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] veri Karıştırılacak rastgele veriler. [içinde] veri_uzunluğu data
uzunluğu.
keymaster1.h dosyasının 242 satırındaki tanım.
keymaster_error_t (* start)(const struct keymaster1_device *dev, keymaster_ amaç_t amaç, const keymaster_key_blob_t *anahtar, const keymaster_key_param_set_t *in_params, keymaster_key_param_set_t *out_params, keymaster_process_handle_t *operasyon_tutucu |
Belirtilen anahtarı kullanarak şifreleme işlemini başlatır. Her şey yolundaysa, startup () KM_ERROR_OK döndürür ve update() , finish() veya abort() öğesine sonraki çağrılara iletilmesi gereken bir işlem tanıtıcısı oluşturur.
Anahtar yöneticisi uygulamasının herhangi bir dahili işlem durumunu temizlemesine izin vermek için, her start() çağrısının bitiş() veya abort() için sonraki bir çağrıyla eşleştirilmesi çok önemlidir. Bunun yapılmaması, dahili durum alanını veya diğer dahili kaynakları sızdırabilir ve sonunda, işlemler için alanı bittiğinde start () öğesinin KM_ERROR_TOO_MANY_OPERATIONS döndürmesine neden olabilir. start () , update() veya finish() öğelerinden KM_ERROR_OK dışındaki herhangi bir sonuç, işlemi örtük olarak iptal eder, bu durumda abort() öğesinin çağrılması gerekmez (ve çağrılırsa KM_ERROR_INVALID_OPERATION_HANDLE döndürür).
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] amaç İşlemin amacı, KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN veya KM_PURPOSE_VERIFY'den biri. AEAD modları için şifreleme ve şifre çözmenin sırasıyla imzalama ve doğrulama anlamına geldiğini, ancak KM_PURPOSE_ENCRYPT ve KM_PURPOSE_DECRYPT olarak belirtilmesi gerektiğini unutmayın. [içinde] anahtar İşlem için kullanılacak anahtar. key
amaca uygun birpurpose
olmalı ve tüm kullanım gereksinimleri karşılanmalıdır, yoksa start() uygun bir hata kodu döndürür.[içinde] in_params İşlem için ek parametreler. Bu, genellikle KM_TAG_AUTH_TOKEN ile kimlik doğrulama verileri sağlamak için kullanılır. Oluşturma sırasında KM_TAG_APPLICATION_ID veya KM_TAG_APPLICATION_DATA sağlandıysa, burada sağlanmaları gerekir, aksi takdirde işlem KM_ERROR_INVALID_KEY_BLOB ile başarısız olur. Nonce veya IV gerektiren işlemler için, KM_TAG_CALLER_NONCE ile oluşturulan anahtarlarda in_params, KM_TAG_NONCE etiketi içerebilir. AEAD işlemleri için KM_TAG_CHUNK_SIZE burada belirtilir. [dışarı] out_params Çıkış parametreleri. İşlem başlatma işleminden ek verileri döndürmek için, özellikle IV veya nonce oluşturan işlemlerden IV veya nonce'yi döndürmek için kullanılır. Çağıran, çıktı parametreleri dizisinin sahipliğini alır ve onu keymaster_free_param_set() ile serbest bırakmalıdır. çıkış parametreleri beklenmiyorsa out_params NULL olarak ayarlanabilir. out_params NULL ise ve çıktı parametreleri oluşturulursa, begin() KM_ERROR_OUTPUT_PARAMETER_NULL döndürür. [dışarı] operasyon_handle update() , bitiş() veya abort() öğelerine iletilmesi gereken yeni oluşturulan işlem tanıtıcısı. Operation_handle NULL ise, begin() KM_ERROR_OUTPUT_PARAMETER_NULL döndürür.
keymaster1.h dosyasının 451 satırındaki tanım.
uint32_t client_version |
BU KULLANILMAMIŞTIR. Bunun yerine keymaster_module başlatmada yeni "module_api_version" ve "hal_api_version" alanlarını kullanın.
keymaster1.h dosyasının 41. satırındaki tanım.
struct hw_device_t ortak |
Anahtar yöneticisi aygıtının ortak yöntemleri. Bu yapının kullanıcıları, hw_device_t öğesinin bir keymaster_device başvurduğu bilinen bağlamlarda keymaster_device işaretçisine bir hw_device_t göndereceğinden, bu, keymaster_device öğesinin ilk üyesi olmalıdır .
keymaster1.h dosyasının 35. satırındaki tanım.
geçersiz* bağlam |
keymaster1.h dosyasının 48. satırındaki tanım.
int(* delete_all)(const struct keymaster1_device *dev) |
- Kullanımdan kaldırıldı:
- Donanım anahtar deposundaki tüm anahtarları siler. Anahtar deposu tamamen sıfırlandığında kullanılır.
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
Başarı durumunda 0 veya 0'dan küçük bir hata kodu döndürür.
keymaster1.h dosyasının 100. satırındaki tanım.
keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev) |
Donanım anahtar deposundaki tüm anahtarları siler. Anahtar deposu tamamen sıfırlandığında kullanılır. Bu işlevi çağırdıktan sonra, herhangi bir işlem için önceden oluşturulmuş veya içe aktarılmış anahtar bloblarını kullanmak imkansız olacaktır.
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı.
keymaster1.h dosyasının 407 satırındaki tanım.
keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *anahtar) |
Anahtar bloğuyla ilişkili anahtarı veya anahtar çiftini siler. Bu işlevi çağırdıktan sonra, tuşu başka herhangi bir işlem için kullanmak imkansız olacaktır. Yabancı güven köklerinden gelen anahtarlara uygulanabilir (mevcut güven kökü altında kullanılamaz anahtarlar).
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] anahtar Silinecek anahtar.
keymaster1.h dosyasının 395. satırındaki tanım.
int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t anahtar_blob_uzunluğu) |
- Kullanımdan kaldırıldı:
- Anahtar blobuyla ilişkili anahtar çiftini siler.
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
Başarı durumunda 0 veya 0'dan küçük bir hata kodu döndürür.
keymaster1.h dosyasının 88. satırındaki tanım.
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 ) *app_data, keymaster_blob_t) |
Belirtilen biçimde bir bayt dizisi döndürerek bir genel anahtarı dışa aktarır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] export_format Anahtarı dışa aktarmak için kullanılacak biçim. [içinde] key_to_export İhracatın anahtarı. [dışarı] export_data Dışa aktarılan anahtar malzeme. Arayan sahipliğini üstlenir. [dışarı] export_data_length export_data
uzunluğu.
keymaster1.h dosyasının 377. satırındaki tanım.
keymaster_error_t (* bitiş)(const struct keymaster1_device *dev, keymaster_operation_handle_t işlem_handle , const keymaster_key_param_set_t *in_params, const keymaster_blob_t *signature, keymaster_key_param_set_t *out_params, keymasterout_blob_t *out_params, keymasterout_blob_t |
start () ile başlayan bir şifreleme işlemini sonlandırır ve operation_handle
geçersiz kılar.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] operasyon_handle start() tarafından döndürülen işlem tanıtıcısı. Bu tanıtıcı geçersiz kılınacak. [içinde] paramlar İşlem için ek parametreler. AEAD modları için bu, KM_TAG_ADDITIONAL_DATA'yı belirtmek için kullanılır, ancak yalnızca update() için giriş verisi sağlanmadıysa. [içinde] imza start () çağrısında belirtilen amaç KM_PURPOSE_VERIFY ise doğrulanacak imza. [dışarı] çıktı Varsa çıktı verileri. Arayan, tahsis edilen arabelleğin sahipliğini üstlenir.
Tamamlanmakta olan işlem bir imza doğrulamasıysa veya AEAD modu şifre çözme işlemiyse ve doğrulama başarısız olursa, bitiş() KM_ERROR_VERIFICATION_FAILED değerini döndürür.
keymaster1.h dosyasının 521 satırındaki tanım.
uint32_t bayrakları |
keymaster_common.h içindeki keymaster0_devices ::flags için tanımlanmış bayraklara bakın
keymaster1.h dosyasının 46. satırındaki tanım.
keymaster_error_t (* create_key)(const struct keymaster1_device *dev, const keymaster_key_param_set_t *params, keymaster_key_blob_t *key_blob, keymaster_key_characteristics_t **characteristics) |
Bir anahtar bloğu ve/veya anahtarın açıklamasını döndüren bir anahtar veya anahtar çifti oluşturur.
Anahtar oluşturma parametreleri, params
içinde sağlanan anahtar yöneticisi etiket/değer çiftleri olarak tanımlanır. Tam liste için keymaster_tag_t'ye bakın. Yararlı anahtarların üretilmesi için her zaman gerekli olan bazı değerler şunlardır:
- KM_TAG_ALGORITHM;
- KM_TAG_PURPOSE; ve
- (KM_TAG_USER_SECURE_ID ve KM_TAG_USER_AUTH_TYPE) veya KM_TAG_NO_AUTH_REQUIRED.
KM_TAG_AUTH_TIMEOUT, KM_TAG_NO_AUTH_REQUIRED yoksa veya kullanıcının her kullanım için kimlik doğrulaması yapması gerekmedikçe genellikle belirtilmelidir.
Bunları gerektiren algoritmalar için KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH ve KM_TAG_DIGEST belirtilmelidir.
Aşağıdaki etiketler belirtilemez; değerleri uygulama ile sağlanacaktır.
- KM_TAG_ORIGIN,
- KM_TAG_ROLLBACK_RESISTANT,
- KM_TAG_CREATION_DATETIME
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] paramlar Anahtar oluşturma parametreleri dizisi. [içinde] params_count params
uzunluğu.[dışarı] key_blob oluşturulan anahtarı döndürür. key_blob
NULL olmamalıdır. Arayan, key_blob->key_material'in sahipliğini üstlenir ve onu serbest bırakmalıdır().[dışarı] özellikler NULL değilse, oluşturulan anahtarın özelliklerini döndürür. NULL değilse, arayan sahipliğini üstlenir ve keymaster_free_characteristics() ile ayırması gerekir. KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA'nın hiçbir zaman döndürülmediğini unutmayın.
keymaster1.h dosyasının 282 satırındaki tanım.
int(* create_keypair)(const struct keymaster1_device *dev, const keymaster_keypair_t anahtar_türü, const void *key_params, uint8_t **key_blob, size_t *key_blob_length) |
- Kullanımdan kaldırıldı:
- Genel ve özel bir anahtar oluşturur. Döndürülen anahtar bloğu opaktır ve daha sonra imzalama ve doğrulama için sağlanmalıdır.
Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu.
keymaster1.h dosyasının 56. satırındaki tanım.
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_characteristicsistict **characters) |
Belirtilen anahtarın veya key_blob geçersizse KM_ERROR_INVALID_KEY_BLOB'nin özelliklerini döndürür (uygulamalar anahtarın bütünlüğünü tam olarak doğrulamalıdır). client_id ve app_data, anahtar oluşturulduğunda veya içe aktarıldığında sağlanan kimlik ve veriler olmalıdır veya oluşturma sırasında KM_TAG_APPLICATION_ID ve/veya KM_TAG_APPLICATION_DATA sağlanmadıysa boş olmalıdır. Bu değerler döndürülen özelliklere dahil edilmez. Çağıran, keymaster_free_characteristics() ile serbest bırakılması gereken tahsis edilmiş özellikler nesnesinin sahipliğini üstlenir.
KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA'nın hiçbir zaman döndürülmediğini unutmayın.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] key_blob Özellikleri almanın anahtarı. [içinde] Müşteri Kimliği İstemci kimliği verileri veya ilişkili değilse NULL. [içinde] app_id Uygulama verileri veya ilişkili değilse NULL. [dışarı] özellikler Anahtar özellikler.
keymaster1.h dosyasının 309. satırındaki tanım.
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) |
- Kullanımdan kaldırıldı:
- Bir anahtar çiftinin ortak anahtar bölümünü alır. Genel anahtar, X.509 biçiminde (Java standardı) kodlanmış bayt dizisinde olmalıdır.
Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu. Hata durumunda, x509_data tahsis edilmemelidir.
keymaster1.h dosyasının 76. satırındaki tanım.
keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length) |
Desteklenen algoritmaları alır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [dışarı] algoritmalar Desteklenen algoritma dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakmalıdır(). [dışarı] algoritmalar_uzunluk algorithms
uzunluğu.
keymaster1.h dosyasının 133. satırındaki tanım.
keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_Amaç_t amaç, keymaster_block_mode_t **modlar, size_t *modlar_uzunluk) |
Belirtilen algoritma için desteklenen blok modlarını alır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] algoritma Desteklenen modların döndürüleceği algoritma. [dışarı] modlar Desteklenen mod dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakmalıdır(). [dışarı] modlar_uzunluk modes
uzunluğu.
keymaster1.h dosyasının 149. satırındaki tanım.
keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_while_t amaç, keymaster_digest_t **digests, size_t *digests_length) |
Belirtilen algoritma için desteklenen özetleri alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] algoritma Desteklenen özetlerin döndürüleceği algoritma. [dışarı] sindirir Desteklenen özet dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakmalıdır(). [dışarı] özetler_uzunluk digests
uzunluğu.
keymaster1.h dosyasının 187 satırındaki tanım.
keymaster_error_t (* get_supported_export_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formatlar, size_t *formats_length) |
Belirtilen algoritmanın anahtarları için desteklenen anahtar dışa aktarma biçimlerini alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] algoritma Desteklenen biçimlerin döndürüleceği algoritma. [dışarı] formatlar Desteklenen formatlar dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakmalıdır(). [dışarı] formatlar_uzunluk formats
uzunluğu.
keymaster1.h dosyasının 224 satırındaki tanım.
keymaster_error_t (* get_supported_import_formats)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_key_format_t **formatlar, size_t *formats_length) |
Belirtilen algoritmanın anahtarları için desteklenen anahtar içe aktarma biçimlerini alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] algoritma Desteklenen biçimlerin döndürüleceği algoritma. [dışarı] formatlar Desteklenen formatlar dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakmalıdır(). [dışarı] formatlar_uzunluk formats
uzunluğu.
keymaster1.h dosyasının 206 satırındaki tanım.
keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algoritması, keymaster_amaç_t amaç, keymaster_padding_t **modlar, size_t *modlar_uzunluk) |
Belirtilen algoritma için desteklenen dolgu modlarını alır. Arayan, tahsis edilen dizinin sahipliğini üstlenir.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] algoritma Desteklenen dolgu modlarının döndürüleceği algoritma. [dışarı] modlar Desteklenen dolgu modları dizisi. Arayan, dizinin sahipliğini alır ve onu serbest bırakmalıdır(). [dışarı] modlar_uzunluk modes
uzunluğu.
keymaster1.h dosyasının 168. satırındaki tanım.
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_tcharacter **er) |
Bir anahtar blobu ve/veya anahtarın açıklamasını döndürerek bir anahtarı veya anahtar çiftini içe aktarır.
Anahtar içe aktarma parametrelerinin çoğu, "params" içinde sağlanan anahtar yöneticisi etiket/değer çiftleri olarak tanımlanır. Tam liste için keymaster_tag_t'ye bakın. Yararlı anahtarların içe aktarılması için her zaman gerekli olan değerler şunlardır:
- KM_TAG_ALGORITHM;
- KM_TAG_PURPOSE; ve
- (KM_TAG_USER_SECURE_ID ve KM_TAG_USER_AUTH_TYPE) veya KM_TAG_NO_AUTH_REQUIRED.
KM_TAG_AUTH_TIMEOUT genellikle belirtilmelidir. Belirtilmemişse, kullanıcının her kullanım için kimlik doğrulaması yapması gerekir.
Aşağıdaki etiketler, belirtilmemişse varsayılan değerleri alacaktır:
- KM_TAG_KEY_SIZE varsayılan olarak sağlanan anahtarın boyutuna ayarlanacaktır.
- KM_TAG_RSA_PUBLIC_EXPONENT, sağlanan anahtardaki değere varsayılan olacaktır (RSA anahtarları için)
Aşağıdaki etiketler belirtilemez; değerleri uygulama ile sağlanacaktır.
- KM_TAG_ORIGIN,
- KM_TAG_ROLLBACK_RESISTANT,
- KM_TAG_CREATION_DATETIME
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] paramlar İçe aktarılan anahtarı tanımlayan parametreler. [içinde] params_count params
içindeki giriş sayısı.[içinde] key_format key_data içindeki anahtar verilerin biçimini belirtir. [dışarı] key_blob Opak anahtar bloğunu döndürmek için kullanılır. NULL olmayan olmalıdır. Arayan, içerilen key_material'in sahipliğini üstlenir. [dışarı] özellikler İçe aktarılan anahtarın özelliklerini döndürmek için kullanılır. NULL olabilir, bu durumda hiçbir özellik döndürülmez. NULL değilse, arayan sahipliğini üstlenir ve keymaster_free_characteristics() ile ayırması gerekir. KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA'nın hiçbir zaman döndürülmediğini unutmayın.
keymaster1.h dosyasının 357. satırındaki tanım.
int(* import_keypair)(const struct keymaster1_device *dev, const uint8_t *key, const size_t anahtar_uzunluğu, uint8_t **key_blob, size_t *anahtar_blob_uzunluğu) |
- Kullanımdan kaldırıldı:
- Bir genel ve özel anahtar çiftini içe aktarır. İçe aktarılan anahtarlar, DER kodlaması (Java standardı) ile PKCS#8 biçiminde olacaktır. Döndürülen anahtar bloğu opaktır ve daha sonra imzalama ve doğrulama için sağlanacaktır.
Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu.
keymaster1.h dosyasının 66. satırındaki tanım.
int(* sign_data)(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t anahtar_blob_length, const uint8_t *data, const size_t veri_uzunluğu, uint8_t **signed_t_length, uint8_t **imzalı_veri)_ |
- Kullanımdan kaldırıldı:
- Daha önce oluşturulmuş bir anahtar blobu kullanarak verileri imzalar. Bu, asimetrik bir anahtar veya gizli bir anahtar kullanabilir.
Döndürür: Başarı durumunda 0 veya 0'dan küçük bir hata kodu.
keymaster1.h dosyasının 108. satırındaki tanım.
keymaster_error_t (* güncelleme)(const struct keymaster1_device *dev, keymaster_operation_handle_t işlem_handle , const keymaster_key_param_set_t *in_params, const keymaster_blob_t *giriş, size_t * input_consumed , keymaster_key_keymaster_parablom_t_t , *çıkış) |
start () ile başlayan devam eden bir şifreleme işlemine veri sağlar ve muhtemelen bundan çıktı alır.
Operation_handle geçersizse update() KM_ERROR_INVALID_OPERATION_HANDLE değerini döndürür.
update() , veri arabelleğinde sağlanan tüm verileri tüketmeyebilir. update() *data_consumed içinde tüketilen miktarı döndürür. Arayan, tüketilmeyen verileri sonraki bir aramada sağlamalıdır.
- parametreler
[içinde] dev Anahtar yöneticisi cihaz yapısı. [içinde] operasyon_handle start() tarafından döndürülen işlem tanıtıcısı. [içinde] in_params İşlem için ek parametreler. AEAD modları için bu, KM_TAG_ADDITIONAL_DATA belirtmek için kullanılır. update() işlevine yapılan birden çok çağrıda ek verilerin sağlanabileceğini, ancak yalnızca giriş verileri sağlanana kadar sağlanabileceğini unutmayın. [içinde] giriş start() çağrısında belirlenen parametrelere göre işlenecek veriler. update() öğesinin sağlanan tüm verileri tüketebileceğini veya tüketmeyebileceğini unutmayın. input_consumed
bakın.[dışarı] input_consumed update() tarafından tüketilen veri miktarı. Bu, sağlanan miktardan azsa, arayan kişi, güncelleme() işlevine sonraki bir çağrıda kalanı sağlamalıdır. [dışarı] out_params Çıkış parametreleri. İşlemden ek veri döndürmek için kullanılır Çağıran, çıktı parametreleri dizisinin sahipliğini alır ve onu keymaster_free_param_set() ile boşaltması gerekir. çıkış parametreleri beklenmiyorsa out_params NULL olarak ayarlanabilir. out_params NULL ise ve çıktı parametreleri oluşturulursa, begin() KM_ERROR_OUTPUT_PARAMETER_NULL döndürür. [dışarı] çıktı Varsa çıktı verileri. Arayan, tahsis edilen arabelleğin sahipliğini üstlenir. çıktı NULL olmamalıdır.
update() öğesinin herhangi bir çıktı sağlamayabileceğini unutmayın; bu durumda çıktı->veri_uzunluğu sıfır olur ve çıktı->veri NULL veya sıfır uzunluk olabilir (bu nedenle arayan her zaman serbest bırakmalıdır()).
keymaster1.h dosyasının 495 satırındaki tanım.
int(* doğrulama_verileri)(const struct keymaster1_device *dev, const void *signing_params, const uint8_t *key_blob, const size_t anahtar_blob_uzunluğu, const uint8_t *signed_data, const size_t imzalı_veri_uzunluğu, const uint8_t) boyut constsignuint_t) |
- Kullanımdan kaldırıldı:
- Bir anahtar blob ile imzalanmış verileri doğrular. Bu, asimetrik bir anahtar veya gizli bir anahtar kullanabilir.
Döndürür: Başarılı doğrulamada 0 veya 0'dan küçük bir hata kodu.
keymaster1.h dosyasının 118. satırındaki tanım.
Bu yapı için belgeler aşağıdaki dosyadan oluşturulmuştur:
- donanım/libdonanım/içerme/donanım/ keymaster1.h