nl::Weave::Crypto

Namespace ini mencakup semua antarmuka di dalam Weave untuk dukungan kriptografi bersama.

Ringkasan

Enumerasi

X963EncodedPointFormat enum

Typedef

AES128CTRDRBG typedef
AES128CTRMode typedef
AES256CTRMode typedef
EntropyFunct)(uint8_t *buf, size_t bufSize) typedef
int(*
Tanda tangan fungsi yang digunakan untuk mengumpulkan data acak dari sumber entropi.
HKDFSHA1 typedef
HKDFSHA256 typedef
HMACSHA1 typedef
HMACSHA256 typedef

Fungsi

ClearSecretData(uint8_t *buf, uint32_t len)
NL_DLL_EXPORT void
Mengosongkan len byte pertama dari area memori buf.
ConstantTimeCompare(const uint8_t *buf1, const uint8_t *buf2, uint16_t len)
bool
Membandingkan len byte pertama area memori buf1 dan area memori 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)
Buat dan enkode tanda tangan HMAC Weave.
GenerateAndEncodeWeaveRSASignature(OID sigAlgoOID, TLVWriter & writer, uint64_t tag, const uint8_t *hash, uint8_t hashLen, const uint8_t *keyDER, uint16_t keyDERLen)
Buat dan enkode tanda tangan 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
Mendapatkan ukuran Kurva Elliptik (dalam byte).
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)
Verifikasi tanda tangan HMAC Weave.
VerifyRSASignature(OID sigAlgoOID, const uint8_t *hash, uint8_t hashLen, const EncodedRSASignature & sig, const uint8_t *certDER, uint16_t certDERLen)
Verifikasi tanda tangan RSA Weave.

Class

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

Enumerasi

X963EncodedPointFormat

 X963EncodedPointFormat

Typedef

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)

Tanda tangan fungsi yang digunakan untuk mengumpulkan data acak dari sumber entropi.

HKDFSHA1

HKDF< Platform::Security::SHA1 > HKDFSHA1

HKDFSHA256

HKDF< Platform::Security::SHA256 > HKDFSHA256

HMACSHA1

HMAC< Platform::Security::SHA1 > HMACSHA1

HMACSHA256

HMAC< Platform::Security::SHA256 > HMACSHA256

Fungsi

ClearSecretData

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

Mengosongkan len byte pertama dari area memori buf.

Dalam implementasi ini, len byte pertama dari area memori buf diisi dengan nol.

Detail
Parameter
[in] buf
Pointer ke buffer memori yang menyimpan data rahasia yang harus dihapus.
[in] len
Menentukan ukuran data secret dalam byte.

ConstantTimeCompare

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

Membandingkan len byte pertama area memori buf1 dan area memori buf2.

Waktu yang dibutuhkan oleh fungsi ini tidak bergantung pada data di area memori buf1 dan buf2.

Detail
Parameter
[in] buf1
Pointer ke blok memori.
[in] buf2
Pointer ke blok memori.
[in] len
Ukuran area memori yang akan dibandingkan dalam byte.
Nilai yang Ditampilkan
true
jika len byte pertama dari area memori buf1 dan buf2 sama.
false
sebaliknya.

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
)

DekodeX962ECPoint

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

DekodeX962ECPoint

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
)

EnkodeX962ECPoint

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
)

Buat dan enkode tanda tangan HMAC Weave.

Menghitung tanda tangan HMAC untuk data tertentu menggunakan kunci rahasia dan menulis tanda tangan sebagai struktur Weave HMACSignature ke penulis TLV yang ditentukan dengan tag yang diberikan.

Detail
Parameter
[in] sigAlgoOID
OID algoritma yang akan digunakan untuk menghasilkan tanda tangan HMAC.
[in] writer
Objek TLVWriter tempat tanda tangan yang dienkode harus ditulis.
[in] tag
TLV yang akan dikaitkan dengan struktur tanda tangan yang dienkode.
[in] data
Buffering berisi data yang akan ditandatangani.
[in] dataLen
Panjang data dalam byte.
[in] key
Buffer yang berisi kunci rahasia yang akan digunakan untuk menghasilkan tanda tangan HMAC.
[in] keyLen
Panjang kunci rahasia dalam byte.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika operasi berhasil.
other
Kode error Weave lainnya yang terkait dengan encoding tanda tangan.

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
)

Buat dan enkode tanda tangan RSA Weave.

Menghitung tanda tangan RSA menggunakan hash pesan dan kunci pribadi RSA berenkode X509 tertentu, serta menulis tanda tangan tersebut sebagai struktur RSASignature Weave ke penulis TLV yang ditentukan dengan tag yang ditentukan.

Detail
Parameter
[in] sigAlgoOID
Algoritma OID yang akan digunakan untuk membuat tanda tangan RSA.
[in] writer
Objek TLVWriter tempat tanda tangan yang dienkode harus ditulis.
[in] tag
TLV yang akan dikaitkan dengan struktur tanda tangan yang dienkode.
[in] hash
Buffering yang berisi hash data yang akan ditandatangani.
[in] hashLen
Panjang hash data dalam byte.
[in] keyDER
Buffer yang berisi kunci pribadi yang akan digunakan untuk menghasilkan tanda tangan. Kunci pribadi diharapkan dienkode sebagai struktur kunci pribadi RSA X509.
[in] keyDERLen
Panjang kunci pribadi yang dienkode dalam byte.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika operasi berhasil.
other
Kode error Weave lainnya yang terkait dengan decoding kunci pribadi, menghasilkan tanda tangan atau mengenkode tanda tangan.

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
)

Mendapatkan ukuran Kurva Elliptik (dalam byte).

Detail
Parameter
[in] curveOID
OID Kurva Eliptik yang Ditentukan.
Nilai yang Ditampilkan
Returns
0 jika curveOID yang ditentukan tidak didukung Kurva Elliptik. Jika tidak, menampilkan ukuran kurva dalam byte.

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
)

Verifikasi tanda tangan HMAC Weave.

Memverifikasi tanda tangan HMAC menggunakan data yang diberikan dan kunci rahasia yang akan digunakan untuk memverifikasi tanda tangan.

Detail
Parameter
[in] sigAlgoOID
OID algoritma yang akan digunakan untuk menghasilkan tanda tangan HMAC.
[in] data
Buffering berisi data yang akan ditandatangani.
[in] dataLen
Panjang data dalam byte.
[in] sig
Tanda tangan HMAC yang dienkode untuk diverifikasi.
[in] key
Buffer yang berisi kunci rahasia yang akan digunakan untuk menghasilkan tanda tangan HMAC.
[in] keyLen
Panjang kunci rahasia dalam byte.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika verifikasi tanda tangan HMAC berhasil.
WEAVE_ERROR_INVALID_SIGNATURE
Jika verifikasi tanda tangan HMAC gagal.

VerifyRSASignature

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

Verifikasi tanda tangan RSA Weave.

Memverifikasi tanda tangan RSA menggunakan hash data yang diberikan dan sertifikat RSA yang dienkode dengan X509 yang berisi kunci publik yang akan digunakan untuk memverifikasi tanda tangan.

Detail
Parameter
[in] sigAlgoOID
Algoritma OID yang akan digunakan untuk membuat tanda tangan RSA.
[in] hash
Buffering yang berisi hash data yang akan ditandatangani.
[in] hashLen
Panjang hash data dalam byte.
[in] sig
Tanda tangan RSA yang dienkode untuk diverifikasi.
[in] certDER
Buffering yang berisi sertifikat dengan kunci publik yang akan digunakan untuk memverifikasi tanda tangan. Sertifikat ini diharapkan berupa struktur RSA X509 yang dienkode dengan DER.
[in] certDERLen
Panjang sertifikat yang dienkode dalam byte.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Jika operasi berhasil.