keymaster1_device Yapı Referansı
#include <
keymaster1.h
>
Veri Alanları |
|
struct hw_device_t | yaygın |
uint32_t | client_version |
uint32_t | işaretleri |
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) |
Ayrıntılı Açıklama
Keymaster1 cihaz tanımı
Tanımı, keymaster1.h dosyasının 28. satırı .
Alan Belgeleri
keymaster_error_t (* abort)(const struct keymaster1_device *dev, keymaster_operation_handle_t operation_handle) |
begin()
ile başlatılan bir kriptografik işlemi iptal ederek tüm dahili kaynakları serbest bırakır ve
operation_handle
değerini geçersiz kılar.
Tanımı, keymaster1.h dosyasının 531 satırı
keymaster_error_t (* add_rng_entropy)(const struct keymaster1_device *dev, const uint8_t *data, size_t data_length) |
Anahtar yöneticisi tarafından kullanılan RNG'ye entropi ekler. Bu yöntemle eklenen entropi, kullanılan tek entropi kaynağı olmayacaktır. Karıştırma işlevinin güvenli olması gerekir. Yani, RNG'ye saldırganın tahmin edemeyeceği (veya kontrol edemeyeceği) herhangi bir veri eklenirse (herhangi bir kaynaktan) RNG çıkışı rastgele ile ayırt edilemez. Bu nedenle, herhangi bir kaynaktan gelen entropi iyiyse çıkış da iyi olur.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] aktarma Karıştırılacak rastgele veriler. [in] data_length Uzunluğu data
.
Tanımı, keymaster1.h dosyasının 242 satırı
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) |
Belirtilen anahtarı kullanarak bir şifreleme işlemi başlatır. Her şey yolunda giderse begin() KM_ERROR_OK değerini döndürür ve update() , finish() veya abort() işlevlerinin sonraki çağrılarına iletilmesi gereken bir işlem işleyicisi oluşturur.
Anahtar yöneticisi uygulamasının tüm dahili işlem durumunu temizlemesine izin vermek için her begin() çağrısının, finish() veya abort() çağrısıyla eşleştirilmesi çok önemlidir. Bu yapılmazsa dahili durum alanı veya diğer dahili kaynaklar sızabilir ve sonunda işlem alanı bittiğinde begin() KM_ERROR_TOO_MANY_OPERATIONS değerinin döndürülmesine neden olabilir. begin() , update() veya finish() işlevlerinden elde edilen KM_ERROR_OK dışındaki tüm sonuçlar işlemi dolaylı olarak iptal eder. Bu durumda abort() işlevinin çağrılmasına gerek yoktur (ve çağrılırsa KM_ERROR_INVALID_OPERATION_HANDLE döndürülür).
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] amaç İşlemin amacı (KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN veya KM_PURPOSE_VERIFY seçeneklerinden biri). AEAD modlarında şifreleme ve şifre çözme işlemlerinin 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. [in] anahtar İşlem için kullanılacak anahtar. key
,purpose
ile uyumlu bir amaca sahip olmalı ve tüm kullanım şartları karşılanmış olmalıdır. Aksi takdirde begin() , uygun bir hata kodu döndürür.[in] 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 da sağlanmalıdır. Aksi takdirde işlem KM_ERROR_INVALID_KEY_BLOB hatasıyla başarısız olur. KM_TAG_CALLER_NONCE ile oluşturulan anahtarlarda, tek seferlik veya IV gerektiren işlemler için in_params, KM_TAG_NONCE etiketi içerebilir. AEAD işlemleri için KM_TAG_CHUNK_SIZE burada belirtilir. [out] out_params Çıkış parametreleri. İşlem başlatma işleminden ek veriler döndürmek için kullanılır. Özellikle, IV veya tek seferlik şifre oluşturan işlemlerden IV veya tek seferlik şifre döndürmek için kullanılır. Çağırıcı, çıkış parametreleri dizisinin sahipliğini alır ve keymaster_free_param_set() ile diziyi serbest bırakmalıdır. Çıkış parametresi beklenmiyorsa out_params NULL olarak ayarlanabilir. out_params NULL ise ve çıkış parametreleri oluşturulursa begin() KM_ERROR_OUTPUT_PARAMETER_NULL değerini döndürür. [out] operation_handle Yeni oluşturulan işlem işleyicisi. update() , finish() veya abort() işlevlerine geçirilmelidir. operation_handle NULL ise begin() KM_ERROR_OUTPUT_PARAMETER_NULL değerini döndürür.
Tanımı, keymaster1.h dosyasının 451. satırı içindedir.
uint32_t client_version |
BU ÖZELLİK KULLANIMDAN KALDIRILDI. Bunun yerine, keymaster_module başlatma işleminde yeni "module_api_version" ve "hal_api_version" alanlarını kullanın.
Tanımı, keymaster1.h dosyasının 41. satırı içindedir.
struct hw_device_t common |
Anahtar yöneticisi cihazının yaygın yöntemleri. Bu yapının kullanıcıları, hw_device_t bir keymaster_device'e referans verdiği bilinen bağlamlarda keymaster_device işaretçisine bir hw_device_t atayacağından bu, keymaster_device'in ilk üyesi olmalıdır.
Tanımı, keymaster1.h dosyasının 35. satırı içindedir.
void* bağlamı |
Tanımı, keymaster1.h dosyasının 48. satırı
int(* delete_all)(const struct keymaster1_device *dev) |
- Desteği sonlandırıldı:
- Donanım anahtar deposundaki tüm anahtarları siler. Anahtar anahtar kutusu 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ılı olduğunda 0 değerini, aksi takdirde 0'dan küçük bir hata kodu döndürür.
Tanımı, keymaster1.h dosyasının 100 satırı
keymaster_error_t (* delete_all_keys)(const struct keymaster1_device *dev) |
Donanım anahtar deposundaki tüm anahtarları siler. Anahtar anahtar kutusu tamamen sıfırlandığında kullanılır. Bu işlev çağrıldıktan sonra, daha önce oluşturulmuş veya içe aktarılmış anahtar blob'larını işlemlerde kullanmak mümkün olmaz.
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı.
Tanım, keymaster1.h dosyasının 407 satırındadır.
keymaster_error_t (* delete_key)(const struct keymaster1_device *dev, const keymaster_key_blob_t *key) |
Anahtar blob'uyla ilişkili anahtarı veya anahtar çiftini siler. Bu işlev çağrıldıktan sonra anahtar başka işlemler için kullanılamaz. Yabancı güven köklerinden gelen anahtarlara uygulanabilir (mevcut güven kökü altında kullanılamayan anahtarlar).
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] anahtar Silecek anahtar.
Tanımı, keymaster1.h dosyasının 395. satırı içindedir.
int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length) |
- Desteği sonlandırıldı:
- Anahtar blob'uyla ilişkili anahtar çiftini siler.
Bu işlev isteğe bağlıdır ve uygulanmazsa NULL olarak ayarlanmalıdır.
Başarılı olduğunda 0 değerini, aksi takdirde 0'dan küçük bir hata kodu döndürür.
Tanımı, keymaster1.h dosyasının 88 satırı
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) |
Belirtilen biçimde bir bayt dizisi döndürerek ortak anahtarı dışa aktarır.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] export_format Anahtarı dışa aktarmak için kullanılacak biçim. [in] key_to_export Dışa aktarılacak anahtar. [out] export_data Dışa aktarılan anahtar materyali. Arayan kişi sahipliği üstlenir. [out] export_data_length export_data
değerinin uzunluğudur.
Tanımı, keymaster1.h dosyasının 377 satırı
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) |
begin()
ile başlayan bir kriptografik işlemi tamamlar ve
operation_handle
değerini geçersiz kılar.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] operation_handle begin() tarafından döndürülen işlem mülkünü temsil eder. . Bu herkese açık kullanıcı adı geçersiz hale gelir. [in] params İşlem için ek parametreler. AEAD modlarında bu, KM_TAG_ADDITIONAL_DATA parametresini belirtmek için kullanılır ancak yalnızca update() işlevine giriş verisi sağlanmamışsa kullanılır. [in] signature begin() çağrısında belirtilen amaç KM_PURPOSE_VERIFY ise doğrulanacak imza. [out] output Varsa çıkış verileri. Arayan, ayrılan arabelleğin sahipliğini üstlenir.
Tamamlanan işlem bir imza doğrulaması veya AEAD modunda şifre çözme işlemiyse ve doğrulama başarısız olursa finish() KM_ERROR_VERIFICATION_FAILED değerini döndürür.
Tanımı, keymaster1.h dosyasının 521 satırı
uint32_t işaretleri |
keymaster0_devices::flags için tanımlanan işaretlere keymaster_common.h dosyasından bakabilirsiniz.
Tanımı, keymaster1.h dosyasının 46. satırı içindedir.
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) |
Bir anahtar veya anahtar çifti oluşturur ve bir anahtar blob'u ve/veya anahtarın açıklamasını döndürür.
Anahtar oluşturma parametreleri,
params
bölümünde sağlanan anahtar yöneticisi etiketi/değer çiftleri olarak tanımlanır. Tam liste için keymaster_tag_t öğesine bakın. Yararlı anahtarlar oluşturmak için her zaman gereken 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_NO_AUTH_REQUIRED mevcut olmadığı sürece KM_TAG_AUTH_TIMEOUT genellikle belirtilmelidir. Aksi takdirde kullanıcının her kullanım için kimlik doğrulaması yapması gerekir.
KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH ve KM_TAG_DIGEST, bunları gerektiren algoritmalar için belirtilmelidir.
Aşağıdaki etiketler belirtilemez; değerleri uygulama tarafından sağlanır.
- KM_TAG_ORIGIN,
- KM_TAG_ROLLBACK_RESISTANT,
- KM_TAG_CREATION_DATETIME
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] params Anahtar oluşturma parametreleri dizisi. [in] params_count Uzunluğu params
.[out] key_blob oluşturulan anahtarı döndürür. key_blob
NULL olmamalıdır. Çağıran, key_blob->key_material sahipliğini üstlenir ve free() işlevini çağırarak bu anahtarı serbest bırakmalıdır.[out] özellikler NULL değilse oluşturulan anahtarın özelliklerini döndürür. NULL değilse arayan sahipliği üstlenir ve keymaster_free_characteristics() ile alanı ayırmalıdır. KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA parametrelerinin hiçbir zaman döndürülmediğini unutmayın.
Tanımı, keymaster1.h dosyasının 282 satırı
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) |
- Desteği sonlandırıldı:
- Ortak ve özel anahtar oluşturur. Döndürülen anahtar kümesi opaktır ve imzalama ve doğrulama için daha sonra sağlanmalıdır.
Döndürülen değer: Başarılı olduğunda 0, aksi takdirde 0'dan küçük bir hata kodu.
Tanımı, keymaster1.h dosyasının 56. satırı
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) |
Belirtilen anahtarın özelliklerini döndürür veya key_blob geçersizse KM_ERROR_INVALID_KEY_BLOB değerini döndürür (uygulamalar, anahtarın bütünlüğünü tamamen doğrulamalıdır). client_id ve app_data, anahtar oluşturulurken veya içe aktarılırken sağlanan kimlik ve veriler olmalıdır. Aksi takdirde, KM_TAG_APPLICATION_ID ve/veya KM_TAG_APPLICATION_DATA oluşturulma sırasında sağlanmadıysa boş olmalıdır. Bu değerler, döndürülen özelliklere dahil edilmez. Çağıran, ayrılan özellikler nesnesinin sahipliğini üstlenir. Bu nesne, keymaster_free_characteristics() ile ayrılmalıdır.
KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA parametrelerinin hiçbir zaman döndürülmediğini unutmayın.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] key_blob Özelliklerin alınacağı anahtar. [in] client_id İstemci kimliği verileri veya ilişkili bir veri yoksa NULL. [in] app_id Uygulama verileri veya ilişkili veri yoksa NULL. [out] özellikler Temel özellikler.
Tanımı, keymaster1.h dosyasının 309 satırı
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) |
- Desteği sonlandırıldı:
- Bir anahtar çiftinin herkese açık anahtar bölümünü alır. Ortak anahtar, X.509 biçiminde (Java standardı) kodlanmış bayt dizisi olmalıdır.
Döndürülen değer: Başarılı olduğunda 0, aksi takdirde 0'dan küçük bir hata kodu. Hata durumunda x509_data ayrılmamalıdır.
Tanımı, keymaster1.h dosyasının 76. satırı içindedir.
keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **algorithms, size_t *algorithms_length) |
Desteklenen algoritmaları alır.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [out] algoritmalar Desteklenen algoritma dizisi. Çağıran, dizinin sahipliğini alır ve free() işlevini çağırarak diziyi serbest bırakmalıdır. [out] algorithms_length Uzunluğu algorithms
.
Tanımı, keymaster1.h dosyasının 133. satırı içindedir.
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) |
Belirtilen algoritma için desteklenen engelleme modlarını alır.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] algoritma Desteklenen modların döndürüleceği algoritma. [out] modlar Desteklenen mod dizisi. Çağıran, dizinin sahipliğini alır ve free() işlevini çağırarak diziyi serbest bırakmalıdır. [out] modes_length Uzunluğu modes
.
Tanımı, keymaster1.h dosyasının 149 satırı
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) |
Belirtilen algoritma için desteklenen özetleri alır. Çağıran, ayrılan dizinin sahipliğini üstlenir.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] algoritma Desteklenen özetlerin döndürüleceği algoritma. [out] özetler Özet dizisi desteklenir. Çağıran, dizinin sahipliğini alır ve free() işlevini çağırarak diziyi serbest bırakmalıdır. [out] digests_length Uzunluğu digests
.
keymaster1.h dosyasının 187. satırı için tanımı
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) |
Belirtilen algoritmanın anahtarları için desteklenen anahtar dışa aktarma biçimlerini alır. Çağıran, ayrılan dizinin sahipliğini üstlenir.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] algoritma Desteklenen biçimlerin döndürüleceği algoritma. [out] biçimler Desteklenen biçim dizisi. Çağıran, dizinin sahipliğini alır ve free() işlevini çağırarak diziyi serbest bırakmalıdır. [out] formats_length Uzunluğu formats
.
Tanımı, keymaster1.h dosyasının 224 satırı
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) |
Belirtilen algoritmanın anahtarları için desteklenen anahtar içe aktarma biçimlerini alır. Çağıran, ayrılan dizinin sahipliğini üstlenir.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] algoritma Desteklenen biçimlerin döndürüleceği algoritma. [out] biçimler Desteklenen biçim dizisi. Çağıran, dizinin sahipliğini alır ve free() işlevini çağırarak diziyi serbest bırakmalıdır. [out] formats_length Uzunluğu formats
.
Tanımı, keymaster1.h dosyasının 206 satırı
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) |
Belirtilen algoritma için desteklenen dolgu modlarını alır. Çağıran, ayrılan dizinin sahipliğini üstlenir.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] algoritma Desteklenen dolgu modlarının döndürüleceği algoritma. [out] modlar Desteklenen dolgu modları dizisi. Çağıran, dizinin sahipliğini alır ve free() işlevini çağırarak diziyi serbest bırakmalıdır. [out] modes_length Uzunluğu modes
.
Tanımı, keymaster1.h dosyasının 168. satırı içindedir.
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) |
Bir anahtarı veya anahtar çiftini içe aktararak bir anahtar blob'u ve/veya anahtarın açıklamasını döndürür.
Anahtar içe aktarma parametrelerinin çoğu, "params" içinde sağlanan anahtar yöneticisi etiketi/değer çiftleri olarak tanımlanır. Tam liste için keymaster_tag_t öğesine bakın. Yararlı anahtarların içe aktarılması için her zaman gereken 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. Belirtilmezse kullanıcının her kullanım için kimliğini doğrulaması gerekir.
Aşağıdaki etiketler belirtilmezse varsayılan değerleri alır:
- KM_TAG_KEY_SIZE, varsayılan olarak sağlanan anahtarın boyutuna ayarlanır.
- KM_TAG_RSA_PUBLIC_EXPONENT, varsayılan olarak sağlanan anahtardaki değere (RSA anahtarları için) ayarlanır.
Aşağıdaki etiketler belirtilemez; değerleri uygulama tarafından sağlanır.
- KM_TAG_ORIGIN,
- KM_TAG_ROLLBACK_RESISTANT,
- KM_TAG_CREATION_DATETIME
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] params İçe aktarılan anahtarı tanımlayan parametreler. [in] params_count params
içindeki girişlerin sayısıdır.[in] key_format key_data parametresindeki anahtar verilerinin biçimini belirtir. [out] key_blob Saydam olmayan anahtar blob'unu döndürmek için kullanılır. NULL olmamalıdır. Arayan, içerdiği key_material öğesinin sahipliğini üstlenir. [out] ö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ği üstlenir ve keymaster_free_characteristics() ile alanı ayırmalıdır. KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID ve KM_TAG_APPLICATION_DATA parametrelerinin hiçbir zaman döndürülmediğini unutmayın.
Tanımı, keymaster1.h dosyasının 357. satırı içinde bulabilirsiniz.
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) |
- Desteği sonlandırıldı:
- Genel ve özel anahtar çiftini içe aktarır. İçe aktarılan anahtarlar, DER kodlamalı PKCS#8 biçiminde (Java standardı) olur. Döndürülen anahtar kümesi opaktır ve daha sonra imzalama ve doğrulama için sağlanır.
Döndürülen değer: Başarılı olduğunda 0, aksi takdirde 0'dan küçük bir hata kodu.
Tanımı, keymaster1.h dosyasının 66. satırı içindedir.
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) |
- Desteği sonlandırıldı:
- Daha önce oluşturulmuş bir anahtar kümesini kullanarak verileri imzalar. Bu işlem için asimetrik anahtar veya gizli anahtar kullanılabilir.
Döndürülen değer: Başarılı olduğunda 0, aksi takdirde 0'dan küçük bir hata kodu.
Tanımı, keymaster1.h dosyasının 108 satırı
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) |
begin() ile başlatılan devam eden bir kriptografik işleme veri sağlar ve bu işlemden çıkış alabilir.
operation_handle geçersizse update() KM_ERROR_INVALID_OPERATION_HANDLE döndürülür.
update() veri arabelleğinde sağlanan verilerin tamamını tüketmeyebilir. update() *data_consumed içinde tüketilen miktarı döndürür. Arayan, kullanılmayan verileri sonraki bir çağrıda sağlamalıdır.
- Parametreler
-
[in] dev Anahtar yöneticisi cihaz yapısı. [in] operation_handle begin() tarafından döndürülen işlem mülkünü temsil eder. . [in] in_params İşlem için ek parametreler. AEAD modlarında bu, KM_TAG_ADDITIONAL_DATA'yı belirtmek için kullanılır. update() çağrısında birden fazla kez ek veri sağlanabileceğini ancak bunun yalnızca giriş verileri sağlanana kadar yapılabileceğini unutmayın. [in] giriş begin() çağrısında belirlenen parametrelere göre işlenecek veriler. update() işlevinin, sağlanan verilerin tamamını kullanabileceğini veya kullanamayacağını unutmayın. input_consumed
bölümüne göz atın.[out] input_consumed update() tarafından tüketilen veri miktarı . Bu tutar, sağlanan tutardan azsa arayan, kalan tutarı update() çağrısında sağlamalıdır. [out] out_params Çıkış parametreleri. İşlemden ek veri döndürmek için kullanılır. Çağırıcı, çıkış parametreleri dizisinin sahipliğini alır ve keymaster_free_param_set() ile diziyi serbest bırakmalıdır. Çıkış parametresi beklenmiyorsa out_params NULL olarak ayarlanabilir. out_params NULL ise ve çıkış parametreleri oluşturulursa begin() KM_ERROR_OUTPUT_PARAMETER_NULL değerini döndürür. [out] output Varsa çıkış verileri. Arayan, ayrılan arabelleğin sahipliğini üstlenir. output NULL olmamalıdır.
update() işlevinin herhangi bir çıkış sağlamayabileceğini unutmayın. Bu durumda output->data_length sıfır olur ve output->data NULL veya sıfır uzunlukta olabilir (bu nedenle, çağıran her zaman free() işlevini çağırmalıdır).
Tanımı, keymaster1.h dosyasının 495. satırı içindedir.
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) |
- Desteği sonlandırıldı:
- Anahtar kümesiyle imzalanan verileri doğrular. Bu işlem için asimetrik anahtar veya gizli anahtar kullanılabilir.
Döndürülen değer: Doğrulama başarılıysa 0 veya 0'dan küçük bir hata kodu.
Tanımı, keymaster1.h dosyasının 118. satırı içindedir.
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ keymaster1.h