क्रिप्टो - प्लैटफ़ॉर्म

इस मॉड्यूल में क्रिप्टो के लिए प्लैटफ़ॉर्म ऐब्स्ट्रैक्शन शामिल है.

खास जानकारी

गिनती

anonymous enum{
  OT_CRYPTO_KEY_USAGE_NONE = 0,
  OT_CRYPTO_KEY_USAGE_EXPORT = 1 << 0,
  OT_CRYPTO_KEY_USAGE_ENCRYPT = 1 << 1,
  OT_CRYPTO_KEY_USAGE_DECRYPT = 1 << 2,
  OT_CRYPTO_KEY_USAGE_SIGN_HASH = 1 << 3,
  OT_CRYPTO_KEY_USAGE_VERIFY_HASH = 1 << 4
}
enum
इस्तेमाल से जुड़े मुख्य फ़्लैग के बारे में बताता है.
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256,
  OT_CRYPTO_KEY_ALG_ECDSA
}
enum
इसकी मदद से, प्रमुख एल्गोरिदम तय किए जाते हैं.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
मुख्य स्टोरेज टाइप के बारे में बताता है.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
कुंजी टाइप के बारे में बताता है.

टाइपडीफ़

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
इस डेटा टाइप से, मुख्य रेफ़रंस के बारे में पता चलता है.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
SHA-256 हैश को दिखाता है.

वैरिएबल

OT_TOOL_PACKED_END

फ़ंक्शन

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
दिए गए डेटा को एन्क्रिप्ट (सुरक्षित) करें.
otPlatCryptoAesFree(otCryptoContext *aContext)
AES कॉन्टेक्स्ट से बचें.
otPlatCryptoAesInit(otCryptoContext *aContext)
AES ऑपरेशन शुरू करें.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
AES ऑपरेशन के लिए कुंजी सेट करें.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
PSA ITS में सेव की गई कुंजी को नष्ट करना.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
पास की गई मुख्य पहचान फ़ाइल से, उससे जुड़ी सार्वजनिक कुंजी पाएं.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
पहचान फ़ाइल पास होने पर, ईसीडीएसए की नई कुंजी का जोड़ा जनरेट और इंपोर्ट करें.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
आउटपुट बफ़र को नए ECDSA बटन की मदद से जनरेट करें और उसे पॉप्यूलेट करें.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
इनपुट के कॉन्टेक्स्ट से, अपनी सार्वजनिक कुंजी डाउनलोड करें.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
हैश किए गए मैसेज के लिए, ईसीडीएसए हस्ताक्षर कैलकुलेट करने के लिए इनपुट कॉन्टेक्स्ट से निजी कुंजी का इस्तेमाल करें.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
पास की गई कुंजी रेफ़रंस का इस्तेमाल करके, हैश किए गए मैसेज के लिए ईसीडीएसए हस्ताक्षर कैलकुलेट करें.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
हैश किए गए मैसेज के ईसीडीएसए हस्ताक्षर की पुष्टि करने के लिए, इनपुट के कॉन्टेक्स्ट में दी गई कुंजी का इस्तेमाल करें.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
हैश किए गए मैसेज के ईसीडीएसए हस्ताक्षर की पुष्टि करने के लिए, keyref का इस्तेमाल करें.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
PSA ITS में सेव की गई किसी कुंजी को एक्सपोर्ट करें.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
देखें कि पास किए गए कुंजी रेफ़रंस में, PSA ITS से जुड़ी कुंजी है या नहीं.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
HKDF कॉन्टेक्स्ट को शुरू न करें.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
HKDF बड़ा करें चरण पूरा करें.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
HKDF एक्सट्रैक्ट करने का चरण पूरा करें.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
HKDF कॉन्टेक्स्ट शुरू करें.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
HMAC कार्रवाई शुरू न करें.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
एचएमएसी कार्रवाई पूरी करें.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
HMAC कार्रवाई शुरू करें.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
एचएमएसी कार्रवाई शुरू करें.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
नए इनपुट का इस्तेमाल करके, एचएमएसी कार्रवाई को अपडेट करें.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
कुंजी को PSA ITS में इंपोर्ट करें.
otPlatCryptoInit(void)
void
क्रिप्टो मॉड्यूल शुरू करें.
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
सीएम (AES-CMAC-PRF-128) का इस्तेमाल करके PKCS#5 PBKDF2 करें.
otPlatCryptoRandomDeinit(void)
void
क्रिप्टोग्राफ़िक तरीके से सिक्योर स्यूडोरैंडम नंबर जनरेटर (CSPRNG) की शुरुआत से करें.
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
दिए गए बफ़र को क्रिप्टोग्राफ़िक तरीके से सुरक्षित रैंडम बाइट से भरता है.
otPlatCryptoRandomInit(void)
void
क्रिप्टोग्राफ़िक तरीके से सिक्योर स्यूडोरैंडम नंबर जनरेटर (CSPRNG) को शुरू करें.
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
SHA-256 कार्रवाई को शुरू नहीं करें.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
SHA-256 कार्रवाई पूरी करें.
otPlatCryptoSha256Init(otCryptoContext *aContext)
SHA-256 कार्रवाई शुरू करें.
otPlatCryptoSha256Start(otCryptoContext *aContext)
SHA-256 कार्रवाई शुरू करें.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
नए इनपुट के साथ SHA-256 कार्रवाई को अपडेट करें.

संरचना

otCryptoContext

प्लैटफ़ॉर्म एपीआई के लिए संदर्भ ऑब्जेक्ट स्टोर करता है.

otCryptoKey

क्रिप्टो करंसी की कार्रवाइयों के लिए ज़रूरी मुख्य कॉन्टेंट के बारे में बताता है.

otPlatCryptoEcdsaKeyPair

ईसीडीएसए की कुंजी का जोड़ा (सार्वजनिक और निजी की) दिखाता है.

otPlatCryptoEcdsaPublicKey

ईसीडीएसए सार्वजनिक कुंजी के बारे में बताता है.

otPlatCryptoEcdsaSignature

यह ईसीडीएसए हस्ताक्षर के बारे में बताता है.

otPlatCryptoSha256Hash

SHA-256 हैश को दिखाता है.

गिनती

अनाम Enum

 anonymous enum

इस्तेमाल से जुड़े मुख्य फ़्लैग के बारे में बताता है.

प्रॉपर्टी
OT_CRYPTO_KEY_USAGE_DECRYPT

कुंजी का इस्तेमाल: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

कुंजी का इस्तेमाल: एन्क्रिप्ट (सुरक्षित) करना (वेंडर की जानकारी दी गई).

OT_CRYPTO_KEY_USAGE_EXPORT

कुंजी का इस्तेमाल: कुंजी एक्सपोर्ट की जा सकती है.

OT_CRYPTO_KEY_USAGE_NONE

कुंजी उपयोग: कुंजी उपयोग खाली है.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

कुंजी का इस्तेमाल: हैश साइन करें.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

कुंजी का इस्तेमाल: हैश की पुष्टि करें.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

इसकी मदद से, प्रमुख एल्गोरिदम तय किए जाते हैं.

प्रॉपर्टी
OT_CRYPTO_KEY_ALG_AES_ECB

मुख्य एल्गोरिदम: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

मुख्य एल्गोरिदम: ईसीडीएसए.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

कुंजी एल्गोरिदम: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

कुंजी एल्गोरिदम: वेंडर तय किया गया.

otCryptoKeyStorage

 otCryptoKeyStorage

मुख्य स्टोरेज टाइप के बारे में बताता है.

प्रॉपर्टी
OT_CRYPTO_KEY_STORAGE_PERSISTENT

कुंजी परसिस्टेंस: कुंजी स्थायी होती है.

OT_CRYPTO_KEY_STORAGE_VOLATILE

कुंजी परसिस्टेंस: कुंजी में उतार-चढ़ाव होता है.

otCryptoKeyType

 otCryptoKeyType

कुंजी टाइप के बारे में बताता है.

प्रॉपर्टी
OT_CRYPTO_KEY_TYPE_AES

कुंजी का टाइप: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

कुंजी का टाइप: ईसीडीएसए.

OT_CRYPTO_KEY_TYPE_HMAC

कुंजी का टाइप: एचएमएसी.

OT_CRYPTO_KEY_TYPE_RAW

कुंजी का टाइप: रॉ डेटा.

टाइपडीफ़

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

इस डेटा टाइप से, मुख्य रेफ़रंस के बारे में पता चलता है.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

SHA-256 हैश को दिखाता है.

वैरिएबल

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

फ़ंक्शन

otPlatCryptoAesEncrypt

otError otPlatCryptoAesEncrypt(
  otCryptoContext *aContext,
  const uint8_t *aInput,
  uint8_t *aOutput
)

दिए गए डेटा को एन्क्रिप्ट (सुरक्षित) करें.

ब्यौरा
पैरामीटर
[in] aContext
AES ऑपरेशन का संदर्भ.
[in] aInput
इनपुट बफ़र की ओर पॉइंटर.
[in] aOutput
आउटपुट बफ़र की ओर पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
aInput को एन्क्रिप्ट (सुरक्षित) किया गया.
OT_ERROR_FAILED
aInput को एन्क्रिप्ट (सुरक्षित) नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aContext या aKey या aOutput NULL थे

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

AES कॉन्टेक्स्ट से बचें.

ब्यौरा
पैरामीटर
[in] aContext
AES ऑपरेशन का संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
AES कॉन्टेक्स्ट हटा दिया गया है.
OT_ERROR_FAILED
AES कॉन्टेक्स्ट को खाली नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

AES ऑपरेशन शुरू करें.

ब्यौरा
पैरामीटर
[in] aContext
AES ऑपरेशन का संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
AES कार्रवाई सफलतापूर्वक शुरू की गई.
OT_ERROR_FAILED
AES कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था
OT_ERROR_NO_BUFS
संदर्भ नहीं दिया जा सकता.

otPlatCryptoAesSetKey

otError otPlatCryptoAesSetKey(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

AES ऑपरेशन के लिए कुंजी सेट करें.

ब्यौरा
पैरामीटर
[in] aContext
AES ऑपरेशन का संदर्भ.
[out] aKey
AES ऑपरेशन के लिए इस्तेमाल की जाने वाली कुंजी.
रिटर्न वैल्यू
OT_ERROR_NONE
AES कार्रवाई के लिए कुंजी सेट की गई.
OT_ERROR_FAILED
AES कार्रवाई के लिए कुंजी सेट नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext या aKey को NULL कर दिया गया था

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

PSA ITS में सेव की गई कुंजी को नष्ट करना.

ब्यौरा
पैरामीटर
[in] aKeyRef
जिसे खत्म किया जाना है उसका मुख्य रेफ़रंस
रिटर्न वैल्यू
OT_ERROR_NONE
कुंजी को नष्ट कर दिया गया.
OT_ERROR_FAILED
कुंजी को मिटाया नहीं जा सका.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

पास की गई मुख्य पहचान फ़ाइल से, उससे जुड़ी सार्वजनिक कुंजी पाएं.

सार्वजनिक कुंजी को अलग-अलग तरीके से सेव किया जाता है. यह इस बात पर निर्भर करता है कि क्रिप्टो बैकएंड लाइब्रेरी किस तरह इस्तेमाल की जा रही है (OPENry_CONFIG_CRYPTO_LIB).

इस एपीआई को यह पक्का करना होगा कि सार्वजनिक कुंजी, बिना कंप्रेस किए गए कर्व पॉइंट (RFC 6605 - सेकंड 4) के बाइट सीक्वेंस के तौर पर दिखे

ब्यौरा
पैरामीटर
[in] aKeyRef
उस स्लॉट के लिए मुख्य रेफ़रंस जहां कुंजी का जोड़ा सेव किया जाता है.
[out] aPublicKey
सार्वजनिक पासकोड को सेव करने के लिए, ईसीडीएसए के सार्वजनिक पासकोड के स्ट्रक्चर का पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
सार्वजनिक पासकोड वापस मिल गया है और aBuffer को अपडेट कर दिया गया है.
OT_ERROR_PARSE
कुंजी-पेयर DER फ़ॉर्मैट को पार्स नहीं किया जा सका (गलत फ़ॉर्मैट).
OT_ERROR_INVALID_ARGS
aContext, NULL है.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

पहचान फ़ाइल पास होने पर, ईसीडीएसए की नई कुंजी का जोड़ा जनरेट और इंपोर्ट करें.

ब्यौरा
पैरामीटर
[in] aKeyRef
उस स्लॉट के लिए मुख्य रेफ़रंस जहां कुंजी का जोड़ा सेव किया जाता है.
रिटर्न वैल्यू
OT_ERROR_NONE
नया कुंजी-पेयर जनरेट हो गया.
OT_ERROR_NO_BUFS
कुंजी जनरेट करने के लिए बफ़र तय नहीं किया जा सका.
OT_ERROR_NOT_CAPABLE
यह सुविधा, इस नेटवर्क पर काम नहीं करती है.
OT_ERROR_FAILED
कुंजी का जोड़ा जनरेट नहीं किया जा सका.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

आउटपुट बफ़र को नए ECDSA बटन की मदद से जनरेट करें और उसे पॉप्यूलेट करें.

ब्यौरा
पैरामीटर
[out] aKeyPair
जनरेट की गई कुंजी के जोड़े को सेव करने के लिए, ईसीडीएसए की कुंजी के जोड़े के स्ट्रक्चर का पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
नया कुंजी-पेयर जनरेट हो गया.
OT_ERROR_NO_BUFS
कुंजी जनरेट करने के लिए बफ़र तय नहीं किया जा सका.
OT_ERROR_NOT_CAPABLE
यह सुविधा, इस नेटवर्क पर काम नहीं करती है.
OT_ERROR_FAILED
कुंजी का जोड़ा जनरेट नहीं किया जा सका.

otPlatCryptoEcdsaGetPublicKey

otError otPlatCryptoEcdsaGetPublicKey(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

इनपुट के कॉन्टेक्स्ट से, अपनी सार्वजनिक कुंजी डाउनलोड करें.

ब्यौरा
पैरामीटर
[in] aKeyPair
ईसीडीएसए कुंजी के जोड़े के स्ट्रक्चर का पॉइंटर, जहां कुंजी का जोड़ा सेव किया जाता है.
[out] aPublicKey
सार्वजनिक पासकोड को सेव करने के लिए, ईसीडीएसए के सार्वजनिक पासकोड के स्ट्रक्चर का पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
सार्वजनिक पासकोड वापस मिल गया है और aBuffer को अपडेट कर दिया गया है.
OT_ERROR_PARSE
कुंजी-पेयर DER फ़ॉर्मैट को पार्स नहीं किया जा सका (गलत फ़ॉर्मैट).
OT_ERROR_INVALID_ARGS
aContext, NULL है.

otPlatCryptoEcdsaSign

otError otPlatCryptoEcdsaSign(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

हैश किए गए मैसेज के लिए, ईसीडीएसए हस्ताक्षर कैलकुलेट करने के लिए इनपुट कॉन्टेक्स्ट से निजी कुंजी का इस्तेमाल करें.

इसके लिए, आरएफ़सी 6979 की मदद से, डिटर्मिनिस्टिक डिजिटल सिग्नेचर जनरेट करने की प्रोसेस का इस्तेमाल किया जाता है.

ब्यौरा
पैरामीटर
[in] aKeyPair
ईसीडीएसए कुंजी के जोड़े के स्ट्रक्चर का पॉइंटर, जहां कुंजी का जोड़ा सेव किया जाता है.
[in] aHash
SHA-256 हैश स्ट्रक्चर का पॉइंटर, जहां सिग्नेचर कैलकुलेशन के लिए हैश वैल्यू स्टोर होती है.
[out] aSignature
कैलकुलेटेड सिग्नेचर को आउटपुट के लिए, ईसीडीएसए सिग्नेचर स्ट्रक्चर का पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
हस्ताक्षर की गणना सफलतापूर्वक की गई, aSignature अपडेट की गई.
OT_ERROR_PARSE
कुंजी-पेयर DER फ़ॉर्मैट को पार्स नहीं किया जा सका (गलत फ़ॉर्मैट).
OT_ERROR_NO_BUFS
सिग्नेचर कैलकुलेशन के लिए बफ़र असाइन नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aContext, NULL है.

otPlatCryptoEcdsaSignUsingKeyRef

otError otPlatCryptoEcdsaSignUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

पास की गई कुंजी रेफ़रंस का इस्तेमाल करके, हैश किए गए मैसेज के लिए ईसीडीएसए हस्ताक्षर कैलकुलेट करें.

इसके लिए, आरएफ़सी 6979 की मदद से, डिटर्मिनिस्टिक डिजिटल सिग्नेचर जनरेट करने की प्रोसेस का इस्तेमाल किया जाता है.

ब्यौरा
पैरामीटर
[in] aKeyRef
उस स्लॉट के लिए मुख्य रेफ़रंस जहां कुंजी का जोड़ा सेव किया जाता है.
[in] aHash
SHA-256 हैश स्ट्रक्चर का पॉइंटर, जहां सिग्नेचर कैलकुलेशन के लिए हैश वैल्यू स्टोर होती है.
[out] aSignature
कैलकुलेटेड सिग्नेचर को आउटपुट के लिए, ईसीडीएसए सिग्नेचर स्ट्रक्चर का पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
हस्ताक्षर की गणना सफलतापूर्वक की गई, aSignature अपडेट की गई.
OT_ERROR_PARSE
कुंजी-पेयर DER फ़ॉर्मैट को पार्स नहीं किया जा सका (गलत फ़ॉर्मैट).
OT_ERROR_NO_BUFS
सिग्नेचर कैलकुलेशन के लिए बफ़र असाइन नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aContext, NULL है.

otPlatCryptoEcdsaVerify

otError otPlatCryptoEcdsaVerify(
  const otPlatCryptoEcdsaPublicKey *aPublicKey,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

हैश किए गए मैसेज के ईसीडीएसए हस्ताक्षर की पुष्टि करने के लिए, इनपुट के कॉन्टेक्स्ट में दी गई कुंजी का इस्तेमाल करें.

ब्यौरा
पैरामीटर
[in] aPublicKey
ईसीडीएसए सार्वजनिक पासकोड के स्ट्रक्चर का पॉइंटर, जिसमें हस्ताक्षर की पुष्टि करने के लिए सार्वजनिक पासकोड सेव होता है.
[in] aHash
SHA-256 हैश स्ट्रक्चर के लिए पॉइंटर, जहां हस्ताक्षर की पुष्टि के लिए हैश वैल्यू स्टोर होती है.
[in] aSignature
ईसीडीएसए सिग्नेचर स्ट्रक्चर का पॉइंटर, जहां पुष्टि की जाने वाली सिग्नेचर वैल्यू को सेव किया जाता है.
रिटर्न वैल्यू
OT_ERROR_NONE
हस्ताक्षर की पुष्टि हो गई है.
OT_ERROR_SECURITY
हस्ताक्षर गलत है.
OT_ERROR_INVALID_ARGS
कुंजी या हैश अमान्य है.
OT_ERROR_NO_BUFS
हस्ताक्षर की पुष्टि करने के लिए बफ़र असाइन नहीं किया जा सका.

otPlatCryptoEcdsaVerifyUsingKeyRef

otError otPlatCryptoEcdsaVerifyUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

हैश किए गए मैसेज के ईसीडीएसए हस्ताक्षर की पुष्टि करने के लिए, keyref का इस्तेमाल करें.

ब्यौरा
पैरामीटर
[in] aKeyRef
उस स्लॉट के लिए मुख्य रेफ़रंस जहां कुंजी का जोड़ा सेव किया जाता है.
[in] aHash
SHA-256 हैश स्ट्रक्चर के लिए पॉइंटर, जहां हस्ताक्षर की पुष्टि के लिए हैश वैल्यू स्टोर होती है.
[in] aSignature
ईसीडीएसए सिग्नेचर स्ट्रक्चर का पॉइंटर, जहां पुष्टि की जाने वाली सिग्नेचर वैल्यू को सेव किया जाता है.
रिटर्न वैल्यू
OT_ERROR_NONE
हस्ताक्षर की पुष्टि हो गई है.
OT_ERROR_SECURITY
हस्ताक्षर गलत है.
OT_ERROR_INVALID_ARGS
कुंजी या हैश अमान्य है.
OT_ERROR_NO_BUFS
हस्ताक्षर की पुष्टि करने के लिए बफ़र असाइन नहीं किया जा सका.

otPlatCryptoExportKey

otError otPlatCryptoExportKey(
  otCryptoKeyRef aKeyRef,
  uint8_t *aBuffer,
  size_t aBufferLen,
  size_t *aKeyLen
)

PSA ITS में सेव की गई किसी कुंजी को एक्सपोर्ट करें.

ब्यौरा
पैरामीटर
[in] aKeyRef
क्रिप्टो ऑपरेशन के लिए इस्तेमाल किया जाने वाला मुख्य रेफ़रंस.
[out] aBuffer
बफ़र उस जगह पर कर्सर ले जाएं जहां कुंजी को एक्सपोर्ट करना है.
[in] aBufferLen
एक्सपोर्ट की गई कुंजी को सेव करने के लिए पास किया गया बफ़र का साइज़.
[out] aKeyLen
एक्सपोर्ट की गई कुंजी की लंबाई बताने के लिए पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
aKeyRef को एक्सपोर्ट किया गया.
OT_ERROR_FAILED
aKeyRef को एक्सपोर्ट नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aBuffer शून्य था

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

देखें कि पास किए गए कुंजी रेफ़रंस में, PSA ITS से जुड़ी कुंजी है या नहीं.

ब्यौरा
पैरामीटर
[in] aKeyRef
जांच करने के लिए कुंजी का संदर्भ.
रिटर्न वैल्यू
TRUE
aKeyRef से एक कुंजी जुड़ी हुई है.
FALSE
aKeyRef से कोई भी कुंजी नहीं जुड़ी है.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

HKDF कॉन्टेक्स्ट को शुरू न करें.

ब्यौरा
पैरामीटर
[in] aContext
HKDF कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
HKDF कार्रवाई शुरू नहीं की गई.
OT_ERROR_FAILED
HKDF कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoHkdfExpand

otError otPlatCryptoHkdfExpand(
  otCryptoContext *aContext,
  const uint8_t *aInfo,
  uint16_t aInfoLength,
  uint8_t *aOutputKey,
  uint16_t aOutputKeyLength
)

HKDF बड़ा करें चरण पूरा करें.

ब्यौरा
पैरामीटर
[in] aContext
HKDF कार्रवाई के लिए कार्रवाई का संदर्भ.
[in] aInfo
जानकारी के क्रम पर कर्सर ले जाएं.
[in] aInfoLength
जानकारी के क्रम की लंबाई.
[out] aOutputKey
आउटपुट कुंजी की ओर पॉइंटर.
[in] aOutputKeyLength
आउटपुट कुंजी बफ़र का साइज़.
रिटर्न वैल्यू
OT_ERROR_NONE
HKDF विस्तार सफल रहा.
OT_ERROR_FAILED
HKDF बड़ा नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoHkdfExtract

otError otPlatCryptoHkdfExtract(
  otCryptoContext *aContext,
  const uint8_t *aSalt,
  uint16_t aSaltLength,
  const otCryptoKey *aInputKey
)

HKDF एक्सट्रैक्ट करने का चरण पूरा करें.

ब्यौरा
पैरामीटर
[in] aContext
HKDF कार्रवाई के लिए कार्रवाई का संदर्भ.
[in] aSalt
HKDF के लिए सॉल्ट की तरफ़ कर्सर ले जाएं.
[in] aSaltLength
नमक की लंबाई.
[in] aInputKey
इनपुट कुंजी की ओर पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
HKDF एक्सट्रैक्ट पूरा हो गया.
OT_ERROR_FAILED
HKDF निकालना विफल.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

HKDF कॉन्टेक्स्ट शुरू करें.

ब्यौरा
पैरामीटर
[in] aContext
HKDF कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
AES कार्रवाई सफलतापूर्वक शुरू की गई.
OT_ERROR_FAILED
AES कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

HMAC कार्रवाई शुरू न करें.

ब्यौरा
पैरामीटर
[in] aContext
एचएमएसी कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
एचएमएसी कार्रवाई शुरू नहीं की गई.
OT_ERROR_FAILED
एचएमएसी कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoHmacSha256Finish

otError otPlatCryptoHmacSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aBuf,
  size_t aBufLength
)

एचएमएसी कार्रवाई पूरी करें.

ब्यौरा
पैरामीटर
[in] aContext
एचएमएसी कार्रवाई के लिए संदर्भ.
[out] aBuf
आउटपुट बफ़र के लिए पॉइंटर.
[in] aBufLength
aBuf की लंबाई, बाइट में.
रिटर्न वैल्यू
OT_ERROR_NONE
एचएमएसी कार्रवाई पूरी हुई.
OT_ERROR_FAILED
एचएमएसी कार्रवाई पूरी नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext या aBuf को NULL कर दिया गया था

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

HMAC कार्रवाई शुरू करें.

ब्यौरा
पैरामीटर
[in] aContext
एचएमएसी कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
एचएमएसी कार्रवाई शुरू की गई.
OT_ERROR_FAILED
एचएमएसी कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoHmacSha256Start

otError otPlatCryptoHmacSha256Start(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

एचएमएसी कार्रवाई शुरू करें.

ब्यौरा
पैरामीटर
[in] aContext
एचएमएसी कार्रवाई के लिए संदर्भ.
[in] aKey
एचएमएसी ऑपरेशन के लिए इस्तेमाल की जाने वाली मुख्य सामग्री.
रिटर्न वैल्यू
OT_ERROR_NONE
एचएमएसी कार्रवाई शुरू की गई.
OT_ERROR_FAILED
एचएमएसी कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext या aKey को NULL कर दिया गया था

otPlatCryptoHmacSha256Update

otError otPlatCryptoHmacSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

नए इनपुट का इस्तेमाल करके, एचएमएसी कार्रवाई को अपडेट करें.

ब्यौरा
पैरामीटर
[in] aContext
एचएमएसी कार्रवाई के लिए संदर्भ.
[in] aBuf
इनपुट बफ़र के लिए पॉइंटर.
[in] aBufLength
aBuf की लंबाई, बाइट में.
रिटर्न वैल्यू
OT_ERROR_NONE
नई इनपुट कार्रवाई के साथ HMAC को सफलतापूर्वक अपडेट किया गया.
OT_ERROR_FAILED
एचएमएसी कार्रवाई अपडेट नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext या aBuf को NULL कर दिया गया था

otPlatCryptoImportKey

otError otPlatCryptoImportKey(
  otCryptoKeyRef *aKeyRef,
  otCryptoKeyType aKeyType,
  otCryptoKeyAlgorithm aKeyAlgorithm,
  int aKeyUsage,
  otCryptoKeyStorage aKeyPersistence,
  const uint8_t *aKey,
  size_t aKeyLen
)

कुंजी को PSA ITS में इंपोर्ट करें.

अगर aKeyPersistence के लिए OT_CRYPTO_KEY_STORAGE_VOLATILE पास किया जाता है, तो aKeyRef आउटपुट है, तो शुरुआती वैल्यू मायने नहीं रखती. साथ ही, नई कुंजी का रेफ़रंस देने के लिए, प्लैटफ़ॉर्म एपीआई को इसे अपडेट करना ज़रूरी है.

ब्यौरा
पैरामीटर
[in,out] aKeyRef
क्रिप्टो ऑपरेशन के लिए इस्तेमाल किए जाने वाले मुख्य रेफ़रंस की ओर पॉइंटर.
[in] aKeyType
कुंजी के लिए कुंजी के प्रकार को कोड में बदलने का तरीका.
[in] aKeyAlgorithm
कुंजी के लिए कुंजी एल्गोरिदम एन्कोडिंग.
[in] aKeyUsage
कुंजी (OT_CRYPTO_KEY_USAGE_* के संयोजन) के लिए कुंजी उपयोग एन्कोडिंग.
[in] aKeyPersistence
इस कुंजी के लिए कुंजी का समर्थन
[in] aKey
इंपोर्ट की जाने वाली असल कुंजी.
[in] aKeyLen
इंपोर्ट की जाने वाली कुंजी की लंबाई.
रिटर्न वैल्यू
OT_ERROR_NONE
कुंजी इंपोर्ट की गई.
OT_ERROR_FAILED
कुंजी इंपोर्ट नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aKey को NULL पर सेट किया गया था.

इस एपीआई का इस्तेमाल OT कोर से सिर्फ़ तब किया जाता है, जब OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE चालू होता है.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

क्रिप्टो मॉड्यूल शुरू करें.

otPlatCryptoPbkdf2GenerateKey

otError otPlatCryptoPbkdf2GenerateKey(
  const uint8_t *aPassword,
  uint16_t aPasswordLen,
  const uint8_t *aSalt,
  uint16_t aSaltLen,
  uint32_t aIterationCounter,
  uint16_t aKeyLen,
  uint8_t *aKey
)

सीएम (AES-CMAC-PRF-128) का इस्तेमाल करके PKCS#5 PBKDF2 करें.

ब्यौरा
पैरामीटर
[in] aPassword
कुंजी जनरेट करते समय इस्तेमाल किया जाने वाला पासवर्ड.
[in] aPasswordLen
पासवर्ड की लंबाई.
[in] aSalt
कुंजी जनरेट करते समय इस्तेमाल किया जाने वाला सॉल्ट.
[in] aSaltLen
नमक की लंबाई.
[in] aIterationCounter
इटरेशन की संख्या.
[in] aKeyLen
जनरेट की गई कुंजी की लंबाई बाइट में.
[out] aKey
जनरेट की गई कुंजी के लिए पॉइंटर.
रिटर्न वैल्यू
OT_ERROR_NONE
नया कुंजी-पेयर जनरेट हो गया.
OT_ERROR_NO_BUFS
कुंजी जनरेट करने के लिए बफ़र तय नहीं किया जा सका.
OT_ERROR_NOT_CAPABLE
यह सुविधा, इस नेटवर्क पर काम नहीं करती है.
OT_ERROR_FAILED
कुंजी जनरेट नहीं की जा सकी.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

क्रिप्टोग्राफ़िक तरीके से सिक्योर स्यूडोरैंडम नंबर जनरेटर (CSPRNG) की शुरुआत से करें.

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

दिए गए बफ़र को क्रिप्टोग्राफ़िक तरीके से सुरक्षित रैंडम बाइट से भरता है.

ब्यौरा
पैरामीटर
[out] aBuffer
बफ़र का पॉइंटर, जो रैंडम बाइट से भरता है.
[in] aSize
बफ़र का साइज़ (दिए जाने वाले बाइट की संख्या).
रिटर्न वैल्यू
OT_ERROR_NONE
बफ़र को रैंडम वैल्यू से भरा गया.
OT_ERROR_FAILED
कार्रवाई नहीं की जा सकी.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

क्रिप्टोग्राफ़िक तरीके से सिक्योर स्यूडोरैंडम नंबर जनरेटर (CSPRNG) को शुरू करें.

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

SHA-256 कार्रवाई को शुरू नहीं करें.

ब्यौरा
पैरामीटर
[in] aContext
SHA-256 कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
SHA-256 कार्रवाई शुरू नहीं की गई.
OT_ERROR_FAILED
SHA-256 कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoSha256Finish

otError otPlatCryptoSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aHash,
  uint16_t aHashSize
)

SHA-256 कार्रवाई पूरी करें.

ब्यौरा
पैरामीटर
[in] aContext
SHA-256 कार्रवाई के लिए संदर्भ.
[in] aHash
आउटपुट बफ़र के लिए एक पॉइंटर, जहां हैश को स्टोर करने की ज़रूरत होती है.
[in] aHashSize
aHash की लंबाई, बाइट में.
रिटर्न वैल्यू
OT_ERROR_NONE
SHA-256 कार्रवाई सफलतापूर्वक पूरी हुई.
OT_ERROR_FAILED
SHA-256 कार्रवाई पूरी नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext या aHash को NULL कर दिया गया था

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

SHA-256 कार्रवाई शुरू करें.

ब्यौरा
पैरामीटर
[in] aContext
SHA-256 कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
SHA-256 कार्रवाई सफलतापूर्वक शुरू की गई.
OT_ERROR_FAILED
SHA-256 कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

SHA-256 कार्रवाई शुरू करें.

ब्यौरा
पैरामीटर
[in] aContext
SHA-256 कार्रवाई के लिए संदर्भ.
रिटर्न वैल्यू
OT_ERROR_NONE
SHA-256 कार्रवाई सफलतापूर्वक शुरू की गई.
OT_ERROR_FAILED
SHA-256 कार्रवाई शुरू नहीं की जा सकी.
OT_ERROR_INVALID_ARGS
aContext शून्य था

otPlatCryptoSha256Update

otError otPlatCryptoSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

नए इनपुट के साथ SHA-256 कार्रवाई को अपडेट करें.

ब्यौरा
पैरामीटर
[in] aContext
SHA-256 कार्रवाई के लिए संदर्भ.
[in] aBuf
इनपुट बफ़र के लिए पॉइंटर.
[in] aBufLength
aBuf की लंबाई, बाइट में.
रिटर्न वैल्यू
OT_ERROR_NONE
नए इनपुट कार्रवाई के साथ SHA-256 को सफलतापूर्वक अपडेट किया गया.
OT_ERROR_FAILED
SHA-256 कार्रवाई को अपडेट नहीं किया जा सका.
OT_ERROR_INVALID_ARGS
aContext या aBuf को NULL कर दिया गया था

मैक्रो

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

EDCSA की-पेयर को DER फ़ॉर्मैट में दिखाने के लिए, ज़्यादा से ज़्यादा बफ़र साइज़ (बाइट में).

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

EDCSA सार्वजनिक कुंजी को दिखाने के लिए बफ़र साइज़ (बाइट में).

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

ईडीसीएसए सिग्नेचर को दिखाने के लिए बफ़र साइज़ (बाइट में).

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

ज़्यादा से ज़्यादा PBKDF2 SALT की लंबाई: सॉल्ट प्रीफ़िक्स (6) + एक्सटेंडेड पैनिड (8) + नेटवर्क का नाम (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

SHA256 हैश की लंबाई (बाइट में).

रिसॉर्स

OpenThread API के रेफ़रंस के विषय, सोर्स कोड से मिलते हैं. यह सोर्स GitHub पर उपलब्ध है. ज़्यादा जानकारी या हमारे दस्तावेज़ में योगदान देने के लिए, संसाधन देखें.