nl::Weave::Crypto

מרחב השמות הזה כולל את כל הממשקים ב-Weave לקבלת תמיכה קריפטוגרפית משותפת.

סיכום

ספירות

X963EncodedPointFormat טיפוסים בני מנייה (enum)

ערכי דף

AES128CTRDRBG typedef
AES128CTRMode typedef
AES256CTRMode typedef
EntropyFunct)(uint8_t *buf, size_t bufSize) typedef
int(*
חתימה של פונקציה שמשמשת לאיסוף נתונים אקראיים ממקור אנטרופיה.
HKDFSHA1 typedef
HKDFSHA256 typedef
HMACSHA1 typedef
HMACSHA256 typedef

פונקציות

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)
יצירה וקידוד של חתימת HMAC של Weave.
GenerateAndEncodeWeaveRSASignature(OID sigAlgoOID, TLVWriter & writer, uint64_t tag, const uint8_t *hash, uint8_t hashLen, const uint8_t *keyDER, uint16_t keyDERLen)
יצירה וקידוד של חתימת RSA ב-Weave.
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)
מאמתים חתימת HMAC של Weave.
VerifyRSASignature(OID sigAlgoOID, const uint8_t *hash, uint8_t hashLen, const EncodedRSASignature & sig, const uint8_t *certDER, uint16_t certDERLen)
אימות חתימת RSA ב-Weave.

מחלקות

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
)

יצירה וקידוד של חתימת HMAC של Weave.

הפונקציה מחשבת חתימת HMAC עבור נתונים נתונים באמצעות מפתח סודי וכותבת את החתימה כמבנה Weave HMACSignature בכותב TLV שצוין עם התג הנתון.

פרטים
פרמטרים
[in] sigAlgoOID
OID של האלגוריתם שישמש ליצירת חתימת 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
)

יצירה וקידוד של חתימת RSA ב-Weave.

הפונקציה מחשבת חתימת RSA באמצעות מפתח פרטי RSA פרטי מקודד X509 וגיבוב (hash) של הודעות, וכותבת את החתימה כמבנה של Weave RSASignature עם כותב ה-TLV שצוין עם התג הנתון.

פרטים
פרמטרים
[in] sigAlgoOID
OID של האלגוריתם המשמש ליצירת חתימת RSA.
[in] writer
האובייקט TLVWriter שאליו תיכתב החתימה המקודדת.
[in] tag
TLV שישויך למבנה החתימה המקודדת.
[in] hash
מאגר נתונים זמני שמכיל את הגיבוב (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
OID של עקומה אליפטית שצוין.
ערכים מוחזרים
Returns
הערך 0 אם העקומה שצוינה לא נתמכת ב-Eliptic Curve. אחרת, מחזירה את גודל העקומה בבייטים.

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
)

מאמתים חתימת HMAC של Weave.

מאמת חתימת HMAC באמצעות נתונים נתונים ומפתח סודי שישמש לאימות החתימה.

פרטים
פרמטרים
[in] sigAlgoOID
OID של האלגוריתם שישמש ליצירת חתימת 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
)

אימות חתימת RSA ב-Weave.

אימות של חתימת RSA באמצעות גיבוב נתונים נתון ואישור RSA מקודד X509 שמכיל את המפתח הציבורי שישמש לאימות החתימה.

פרטים
פרמטרים
[in] sigAlgoOID
OID של האלגוריתם המשמש ליצירת חתימת RSA.
[in] hash
מאגר נתונים זמני שמכיל את הגיבוב (hash) של הנתונים שיש לחתום עליהם.
[in] hashLen
האורך בבייטים של גיבוב הנתונים.
[in] sig
יש לאמת את חתימת ה-RSA המקודדת.
[in] certDER
מאגר נתונים זמני שמכיל את האישור עם מפתח ציבורי שישמש לאימות החתימה. האישור אמור להיות בקידוד DER במבנה X509 RSA.
[in] certDERLen
האורך בבייטים של האישור המקודד.
ערכים מוחזרים
WEAVE_NO_ERROR
אם הפעולה הצליחה.