จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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)
สร้างและเข้ารหัสลายเซ็น 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::EncodeECDSASignature
nl::Weave::Crypto::EncodingECPrivateKey
nl::Weave::Crypto::EncodingECPublicKey
nl::Weave::Crypto::EncodingHMACSignature
nl::Weave::Crypto::EncodingRSAKey
nl::Weave::Crypto::EncodingRSASignature
nl:: Weave::Crypto::HKDF
nl:: Weave::Crypto::HKDFSHA1Or256
nl:: Weave::Crypto::HMAC

การแจกแจง

รูปแบบ X963EncodingPoint

 X963EncodedPointFormat

ประเภทคําจํากัดความ

AES128CTRDRBG

CTR_DRBG< Platform::Security::AES128BlockCipherEnc > AES128CTRDRBG

โหมด AES128CTR

CTRMode< Platform::Security::AES128BlockCipherEnc > AES128CTRMode

โหมด AES256CTR

CTRMode< Platform::Security::AES256BlockCipherEnc > AES256CTRMode

เอนโทรปีโซน

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

ฟังก์ชัน

ล้างข้อมูลข้อมูลลับ

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

ล้างพื้นที่หน่วยความจํา len ไบต์แรก buf

ในการใช้งานนี้ พื้นที่หน่วยความจํา len ไบต์แรก buf จะเติมค่าด้วยเลขศูนย์

รายละเอียด
พารามิเตอร์
[in] buf
ชี้ไปที่บัฟเฟอร์หน่วยความจําซึ่งเก็บข้อมูลที่เป็นความลับซึ่งควรล้าง
[in] len
ระบุขนาดข้อมูลลับในหน่วยไบต์

การเปรียบเทียบค่าคงที่

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
หรือไม่เช่นนั้น

ถอดรหัสBIGNUMValueLE

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

ลายเซ็น DecodeECDSA

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

คีย์ตัวถอดรหัส EC

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 - EC0

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

ตั้งค่า ECDSA_SIG

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

เข้ารหัสBIGNUMValueLE

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

ลายเซ็น EncodeECDSA

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
)

คงที่LenSigToECDSASig

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 สําหรับข้อมูลที่ต้องการโดยใช้คีย์ลับและเขียนลายเซ็นเป็นโครงสร้าง HMACลายเซ็น ของ Weave ไปยังผู้เขียน 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
)

สร้างและเข้ารหัสลายเซ็น Weave RSA

ประมวลผลลายเซ็น RSA โดยใช้แฮชส่วนตัวและข้อความ RSA ที่เข้ารหัส X509 ที่ระบุ และเขียนลายเซ็นเป็นโครงสร้าง Weave RSASignature ไปยังผู้เขียน TLV ที่ระบุด้วยแท็กที่ระบุ

รายละเอียด
พารามิเตอร์
[in] sigAlgoOID
อัลกอริทึม OID ที่ใช้ในการสร้างลายเซ็น RSA
[in] writer
ออบเจ็กต์ TLVWriter ที่ควรเขียนลายเซ็นที่เข้ารหัส
[in] tag
แท็ก TLV เพื่อเชื่อมโยงกับโครงสร้างลายเซ็นที่เข้ารหัส
[in] hash
บัฟเฟอร์ที่มีแฮชของข้อมูลที่จะลงนาม
[in] hashLen
ความยาวของไบต์ของแฮชข้อมูล
[in] keyDER
บัฟเฟอร์ที่มีคีย์ส่วนตัวที่จะใช้สร้างลายเซ็น คีย์ส่วนตัวควรเข้ารหัสเป็นโครงสร้างคีย์ส่วนตัว X509 RSA
[in] keyDERLen
ความยาวของไบต์ของคีย์ส่วนตัวที่เข้ารหัส
แสดงผลค่า
WEAVE_NO_ERROR
หากดําเนินการสําเร็จ
other
รหัสข้อผิดพลาดอื่นๆ ของ Weave ที่เกี่ยวข้องกับการถอดรหัสคีย์ส่วนตัว การสร้างลายเซ็น หรือการเข้ารหัสลายเซ็น

สร้าง ECECHH

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

สร้าง ECECDSA

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

สร้าง ECECDSA

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
)

ขนาด GetCurve

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

ขนาด GetCurve

int GetCurveSize(
  const OID curveOID
)

รับขนาดเส้นโค้งวงรี (หน่วยเป็นไบต์)

รายละเอียด
พารามิเตอร์
[in] curveOID
OID เส้นโค้งวงรีที่ระบุ
แสดงผลค่า
Returns
0 หาก CuroID ที่ระบุไม่รองรับ Elliptic Curve ไม่เช่นนั้น จะแสดงผลขนาดเส้นโค้งในหน่วยไบต์

GetECGroupForCurve

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

ย้อนกลับ

void ReverseBytes(
  uint8_t *buf,
  size_t len
)

ShaNIDFromSigAlgoOID

int ShaNIDFromSigAlgoOID(
  OID sigAlgoOID
)

ลายเซ็น ECECDSA

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

ลายเซ็น ECECDSA

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

ลายเซ็นลายเซ็น HMAC

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
อัลกอริทึม OID ที่ใช้ในการสร้างลายเซ็น HMAC
[in] data
บัฟเฟอร์ที่มีข้อมูลที่จะลงนาม
[in] dataLen
ความยาวของข้อมูลเป็นไบต์
[in] sig
เข้ารหัสลายเซ็น HMAC เพื่อรับการยืนยันแล้ว
[in] key
บัฟเฟอร์ที่มีคีย์ลับสําหรับใช้สร้างลายเซ็น HMAC
[in] keyLen
ความยาวของไบต์ของคีย์ลับ
แสดงผลค่า
WEAVE_NO_ERROR
หากการยืนยันลายเซ็น HMAC สําเร็จ
WEAVE_ERROR_INVALID_SIGNATURE
หากการยืนยันลายเซ็น HMAC ล้มเหลว

ลายเซ็น RSA

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
อัลกอริทึม OID ที่ใช้ในการสร้างลายเซ็น RSA
[in] hash
บัฟเฟอร์ที่มีแฮชของข้อมูลที่จะลงนาม
[in] hashLen
ความยาวของไบต์ของแฮชข้อมูล
[in] sig
ลายเซ็น RSA ที่เข้ารหัสเพื่อรับการยืนยัน
[in] certDER
บัฟเฟอร์ที่มีใบรับรองที่มีคีย์สาธารณะเพื่อใช้ยืนยันลายเซ็น ซึ่งใบรับรองควรเข้ารหัส DER เป็นโครงสร้าง RSA X509
[in] certDERLen
ความยาวเป็นไบต์ของใบรับรองที่เข้ารหัส
แสดงผลค่า
WEAVE_NO_ERROR
หากดําเนินการสําเร็จ