संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

keymaster1_device संरचना संदर्भ

keymaster1_device संरचना संदर्भ

#include < keymaster1.h >

डेटा फ़ील्ड

संरचना hw_device_t सामान्य
uint32_t क्लाइंट_संस्करण
uint32_t झंडे
शून्य * संदर्भ
इंट (* 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)
इंट (* 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)
इंट (* 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)
इंट (* delete_keypair )(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
इंट (* delete_all )(const struct keymaster1_device *dev)
इंट (* 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)
इंट (* 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 sign_data_length, const uint8_t *signature, const size_t सिग्नेचर_लेंथ)
keymaster_error_t (* get_supported_algorithms )(const struct keymaster1_device *dev, keymaster_algorithm_t **एल्गोरिदम, size_t *algorithms_length)
keymaster_error_t (* get_supported_block_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t एल्गोरिदम, keymaster_purpose_t उद्देश्य, keymaster_block_mode_t **मोड, size_t *modes_length)
keymaster_error_t (* get_supported_padding_modes )(const struct keymaster1_device *dev, keymaster_algorithm_t एल्गोरिदम, keymaster_purpose_t उद्देश्य, keymaster_padding_t **मोड, size_t *modes_length)
keymaster_error_t (* get_supported_digests )(const struct keymaster1_device *dev, keymaster_algorithm_t एल्गोरिदम, keymaster_purpose_t उद्देश्य, keymaster_digest_t **digests, size_t *digests_length)
keymaster_error_t (* get_supported_import_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t एल्गोरिदम, keymaster_key_format_t **formats, size_t *formats_length)
keymaster_error_t (* get_supported_export_formats )(const struct keymaster1_device *dev, keymaster_algorithm_t एल्गोरिदम, 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 **विशेषताएं)
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 **विशेषताएं)
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 *key)
keymaster_error_t (* delete_all_keys )(const struct keymaster1_device *dev)
keymaster_error_t (* start )(const struct keymaster1_device *dev, 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 (* अपडेट )(कॉन्स्ट स्ट्रक्चर कीमास्टर1_डिवाइस *देव, कीमास्टर_ऑपरेशन_हैंडल_टी ऑपरेशन_हैंडल , कॉन्स्ट कीमास्टर_की_परम_सेट_टी *इन_परम्स, कॉन्स्ट कीमास्टर_ब्लॉब_टी *इनपुट, साइज_टी *इनपुट_कंस्यूम्ड, कीमास्टर_की_परम_सेट_टी *आउट_परम्स, * आउटपुट_ब्लॉब_टी )
keymaster_error_t (* फिनिश ) (कॉन्स्ट स्ट्रक्चर कीमास्टर 1_डिवाइस * देव, कीमास्टर_ऑपरेशन_हैंडल_टी ऑपरेशन_हैंडल , कॉन्स्ट कीमास्टर_की_परम_सेट_टी * इन_परम्स, कॉन्स्ट कीमास्टर_ब्लॉब_टी * सिग्नेचर, कीमास्टर_की_परम_सेट_टी * आउट_परम्स, कीमास्टर_ब्लॉब_टी *आउटपुट)
keymaster_error_t (* abort )(const struct keymaster1_device *dev, keymaster_operation_handle_t Operation_handle )

विस्तृत विवरण

Keymaster1 डिवाइस परिभाषा

फ़ाइल keymaster1.h की लाइन 28 पर परिभाषा।

फील्ड दस्तावेज़ीकरण

सभी आंतरिक संसाधनों को मुक्त करते हुए और ऑपरेशन_हैंडल को अमान्य करते हुए, एक क्रिप्टोग्राफिक operation_handle को शुरू () से शुरू किया गया।

फ़ाइल keymaster1.h की लाइन 531 पर परिभाषा।

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

कीमास्टर द्वारा उपयोग किए जाने वाले RNG में एन्ट्रापी जोड़ता है। इस पद्धति के माध्यम से जोड़ी गई एन्ट्रापी की गारंटी है कि वह इस्तेमाल किए गए एन्ट्रापी का एकमात्र स्रोत नहीं है, और मिक्सिंग फ़ंक्शन को सुरक्षित होना आवश्यक है, इस अर्थ में कि यदि आरएनजी को किसी भी डेटा के साथ (किसी भी स्रोत से) सीड किया जाता है, तो हमलावर भविष्यवाणी नहीं कर सकता (या नियंत्रण), तो RNG आउटपुट यादृच्छिक से अप्रभेद्य है। इस प्रकार, यदि किसी स्रोत से एन्ट्रापी अच्छी है, तो आउटपुट अच्छा होगा।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] जानकारी यादृच्छिक डेटा में मिलाया जाना है।
[में] डेटा_लंबाई data की लंबाई।

फ़ाइल keymaster1.h की लाइन 242 पर परिभाषा।

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

निर्दिष्ट कुंजी का उपयोग करके एक क्रिप्टोग्राफ़िक ऑपरेशन शुरू करता है। यदि सब ठीक है, तो start () KM_ERROR_OK लौटाएगा और एक ऑपरेशन हैंडल बनाएगा जिसे अपडेट() , खत्म() या abort() पर बाद की कॉलों में पास किया जाना चाहिए।

यह महत्वपूर्ण है कि कीमास्टर कार्यान्वयन को किसी भी आंतरिक संचालन स्थिति को साफ करने की अनुमति देने के लिए प्रत्येक कॉल को start () या abort() पर बाद की कॉल के साथ जोड़ा जाए। ऐसा करने में विफलता आंतरिक स्थिति स्थान या अन्य आंतरिक संसाधनों को लीक कर सकती है और अंततः प्रारंभ() को KM_ERROR_TOO_MANY_OPERATIONS वापस करने का कारण बन सकती है जब यह संचालन के लिए स्थान से बाहर हो जाती है। KM_ERROR_OK के अलावा start () , update() या finish() से कोई भी परिणाम परोक्ष रूप से ऑपरेशन को रोक देता है, इस स्थिति में abort() को कॉल करने की आवश्यकता नहीं है (और KM_ERROR_INVALID_OPERATION_HANDLE को कॉल करने पर वापस कर देगा)।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] उद्देश्य संचालन का उद्देश्य, KM_PURPOSE_ENCRYPT, KM_PURPOSE_DECRYPT, KM_PURPOSE_SIGN या KM_PURPOSE_VERIFY में से एक। ध्यान दें कि AEAD मोड के लिए, एन्क्रिप्शन और डिक्रिप्शन का अर्थ क्रमशः हस्ताक्षर और सत्यापन है, लेकिन इसे KM_PURPOSE_ENCRYPT और KM_PURPOSE_DECRYPT के रूप में निर्दिष्ट किया जाना चाहिए।
[में] चाभी ऑपरेशन के लिए उपयोग की जाने वाली कुंजी। key का उद्देश्य purpose के अनुकूल होना चाहिए और इसकी सभी उपयोग आवश्यकताओं को पूरा किया जाना चाहिए, या start() एक उपयुक्त त्रुटि कोड लौटाएगा।
[में] in_params ऑपरेशन के लिए अतिरिक्त पैरामीटर। यह आमतौर पर KM_TAG_AUTH_TOKEN के साथ प्रमाणीकरण डेटा प्रदान करने के लिए उपयोग किया जाता है। यदि KM_TAG_APPLICATION_ID या KM_TAG_APPLICATION_DATA पीढ़ी के दौरान प्रदान किए गए थे, तो उन्हें यहां प्रदान किया जाना चाहिए, अन्यथा KM_ERROR_INVALID_KEY_BLOB के साथ संचालन विफल हो जाएगा। KM_TAG_CALLER_NONCE से जेनरेट की गई कुंजियों पर गैर या IV की आवश्यकता वाले संचालन के लिए, in_params में एक टैग KM_TAG_NONCE हो सकता है। AEAD संचालन के लिए KM_TAG_CHUNK_SIZE यहां निर्दिष्ट है।
[बाहर] out_params आउटपुट पैरामीटर। ऑपरेशन इनिशियलाइज़ेशन से अतिरिक्त डेटा वापस करने के लिए उपयोग किया जाता है, विशेष रूप से IV या नॉन को ऑपरेशंस से वापस करने के लिए जो IV या नॉन उत्पन्न करता है। कॉलर आउटपुट पैरामीटर सरणी का स्वामित्व लेता है और इसे keymaster_free_param_set() से मुक्त करना होगा। यदि कोई आउटपुट पैरामीटर अपेक्षित नहीं है, तो out_params को NULL पर सेट किया जा सकता है। यदि out_params NULL है, और आउटपुट पैरामीटर उत्पन्न होते हैं, तो start () KM_ERROR_OUTPUT_PARAMETER_NULL लौटाएगा।
[बाहर] ऑपरेशन_हैंडल नव निर्मित ऑपरेशन हैंडल जिसे अपडेट() , फिनिश() या abort() पर पास किया जाना चाहिए। यदि ऑपरेशन_हैंडल शून्य है, तो प्रारंभ () KM_ERROR_OUTPUT_PARAMETER_NULL लौटाएगा।

फ़ाइल keymaster1.h की लाइन 451 पर परिभाषा।

uint32_t क्लाइंट_संस्करण

यह बहिष्कृत है। इसके बजाय keymaster_module आरंभीकरण में नए "module_api_version" और "hal_api_version" फ़ील्ड का उपयोग करें।

फ़ाइल keymaster1.h की लाइन 41 पर परिभाषा।

संरचना hw_device_t आम

कीमास्टर डिवाइस के सामान्य तरीके। यह keymaster_device का पहला सदस्य होना चाहिए क्योंकि इस संरचना के उपयोगकर्ता एक hw_device_t को keymaster_device पॉइंटर पर ऐसे संदर्भों में कास्ट करेंगे जहां यह ज्ञात है कि hw_device_t एक keymaster_device का संदर्भ देता है।

फ़ाइल keymaster1.h की लाइन 35 पर परिभाषा।

शून्य* प्रसंग

फ़ाइल keymaster1.h की लाइन 48 पर परिभाषा।

int(* delete_all)(const struct keymaster1_device *dev)
पदावनत:
हार्डवेयर कीस्टोर में सभी कुंजियों को हटाता है। कीस्टोर पूरी तरह से रीसेट होने पर उपयोग किया जाता है।

यह फ़ंक्शन वैकल्पिक है और इसे लागू नहीं होने पर NULL पर सेट किया जाना चाहिए।

सफलता पर 0 देता है या 0 से कम त्रुटि कोड देता है।

फ़ाइल keymaster1.h की लाइन 100 पर परिभाषा।

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

हार्डवेयर कीस्टोर में सभी कुंजियों को हटाता है। कीस्टोर पूरी तरह से रीसेट होने पर उपयोग किया जाता है। इस फ़ंक्शन को कॉल करने के बाद किसी भी ऑपरेशन के लिए पहले से उत्पन्न या आयातित कुंजी ब्लॉब्स का उपयोग करना असंभव होगा।

यह फ़ंक्शन वैकल्पिक है और इसे लागू नहीं होने पर NULL पर सेट किया जाना चाहिए।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।

फ़ाइल keymaster1.h की लाइन 407 पर परिभाषा।

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

कुंजी ब्लॉब से संबद्ध कुंजी, या कुंजी जोड़ी को हटाता है। इस फ़ंक्शन को कॉल करने के बाद किसी अन्य ऑपरेशन के लिए कुंजी का उपयोग करना असंभव होगा। ट्रस्ट की विदेशी जड़ों से चाबियों पर लागू किया जा सकता है (कुंजी विश्वास की वर्तमान जड़ के तहत प्रयोग योग्य नहीं है)।

यह फ़ंक्शन वैकल्पिक है और इसे लागू नहीं होने पर NULL पर सेट किया जाना चाहिए।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] चाभी हटाई जाने वाली कुंजी।

फ़ाइल keymaster1.h की लाइन 395 पर परिभाषा।

int(* delete_keypair)(const struct keymaster1_device *dev, const uint8_t *key_blob, const size_t key_blob_length)
पदावनत:
कुंजी बूँद से संबद्ध कुंजी युग्म को हटाता है।

यह फ़ंक्शन वैकल्पिक है और इसे लागू नहीं होने पर NULL पर सेट किया जाना चाहिए।

सफलता पर 0 देता है या 0 से कम त्रुटि कोड देता है।

फ़ाइल keymaster1.h की लाइन 88 पर परिभाषा।

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_export_t)

एक सार्वजनिक कुंजी निर्यात करता है, निर्दिष्ट प्रारूप में एक बाइट सरणी लौटाता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] निर्यात_प्रारूप कुंजी निर्यात करने के लिए उपयोग किया जाने वाला प्रारूप।
[में] key_to_export निर्यात करने की कुंजी।
[बाहर] निर्यात जानकारी निर्यात की गई प्रमुख सामग्री। कॉलर स्वामित्व ग्रहण करता है।
[बाहर] निर्यात_डेटा_लंबाई export_data की लंबाई।

फ़ाइल keymaster1.h की लाइन 377 पर परिभाषा।

keymaster_error_t (* समाप्त)(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)

एक क्रिप्टोग्राफिक ऑपरेशन को अंतिम रूप देता है जो start () से शुरू होता है और ऑपरेशन_हैंडल को अमान्य operation_handle

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] ऑपरेशन_हैंडल ऑपरेशन हैंडल start () द्वारा लौटाया गया। यह हैंडल अमान्य हो जाएगा।
[में] पैरामीटर ऑपरेशन के लिए अतिरिक्त पैरामीटर। AEAD मोड के लिए, इसका उपयोग KM_TAG_ADDITIONAL_DATA को निर्दिष्ट करने के लिए किया जाता है, लेकिन केवल तभी जब अपडेट() को कोई इनपुट डेटा प्रदान नहीं किया गया हो।
[में] हस्ताक्षर यदि प्रारंभ () कॉल में निर्दिष्ट उद्देश्य KM_PURPOSE_VERIFY था, तो सत्यापित किया जाने वाला हस्ताक्षर।
[बाहर] उत्पादन आउटपुट डेटा, यदि कोई हो। कॉलर आवंटित बफर का स्वामित्व ग्रहण करता है।

यदि ऑपरेशन समाप्त किया जा रहा है एक हस्ताक्षर सत्यापन या एईएडी-मोड डिक्रिप्शन और सत्यापन विफल रहता है तो खत्म() KM_ERROR_VERIFICATION_FAILED लौटाएगा।

फ़ाइल keymaster1.h की लाइन 521 पर परिभाषा।

uint32_t झंडे

keymaster0_devices::flags के लिए keymaster_common.h . में परिभाषित फ्लैग देखें

फ़ाइल keymaster1.h की लाइन 46 पर परिभाषा।

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 **विशेषताएं)

एक कुंजी, या कुंजी जोड़ी उत्पन्न करता है, एक कुंजी ब्लॉब और/या कुंजी का विवरण लौटाता है।

कुंजी जनरेशन पैरामीटर को params टैग/वैल्यू पेयर के रूप में परिभाषित किया गया है, जो पैराम्स में दिया गया है। पूरी सूची के लिए keymaster_tag_t देखें। उपयोगी कुंजियों के निर्माण के लिए हमेशा आवश्यक कुछ मान हैं:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; तथा
  • (KM_TAG_USER_SECURE_ID और KM_TAG_USER_AUTH_TYPE) या KM_TAG_NO_AUTH_REQUIRED।

KM_TAG_AUTH_TIMEOUT को आम तौर पर तब तक निर्दिष्ट किया जाना चाहिए जब तक कि KM_TAG_NO_AUTH_REQUIRED मौजूद न हो, या उपयोगकर्ता को प्रत्येक उपयोग के लिए प्रमाणित करना होगा।

एल्गोरिदम के लिए KM_TAG_BLOCK_MODE, KM_TAG_PADDING, KM_TAG_MAC_LENGTH और KM_TAG_DIGEST निर्दिष्ट किए जाने चाहिए, जिनकी उन्हें आवश्यकता होती है।

निम्नलिखित टैग निर्दिष्ट नहीं हो सकते हैं; उनके मूल्य कार्यान्वयन द्वारा प्रदान किए जाएंगे।

  • केएम_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] पैरामीटर प्रमुख पीढ़ी के मापदंडों की सरणी।
[में] पैराम्स_काउंट params की लंबाई।
[बाहर] key_blob उत्पन्न कुंजी लौटाता है। key_blob NULL नहीं होना चाहिए। कॉलर स्वामित्व key_blob->key_material मानता है और इसे मुक्त() करना चाहिए।
[बाहर] विशेषताएँ गैर-शून्य होने पर उत्पन्न की गई कुंजी की विशेषताओं को लौटाता है। यदि गैर-नल, कॉलर स्वामित्व ग्रहण करता है और keymaster_free_characteristics() से निपटना होगा। ध्यान दें कि KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID और KM_TAG_APPLICATION_DATA कभी वापस नहीं किए जाते हैं।

फ़ाइल keymaster1.h की लाइन 282 पर परिभाषा।

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)
पदावनत:
एक सार्वजनिक और निजी कुंजी उत्पन्न करता है। लौटाया गया की-ब्लॉब अपारदर्शी है और बाद में इसे हस्ताक्षर और सत्यापन के लिए प्रदान किया जाना चाहिए।

रिटर्न: सफलता पर 0 या 0 से कम त्रुटि कोड।

फ़ाइल keymaster1.h की लाइन 56 पर परिभाषा।

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 **विशेषताएं)

यदि key_blob अमान्य है, तो निर्दिष्ट कुंजी, या KM_ERROR_INVALID_KEY_BLOB की विशेषताओं को लौटाता है (कार्यान्वयन को कुंजी की अखंडता को पूरी तरह से सत्यापित करना चाहिए)। client_id और app_data कुंजी उत्पन्न या आयात होने पर प्रदान किया गया आईडी और डेटा होना चाहिए, या खाली होना चाहिए यदि KM_TAG_APPLICATION_ID और/या KM_TAG_APPLICATION_DATA पीढ़ी के दौरान प्रदान नहीं किए गए थे। वे मान लौटाई गई विशेषताओं में शामिल नहीं हैं। कॉलर आवंटित विशेषता ऑब्जेक्ट का स्वामित्व ग्रहण करता है, जिसे keymaster_free_characteristics() के साथ निपटाया जाना चाहिए।

ध्यान दें कि KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID और KM_TAG_APPLICATION_DATA कभी वापस नहीं किए जाते हैं।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] key_blob से विशेषताओं को पुनः प्राप्त करने की कुंजी।
[में] ग्राहक ID क्लाइंट आईडी डेटा, या NULL यदि कोई संबद्ध नहीं है।
[में] app_id ऐप डेटा, या NULL यदि कोई संबद्ध नहीं है।
[बाहर] विशेषताएँ प्रमुख विशेषताएं।

फ़ाइल keymaster1.h की लाइन 309 पर परिभाषा।

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)
पदावनत:
कुंजी जोड़ी का सार्वजनिक कुंजी भाग प्राप्त करें। सार्वजनिक कुंजी X.509 प्रारूप (जावा मानक) एन्कोडेड बाइट सरणी में होनी चाहिए।

रिटर्न: सफलता पर 0 या 0 से कम त्रुटि कोड। त्रुटि पर, x509_data आवंटित नहीं किया जाना चाहिए।

फ़ाइल keymaster1.h की लाइन 76 पर परिभाषा।

keymaster_error_t (* get_supported_algorithms)(const struct keymaster1_device *dev, keymaster_algorithm_t **एल्गोरिदम, size_t *algorithms_length)

एल्गोरिदम समर्थित हो जाता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[बाहर] एल्गोरिदम समर्थित एल्गोरिदम की सरणी। कॉलर सरणी का स्वामित्व लेता है और इसे मुक्त () करना चाहिए।
[बाहर] एल्गोरिदम_लंबाई algorithms की लंबाई।

फ़ाइल keymaster1.h की लाइन 133 पर परिभाषा।

keymaster_error_t (* get_supported_block_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t उद्देश्य, keymaster_block_mode_t **modes, size_t *modes_length)

निर्दिष्ट एल्गोरिथम के लिए समर्थित ब्लॉक मोड प्राप्त करता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] कलन विधि एल्गोरिथम जिसके लिए समर्थित मोड लौटाए जाएंगे।
[बाहर] मोड समर्थित मोड की सरणी। कॉलर सरणी का स्वामित्व लेता है और इसे मुक्त () करना चाहिए।
[बाहर] मोड_लंबाई modes की लंबाई।

फ़ाइल keymaster1.h की लाइन 149 पर परिभाषा।

keymaster_error_t (* get_supported_digests)(const struct keymaster1_device *dev, keymaster_algorithm_t algorithm, keymaster_purpose_t उद्देश्य, keymaster_digest_t **digests, size_t *digests_length)

निर्दिष्ट एल्गोरिथम के लिए डाइजेस्ट का समर्थन करता है। कॉलर आवंटित सरणी का स्वामित्व ग्रहण करता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] कलन विधि एल्गोरिथम जिसके लिए समर्थित डाइजेस्ट लौटाए जाएंगे।
[बाहर] डाइजेस्ट डाइजेस्ट का ऐरे समर्थित है। कॉलर सरणी का स्वामित्व लेता है और इसे मुक्त () करना चाहिए।
[बाहर] डाइजेस्ट_लम्बाई digests की लंबाई।

फ़ाइल keymaster1.h की लाइन 187 पर परिभाषा।

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)

निर्दिष्ट एल्गोरिथम की कुंजियों के लिए समर्थित प्रमुख निर्यात प्रारूप प्राप्त करता है। कॉलर आवंटित सरणी का स्वामित्व ग्रहण करता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] कलन विधि एल्गोरिथम जिसके लिए समर्थित प्रारूप वापस किए जाएंगे।
[बाहर] प्रारूपों समर्थित स्वरूपों की सरणी। कॉलर सरणी का स्वामित्व लेता है और इसे मुक्त () करना चाहिए।
[बाहर] प्रारूप_लंबाई formats की लंबाई।

फ़ाइल keymaster1.h की लाइन 224 पर परिभाषा।

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)

निर्दिष्ट एल्गोरिथम की कुंजियों के लिए समर्थित प्रमुख आयात प्रारूप प्राप्त करता है। कॉलर आवंटित सरणी का स्वामित्व ग्रहण करता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] कलन विधि एल्गोरिथम जिसके लिए समर्थित प्रारूप वापस किए जाएंगे।
[बाहर] प्रारूपों समर्थित स्वरूपों की सरणी। कॉलर सरणी का स्वामित्व लेता है और इसे मुक्त () करना चाहिए।
[बाहर] प्रारूप_लंबाई formats की लंबाई।

फ़ाइल keymaster1.h की लाइन 206 पर परिभाषा।

keymaster_error_t (* get_supported_padding_modes)(const struct keymaster1_device *dev, keymaster_algorithm_t एल्गोरिथम, कीमास्टर_प्रयोजन_t उद्देश्य, keymaster_padding_t **मोड, size_t *modes_length)

निर्दिष्ट एल्गोरिथम के लिए समर्थित पैडिंग मोड प्राप्त करता है। कॉलर आवंटित सरणी का स्वामित्व ग्रहण करता है।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] कलन विधि एल्गोरिथम जिसके लिए समर्थित पैडिंग मोड लौटाए जाएंगे।
[बाहर] मोड पैडिंग मोड की सरणी समर्थित है। कॉलर सरणी का स्वामित्व लेता है और इसे मुक्त () करना चाहिए।
[बाहर] मोड_लंबाई modes की लंबाई।

फ़ाइल keymaster1.h की पंक्ति 168 पर परिभाषा।

एक कुंजी, या कुंजी जोड़ी आयात करता है, एक कुंजी ब्लॉब और/या कुंजी का विवरण लौटाता है।

अधिकांश प्रमुख आयात पैरामीटर को "पैराम्स" में प्रदान किए गए कीमास्टर टैग/मान जोड़े के रूप में परिभाषित किया गया है। पूरी सूची के लिए keymaster_tag_t देखें। उपयोगी कुंजियों के आयात के लिए हमेशा आवश्यक मान हैं:

  • KM_TAG_ALGORITHM;
  • KM_TAG_PURPOSE; तथा
  • (KM_TAG_USER_SECURE_ID और KM_TAG_USER_AUTH_TYPE) या KM_TAG_NO_AUTH_REQUIRED।

KM_TAG_AUTH_TIMEOUT को आम तौर पर निर्दिष्ट किया जाना चाहिए। यदि निर्दिष्ट नहीं है, तो उपयोगकर्ता को प्रत्येक उपयोग के लिए प्रमाणित करना होगा।

अनिर्दिष्ट होने पर निम्नलिखित टैग डिफ़ॉल्ट मान लेंगे:

  • KM_TAG_KEY_SIZE प्रदान की गई कुंजी के आकार के अनुसार डिफ़ॉल्ट होगा।
  • KM_TAG_RSA_PUBLIC_EXPONENT प्रदान की गई कुंजी (RSA कुंजियों के लिए) में मान के लिए डिफ़ॉल्ट होगा

निम्नलिखित टैग निर्दिष्ट नहीं हो सकते हैं; उनके मूल्य कार्यान्वयन द्वारा प्रदान किए जाएंगे।

  • केएम_TAG_ORIGIN,
  • KM_TAG_ROLLBACK_RESISTANT,
  • KM_TAG_CREATION_DATETIME
मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] पैरामीटर आयातित कुंजी को परिभाषित करने वाले पैरामीटर।
[में] पैराम्स_काउंट params में प्रविष्टियों की संख्या।
[में] key_format key_data में मुख्य डेटा के प्रारूप को निर्दिष्ट करता है।
[बाहर] key_blob अपारदर्शी कुंजी बूँद को वापस करने के लिए उपयोग किया जाता है। गैर-शून्य होना चाहिए। कॉलर निहित key_material का स्वामित्व ग्रहण करता है।
[बाहर] विशेषताएँ आयातित कुंजी की विशेषताओं को वापस करने के लिए उपयोग किया जाता है। NULL हो सकता है, जिस स्थिति में कोई विशेषताएँ वापस नहीं की जाएंगी। यदि गैर-नल, कॉलर स्वामित्व ग्रहण करता है और keymaster_free_characteristics() से निपटना होगा। ध्यान दें कि KM_TAG_ROOT_OF_TRUST, KM_TAG_APPLICATION_ID और KM_TAG_APPLICATION_DATA कभी वापस नहीं किए जाते हैं।

फ़ाइल keymaster1.h की लाइन 357 पर परिभाषा।

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)
पदावनत:
एक सार्वजनिक और निजी कुंजी जोड़ी आयात करता है। आयातित कुंजियाँ DER एन्कोडिंग (जावा मानक) के साथ PKCS#8 प्रारूप में होंगी। लौटाया गया की-ब्लॉब अपारदर्शी है और बाद में हस्ताक्षर और सत्यापन के लिए प्रदान किया जाएगा।

रिटर्न: सफलता पर 0 या 0 से कम त्रुटि कोड।

फ़ाइल keymaster1.h की लाइन 66 पर परिभाषा।

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)
पदावनत:
पहले उत्पन्न की-ब्लॉब का उपयोग करके डेटा पर हस्ताक्षर करता है। यह या तो असममित कुंजी या गुप्त कुंजी का उपयोग कर सकता है।

रिटर्न: सफलता पर 0 या 0 से कम त्रुटि कोड।

फ़ाइल keymaster1.h की लाइन 108 पर परिभाषा।

keymaster_error_t (* अद्यतन)(const struct keymaster1_device *dev, keymaster_operation_handle_t Operation_handle , const keymaster_key_param_set_t *in_params, const keymaster_blob_t *इनपुट, size_t *input_consumed, keymaster_key_param_set_t *__ blob_t *output)

start () से शुरू होने वाले चल रहे क्रिप्टोग्राफ़िक ऑपरेशन को डेटा प्रदान करता है, और संभवतः आउटपुट प्राप्त करता है।

यदि ऑपरेशन_हैंडल अमान्य है, तो अपडेट () KM_ERROR_INVALID_OPERATION_HANDLE लौटाएगा।

अद्यतन () डेटा बफ़र में प्रदान किए गए सभी डेटा का उपभोग नहीं कर सकता है। अद्यतन() *data_consumed में खपत की गई राशि वापस कर देगा। कॉल करने वाले को बाद की कॉल में बिना खपत वाला डेटा प्रदान करना चाहिए।

मापदंडों
[में] देव कीमास्टर डिवाइस संरचना।
[में] ऑपरेशन_हैंडल ऑपरेशन हैंडल start () द्वारा लौटाया गया।
[में] in_params ऑपरेशन के लिए अतिरिक्त पैरामीटर। AEAD मोड के लिए, इसका उपयोग KM_TAG_ADDITIONAL_DATA निर्दिष्ट करने के लिए किया जाता है। ध्यान दें कि अद्यतन() पर एकाधिक कॉल में अतिरिक्त डेटा प्रदान किया जा सकता है, लेकिन केवल इनपुट डेटा प्रदान किए जाने तक।
[में] इनपुट डेटा को संसाधित किया जाना है, कॉल में स्थापित मापदंडों के अनुसार start() । ध्यान दें कि अद्यतन() प्रदान किए गए सभी डेटा का उपभोग कर सकता है या नहीं भी कर सकता है। input_consumed देखें।
[बाहर] input_consumed अद्यतन() द्वारा उपभोग किए गए डेटा की मात्रा। यदि यह प्रदान की गई राशि से कम है, तो कॉलर को बाद की कॉल में अपडेट() पर शेष प्रदान करना चाहिए।
[बाहर] out_params आउटपुट पैरामीटर। ऑपरेशन से अतिरिक्त डेटा वापस करने के लिए उपयोग किया जाता है कॉलर आउटपुट पैरामीटर सरणी का स्वामित्व लेता है और इसे keymaster_free_param_set() से मुक्त करना होगा। यदि कोई आउटपुट पैरामीटर अपेक्षित नहीं है, तो out_params को NULL पर सेट किया जा सकता है। यदि out_params NULL है, और आउटपुट पैरामीटर उत्पन्न होते हैं, तो start () KM_ERROR_OUTPUT_PARAMETER_NULL लौटाएगा।
[बाहर] उत्पादन आउटपुट डेटा, यदि कोई हो। कॉलर आवंटित बफर का स्वामित्व ग्रहण करता है। आउटपुट NULL नहीं होना चाहिए।

ध्यान दें कि अद्यतन() कोई आउटपुट प्रदान नहीं कर सकता है, इस मामले में आउटपुट-> डेटा_लेंथ शून्य होगा, और आउटपुट-> डेटा या तो शून्य या शून्य-लंबाई हो सकता है (इसलिए कॉलर को हमेशा मुक्त() होना चाहिए)।

फ़ाइल keymaster1.h की लाइन 495 पर परिभाषा।

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_tsigned_data_length, const uint8_t *signature, const size_t Signature_length)
पदावनत:
कुंजी-ब्लॉब के साथ हस्ताक्षरित डेटा सत्यापित करता है। यह या तो असममित कुंजी या गुप्त कुंजी का उपयोग कर सकता है।

रिटर्न: सफल सत्यापन पर 0 या 0 से कम त्रुटि कोड।

फ़ाइल keymaster1.h की लाइन 118 पर परिभाषा।


इस संरचना के लिए प्रलेखन निम्न फ़ाइल से उत्पन्न किया गया था: