nl::Weave::Crypto

تتضمن مساحة الاسم هذه جميع الواجهات داخل Weave لدعم التشفير المشترك.

ملخّص

عمليات التعداد

X963EncodedPointFormat تعداد

تعريف الأنواع

AES128CTRDRBG تعريف الكتابة
AES128CTRMode تعريف الكتابة
AES256CTRMode تعريف الكتابة
EntropyFunct)(uint8_t *buf, size_t bufSize) تعريف الكتابة
int(*
توقيع دالة يستخدم لجمع بيانات عشوائية من مصدر قصور.
HKDFSHA1 تعريف الكتابة
HKDFSHA256 تعريف الكتابة
HMACSHA1 تعريف الكتابة
HMACSHA256 تعريف الكتابة

الدوال

ClearSecretData(uint8_t *buf, uint32_t len)
NL_DLL_EXPORT void
يؤدي هذا الإجراء إلى محو أول len بايت من مساحة الذاكرة buf.
ConstantTimeCompare(const uint8_t *buf1, const uint8_t *buf2, uint16_t len)
bool
تتم المقارنة بين أول len بايت من مساحة الذاكرة buf1 ومنطقة الذاكرة buf2.
DecodeBIGNUMValueLE(BIGNUM & val, uint16_t size, const uint8_t *& p)
DecodeECDSASignature(const EncodedECDSASignature & encodedSig, ECDSA_SIG *& sig)
DecodeECKey(OID curveOID, const EncodedECPrivateKey *encodedPrivKey, const EncodedECPublicKey *encodedPubKey, EC_KEY *& ecKey)
NL_DLL_EXPORT WEAVE_ERROR
DecodeX962ECPoint(const uint8_t *encodedPoint, uint16_t encodedPointLen, EC_GROUP *group, EC_POINT *& point)
NL_DLL_EXPORT WEAVE_ERROR
DecodeX962ECPoint(const uint8_t *encodedPoint, uint16_t encodedPointLen, BIGNUM *& x, BIGNUM *& y)
ECDHComputeSharedSecret(OID curveOID, const EC_GROUP *ecGroup, const EC_POINT *pubKeyPoint, const BIGNUM *privKeyBN, uint8_t *sharedSecretBuf, uint16_t sharedSecretBufSize, uint16_t & sharedSecretLen)
NL_DLL_EXPORT WEAVE_ERROR
ECDHComputeSharedSecret(OID curveOID, const EncodedECPublicKey & encodedPubKey, const EncodedECPrivateKey & encodedPrivKey, uint8_t *sharedSecretBuf, uint16_t sharedSecretBufSize, uint16_t & sharedSecretLen)
ECDSASigToFixedLenSig(OID curveOID, const ECDSA_SIG *ecSig, uint8_t *fixedLenSig)
ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps)
void
ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s)
int
EncodeBIGNUMValueLE(const BIGNUM & val, uint16_t size, uint8_t *& p)
EncodeECDSASignature(const ECDSA_SIG *sig, EncodedECDSASignature & encodedSig)
EncodeX962ECPoint(OID curveOID, EC_GROUP *ecGroup, const EC_POINT *point, uint8_t *buf, uint16_t bufSize, uint16_t & encodedPointLen)
NL_DLL_EXPORT WEAVE_ERROR
FixedLenSigToECDSASig(OID curveOID, const uint8_t *fixedLenSig, ECDSA_SIG *& ecSig)
GenerateAndEncodeWeaveHMACSignature(OID sigAlgoOID, TLVWriter & writer, uint64_t tag, const uint8_t *data, uint16_t dataLen, const uint8_t *key, uint16_t keyLen)
أنشئ توقيع Weave HMAC وترميزه.
GenerateAndEncodeWeaveRSASignature(OID sigAlgoOID, TLVWriter & writer, uint64_t tag, const uint8_t *hash, uint8_t hashLen, const uint8_t *keyDER, uint16_t keyDERLen)
إنشاء وترميز توقيع Weave RSA.
GenerateECDHKey(OID curveOID, EncodedECPublicKey & encodedPubKey, EncodedECPrivateKey & encodedPrivKey)
GenerateECDSASignature(OID curveOID, const uint8_t *msgHash, uint8_t msgHashLen, const EncodedECPrivateKey & encodedPrivKey, EncodedECDSASignature & encodedSig)
GenerateECDSASignature(OID curveOID, const uint8_t *msgHash, uint8_t msgHashLen, const EncodedECPrivateKey & encodedPrivKey, uint8_t *fixedLenSig)
GetCurveG(OID curveOID, EncodedECPublicKey & encodedPubKey)
GetCurveSize(const OID curveOID, const EC_GROUP *ecGroup)
int
GetCurveSize(const OID curveOID)
int
الحصول على حجم المنحنى الإهليلجي (بالبايت)
GetECGroupForCurve(OID curveOID, EC_GROUP *& ecGroup)
NL_DLL_EXPORT WEAVE_ERROR
ReverseBytes(uint8_t *buf, size_t len)
void
ShaNIDFromSigAlgoOID(OID sigAlgoOID)
int
VerifyECDSASignature(OID curveOID, const uint8_t *msgHash, uint8_t msgHashLen, const EncodedECDSASignature & encodedSig, const EncodedECPublicKey & encodedPubKey)
VerifyECDSASignature(OID curveOID, const uint8_t *msgHash, uint8_t msgHashLen, const uint8_t *fixedLenSig, const EncodedECPublicKey & encodedPubKey)
VerifyHMACSignature(OID sigAlgoOID, const uint8_t *data, uint16_t dataLen, const EncodedHMACSignature & sig, const uint8_t *key, uint16_t keyLen)
التحقق من توقيع Weave HMAC.
VerifyRSASignature(OID sigAlgoOID, const uint8_t *hash, uint8_t hashLen, const EncodedRSASignature & sig, const uint8_t *certDER, uint16_t certDERLen)
التحقق من توقيع Weave RSA

صفوف

nl::Weave::Crypto::CTRMode
nl::Weave::Crypto::CTR_DRBG
nl::Weave::Crypto::EncodedECDSASignature
nl::Weave::Crypto::EncodedECPrivateKey
nl::Weave::Crypto::EncodedECPublicKey
nl::Weave::Crypto::EncodedHMACSignature
nl::Weave::Crypto::EncodedRSAKey
nl::Weave::Crypto::EncodedRSASignature
nl::Weave::Crypto::HKDF
nl::Weave::Crypto::HKDFSHA1Or256
nl::Weave::Crypto::HMAC

عمليات التعداد

X963EncodedPointFormat

 X963EncodedPointFormat

تعريف الأنواع

AES128CTRDRBG

CTR_DRBG< Platform::Security::AES128BlockCipherEnc > AES128CTRDRBG

AES128CTRMode

CTRMode< Platform::Security::AES128BlockCipherEnc > AES128CTRMode

AES256CTRMode

CTRMode< Platform::Security::AES256BlockCipherEnc > AES256CTRMode

EntropyFunct

int(* EntropyFunct)(uint8_t *buf, size_t bufSize)

توقيع دالة يستخدم لجمع بيانات عشوائية من مصدر قصور.

HKDFSHA1

HKDF< Platform::Security::SHA1 > HKDFSHA1

HKDFSHA256

HKDF< Platform::Security::SHA256 > HKDFSHA256

HMACSHA1

HMAC< Platform::Security::SHA1 > HMACSHA1

HMACSHA256

HMAC< Platform::Security::SHA256 > HMACSHA256

الدوال

ClearSecretData

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

يؤدي هذا الإجراء إلى محو أول len بايت من مساحة الذاكرة buf.

في عملية التنفيذ هذه، يتم ملء أول len بايت من مساحة الذاكرة buf بالأصفار.

التفاصيل
المعلمات
[in] buf
يشير هذا المصطلح إلى مخزن مؤقت للذاكرة يحتوي على بيانات سرية يجب محوها.
[in] len
تحدِّد هذه السياسة حجم البيانات السرية بالبايت.

ConstantTimeCompare

bool ConstantTimeCompare(
  const uint8_t *buf1,
  const uint8_t *buf2,
  uint16_t len
)

تتم المقارنة بين أول len بايت من مساحة الذاكرة buf1 ومنطقة الذاكرة buf2.

إنّ الوقت الذي تستغرقه هذه الدالة مستقل عن البيانات في منطقتَي الذاكرة buf1 وbuf2.

التفاصيل
المعلمات
[in] buf1
المؤشر على كتلة ذاكرة.
[in] buf2
المؤشر على كتلة ذاكرة.
[in] len
حجم مساحة الذاكرة المطلوب مقارنتها بالبايت.
قيم الإرجاع
true
إذا كانت قيمة أول len بايت من مساحة الذاكرة buf1 متساوية مع buf2.
false
وإلا.

DecodeBIGNUMValueLE

WEAVE_ERROR DecodeBIGNUMValueLE(
  BIGNUM & val,
  uint16_t size,
  const uint8_t *& p
)

DecodeECDSASignature

WEAVE_ERROR DecodeECDSASignature(
  const EncodedECDSASignature & encodedSig,
  ECDSA_SIG *& sig
)

DecodeECKey

NL_DLL_EXPORT WEAVE_ERROR DecodeECKey(
  OID curveOID,
  const EncodedECPrivateKey *encodedPrivKey,
  const EncodedECPublicKey *encodedPubKey,
  EC_KEY *& ecKey
)

فك ترميزX962ECPoint

NL_DLL_EXPORT WEAVE_ERROR DecodeX962ECPoint(
  const uint8_t *encodedPoint,
  uint16_t encodedPointLen,
  EC_GROUP *group,
  EC_POINT *& point
)

فك ترميزX962ECPoint

WEAVE_ERROR DecodeX962ECPoint(
  const uint8_t *encodedPoint,
  uint16_t encodedPointLen,
  BIGNUM *& x,
  BIGNUM *& y
)

ECDHComputeSharedSecret

NL_DLL_EXPORT WEAVE_ERROR ECDHComputeSharedSecret(
  OID curveOID,
  const EC_GROUP *ecGroup,
  const EC_POINT *pubKeyPoint,
  const BIGNUM *privKeyBN,
  uint8_t *sharedSecretBuf,
  uint16_t sharedSecretBufSize,
  uint16_t & sharedSecretLen
)

ECDHComputeSharedSecret

WEAVE_ERROR ECDHComputeSharedSecret(
  OID curveOID,
  const EncodedECPublicKey & encodedPubKey,
  const EncodedECPrivateKey & encodedPrivKey,
  uint8_t *sharedSecretBuf,
  uint16_t sharedSecretBufSize,
  uint16_t & sharedSecretLen
)

ECDSASigToFixedLenSig

WEAVE_ERROR ECDSASigToFixedLenSig(
  OID curveOID,
  const ECDSA_SIG *ecSig,
  uint8_t *fixedLenSig
)

ECDSA_SIG_get0

void ECDSA_SIG_get0(
  const ECDSA_SIG *sig,
  const BIGNUM **pr,
  const BIGNUM **ps
)

ECDSA_SIG_set0

int ECDSA_SIG_set0(
  ECDSA_SIG *sig,
  BIGNUM *r,
  BIGNUM *s
)

EncodeBIGNUMValueLE

WEAVE_ERROR EncodeBIGNUMValueLE(
  const BIGNUM & val,
  uint16_t size,
  uint8_t *& p
)

EncodeECDSASignature

WEAVE_ERROR EncodeECDSASignature(
  const ECDSA_SIG *sig,
  EncodedECDSASignature & encodedSig
)

ترميزX962ECPoint

NL_DLL_EXPORT WEAVE_ERROR EncodeX962ECPoint(
  OID curveOID,
  EC_GROUP *ecGroup,
  const EC_POINT *point,
  uint8_t *buf,
  uint16_t bufSize,
  uint16_t & encodedPointLen
)

FixedLenSigToECDSASig

WEAVE_ERROR FixedLenSigToECDSASig(
  OID curveOID,
  const uint8_t *fixedLenSig,
  ECDSA_SIG *& ecSig
)

GenerateAndEncodeWeaveHMACSignature

WEAVE_ERROR GenerateAndEncodeWeaveHMACSignature(
  OID sigAlgoOID,
  TLVWriter & writer,
  uint64_t tag,
  const uint8_t *data,
  uint16_t dataLen,
  const uint8_t *key,
  uint16_t keyLen
)

أنشئ توقيع Weave HMAC وترميزه.

لحساب توقيع HMAC لبيانات معينة باستخدام مفتاح سري وكتابة التوقيع كبنية Weave HMACSignature لكاتب TLV المحدد باستخدام العلامة المحددة.

التفاصيل
المعلمات
[in] sigAlgoOID
معرِّف كائن الخوارزمية الذي سيتم استخدامه لإنشاء توقيع HMAC
[in] writer
الكائن TLVWriter الذي يجب كتابة التوقيع المشفر إليه.
[in] tag
TLV المطلوب ربطها ببنية التوقيع المشفرة.
[in] data
مخزن مؤقت يحتوي على البيانات المراد توقيعها.
[in] dataLen
طول البيانات بالبايت.
[in] key
يشير هذا المصطلح إلى مخزن مؤقت يحتوي على المفتاح السري المراد استخدامه لإنشاء توقيع HMAC.
[in] keyLen
تمثل هذه السمة طول المفتاح السري بوحدات البايت.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت العملية.
other
رموز خطأ Weave الأخرى المتعلقة بترميز التوقيع.

GenerateAndEncodeWeaveRSASignature

WEAVE_ERROR GenerateAndEncodeWeaveRSASignature(
  OID sigAlgoOID,
  TLVWriter & writer,
  uint64_t tag,
  const uint8_t *hash,
  uint8_t hashLen,
  const uint8_t *keyDER,
  uint16_t keyDERLen
)

إنشاء وترميز توقيع Weave RSA.

لحساب توقيع RSA باستخدام مفتاح خاص بترميز RSA معيّن وبترميز X509 وتجزئة رسالة، ثم يكتب التوقيع كبنية Weave RSASignature لكاتب TLV المحدَّد باستخدام العلامة المحدّدة.

التفاصيل
المعلمات
[in] sigAlgoOID
معرِّف كائن الخوارزمية الذي سيتم استخدامه لإنشاء توقيع RSA.
[in] writer
الكائن TLVWriter الذي يجب كتابة التوقيع المشفر إليه.
[in] tag
TLV المطلوب ربطها ببنية التوقيع المشفرة.
[in] hash
مخزن مؤقت يحتوي على تجزئة البيانات المراد توقيعها.
[in] hashLen
الطول بالبايت لتجزئة البيانات.
[in] keyDER
هو مخزن مؤقت يحتوي على المفتاح الخاص المطلوب استخدامه لإنشاء التوقيع. ومن المتوقع أن يتم ترميز المفتاح الخاص كبنية مفتاح خاص X509 RSA.
[in] keyDERLen
يشير ذلك المصطلح إلى الطول بالبايت للمفتاح الخاص المشفر.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت العملية.
other
رموز خطأ Weave الأخرى المتعلقة بفك ترميز المفتاح الخاص، وإنشاء التوقيع أو ترميز التوقيع.

GenerateECDHKey

WEAVE_ERROR GenerateECDHKey(
  OID curveOID,
  EncodedECPublicKey & encodedPubKey,
  EncodedECPrivateKey & encodedPrivKey
)

GenerateECDSASignature

WEAVE_ERROR GenerateECDSASignature(
  OID curveOID,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const EncodedECPrivateKey & encodedPrivKey,
  EncodedECDSASignature & encodedSig
)

GenerateECDSASignature

WEAVE_ERROR GenerateECDSASignature(
  OID curveOID,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const EncodedECPrivateKey & encodedPrivKey,
  uint8_t *fixedLenSig
)

GetCurveG

WEAVE_ERROR GetCurveG(
  OID curveOID,
  EncodedECPublicKey & encodedPubKey
)

GetCurveSize

int GetCurveSize(
  const OID curveOID,
  const EC_GROUP *ecGroup
)

GetCurveSize

int GetCurveSize(
  const OID curveOID
)

الحصول على حجم المنحنى الإهليلجي (بالبايت)

التفاصيل
المعلمات
[in] curveOID
معرِّف منحنى بيضاوي محدّد
قيم الإرجاع
Returns
0 في حال كان المنحنى المحدد غير متوافق مع المنحنى الإهليلجي. وبخلاف ذلك، سيتم عرض حجم المنحنى بالبايت.

GetECGroupForCurve

NL_DLL_EXPORT WEAVE_ERROR GetECGroupForCurve(
  OID curveOID,
  EC_GROUP *& ecGroup
)

ReverseBytes

void ReverseBytes(
  uint8_t *buf,
  size_t len
)

ShaNIDFromSigAlgoOID

int ShaNIDFromSigAlgoOID(
  OID sigAlgoOID
)

VerifyECDSASignature

WEAVE_ERROR VerifyECDSASignature(
  OID curveOID,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const EncodedECDSASignature & encodedSig,
  const EncodedECPublicKey & encodedPubKey
)

VerifyECDSASignature

WEAVE_ERROR VerifyECDSASignature(
  OID curveOID,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  const uint8_t *fixedLenSig,
  const EncodedECPublicKey & encodedPubKey
)

VerifyHMACSignature

WEAVE_ERROR VerifyHMACSignature(
  OID sigAlgoOID,
  const uint8_t *data,
  uint16_t dataLen,
  const EncodedHMACSignature & sig,
  const uint8_t *key,
  uint16_t keyLen
)

التحقق من توقيع Weave HMAC.

تتحقّق من توقيع HMAC باستخدام بيانات محددة ومفتاح سري لاستخدامه للتحقق من التوقيع.

التفاصيل
المعلمات
[in] sigAlgoOID
معرِّف كائن الخوارزمية الذي سيتم استخدامه لإنشاء توقيع HMAC
[in] data
مخزن مؤقت يحتوي على البيانات المراد توقيعها.
[in] dataLen
طول البيانات بالبايت.
[in] sig
يجب إثبات صحة توقيع HMAC المشفّر.
[in] key
يشير هذا المصطلح إلى مخزن مؤقت يحتوي على المفتاح السري المراد استخدامه لإنشاء توقيع HMAC.
[in] keyLen
تمثل هذه السمة طول المفتاح السري بوحدات البايت.
قيم الإرجاع
WEAVE_NO_ERROR
إذا تم إثبات ملكية توقيع HMAC بنجاح.
WEAVE_ERROR_INVALID_SIGNATURE
في حال تعذَّر إثبات صحة توقيع HMAC.

VerifyRSASignature

WEAVE_ERROR VerifyRSASignature(
  OID sigAlgoOID,
  const uint8_t *hash,
  uint8_t hashLen,
  const EncodedRSASignature & sig,
  const uint8_t *certDER,
  uint16_t certDERLen
)

التحقق من توقيع Weave RSA

يتم التحقّق من توقيع RSA باستخدام تجزئة بيانات محدَّدة وشهادة RSA مرمّزة X509 تحتوي على المفتاح العام الذي سيتم استخدامه للتحقُّق من التوقيع.

التفاصيل
المعلمات
[in] sigAlgoOID
معرِّف كائن الخوارزمية الذي سيتم استخدامه لإنشاء توقيع RSA.
[in] hash
مخزن مؤقت يحتوي على تجزئة البيانات المراد توقيعها.
[in] hashLen
الطول بالبايت لتجزئة البيانات.
[in] sig
يجب التأكّد من صحة توقيع RSA.
[in] certDER
يشير ذلك المصطلح إلى مخزن مؤقت يحتوي على الشهادة التي تتضمّن مفتاحًا عامًا لاستخدامها للتحقّق من التوقيع. من المتوقع أن تكون الشهادة بترميز DER بهيكل X509 RSA.
[in] certDERLen
يشير ذلك المصطلح إلى الطول بالبايت للشهادة المشفَّرة.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت العملية.