nl::Weave::Crypto

Cet espace de noms inclut toutes les interfaces de Weave pour la prise en charge du chiffrement partagé.

Résumé

Énumérations

X963EncodedPointFormat enum

Typedefs

AES128CTRDRBG typedef
AES128CTRMode typedef
AES256CTRMode typedef
EntropyFunct)(uint8_t *buf, size_t bufSize) typedef
int(*
Signature d'une fonction utilisée pour collecter des données aléatoires à partir d'une source d'entropie.
HKDFSHA1 typedef
HKDFSHA256 typedef
HMACSHA1 typedef
HMACSHA256 typedef

distantes

ClearSecretData(uint8_t *buf, uint32_t len)
NL_DLL_EXPORT void
Efface les len premiers octets de la zone de mémoire buf.
ConstantTimeCompare(const uint8_t *buf1, const uint8_t *buf2, uint16_t len)
bool
Compare les len premiers octets de la zone de mémoire buf1 à la zone de mémoire 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)
Générez et encodez une signature HMAC Weave.
GenerateAndEncodeWeaveRSASignature(OID sigAlgoOID, TLVWriter & writer, uint64_t tag, const uint8_t *hash, uint8_t hashLen, const uint8_t *keyDER, uint16_t keyDERLen)
Générez et encodez une signature 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
Obtenir la taille de la courbe elliptique (en octets).
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)
Vérifiez une signature HMAC Weave.
VerifyRSASignature(OID sigAlgoOID, const uint8_t *hash, uint8_t hashLen, const EncodedRSASignature & sig, const uint8_t *certDER, uint16_t certDERLen)
Vérifiez une signature RSA Weave.

Classes

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

Énumérations

X963EncodedPointFormat

 X963EncodedPointFormat

Typedefs

AES128CTRDRBG

CTR_DRBG< Platform::Security::AES128BlockCipherEnc > AES128CTRDRBG

Mode CTR AES128

CTRMode< Platform::Security::AES128BlockCipherEnc > AES128CTRMode

Mode CTR AES256

CTRMode< Platform::Security::AES256BlockCipherEnc > AES256CTRMode

EntropyFunct

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

Signature d'une fonction utilisée pour collecter des données aléatoires à partir d'une source d'entropie.

HKDFSHA1

HKDF< Platform::Security::SHA1 > HKDFSHA1

HKDFSHA256

HKDF< Platform::Security::SHA256 > HKDFSHA256

HMACSHA1

HMAC< Platform::Security::SHA1 > HMACSHA1

HMACSHA256

HMAC< Platform::Security::SHA256 > HMACSHA256

distantes

ClearSecretData

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

Efface les len premiers octets de la zone de mémoire buf.

Dans cette implémentation, les len premiers octets de la zone de mémoire buf sont remplis de zéros.

Détails
Paramètres
[in] buf
Pointeur pointant vers un tampon de mémoire contenant les données des secrets qui doivent être effacées.
[in] len
Spécifie la taille des données de secret en octets.

ConstantTimeCompare

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

Compare les len premiers octets de la zone de mémoire buf1 à la zone de mémoire buf2.

Le temps nécessaire à cette fonction est indépendant des données des zones de mémoire buf1 et buf2.

Détails
Paramètres
[in] buf1
Pointeur vers un bloc de mémoire.
[in] buf2
Pointeur vers un bloc de mémoire.
[in] len
Taille de la zone de mémoire à comparer en octets.
Valeurs de retour
true
si les len premiers octets de la zone de mémoire, buf1 et buf2 sont égaux.
false
sinon.

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
)

DecodeX962ECPoint

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

DecodeX962ECPoint

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
)

EncodeX962ECPoint

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
)

Générez et encodez une signature HMAC Weave.

Calcule une signature HMAC pour une donnée donnée à l'aide d'une clé secrète et écrit la signature en tant que structure HMACSignature Weave sur le rédacteur TLV spécifié avec le tag donné.

Détails
Paramètres
[in] sigAlgoOID
OID de l'algorithme permettant de générer une signature HMAC.
[in] writer
Objet TLVWriter dans lequel la signature encodée doit être écrite.
[in] tag
TLV à associer à la structure de signature encodée.
[in] data
Tampon contenant les données à signer.
[in] dataLen
Longueur des données, en octets.
[in] key
Un tampon contenant la clé secrète à utiliser pour générer la signature HMAC.
[in] keyLen
Longueur de la clé secrète, en octets.
Valeurs de retour
WEAVE_NO_ERROR
Indique si l'opération a réussi.
other
Autres codes d'erreur Weave liés à l'encodage des signatures.

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
)

Générez et encodez une signature RSA Weave.

Calcule une signature RSA à l'aide d'une clé privée RSA encodée en X509 et d'un hachage de message donnés, puis écrit la signature sous la forme d'une structure RSASignature Weave pour le rédacteur TLV spécifié avec la balise donnée.

Détails
Paramètres
[in] sigAlgoOID
OID de l'algorithme à utiliser pour générer une signature RSA.
[in] writer
Objet TLVWriter dans lequel la signature encodée doit être écrite.
[in] tag
TLV à associer à la structure de signature encodée.
[in] hash
Tampon contenant le hachage des données à signer.
[in] hashLen
Longueur du hachage des données, en octets.
[in] keyDER
Un tampon contenant la clé privée à utiliser pour générer la signature. La clé privée doit être encodée sous la forme d'une structure de clé privée RSA X509.
[in] keyDERLen
Longueur en octets de la clé privée encodée.
Valeurs de retour
WEAVE_NO_ERROR
Indique si l'opération a réussi.
other
Autres codes d'erreur Weave liés au décodage de la clé privée, à la génération ou à l'encodage de la signature.

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
)

Obtenir la taille de la courbe elliptique (en octets).

Détails
Paramètres
[in] curveOID
OID de courbe elliptique spécifié.
Valeurs de retour
Returns
0 si la valeur "curveOID" est spécifiée n'est pas compatible avec la courbe elliptique. Sinon, renvoie la taille de la courbe en octets.

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
)

Vérifiez une signature HMAC Weave.

Vérifie une signature HMAC à l'aide des données fournies et d'une clé secrète à utiliser pour vérifier la signature.

Détails
Paramètres
[in] sigAlgoOID
OID de l'algorithme permettant de générer une signature HMAC.
[in] data
Tampon contenant les données à signer.
[in] dataLen
Longueur des données, en octets.
[in] sig
Signature HMAC encodée à vérifier.
[in] key
Un tampon contenant la clé secrète à utiliser pour générer la signature HMAC.
[in] keyLen
Longueur de la clé secrète, en octets.
Valeurs de retour
WEAVE_NO_ERROR
Si la validation de la signature HMAC a réussi.
WEAVE_ERROR_INVALID_SIGNATURE
Si la validation de la signature HMAC a échoué.

VerifyRSASignature

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

Vérifiez une signature RSA Weave.

Vérifie une signature RSA à l'aide d'un hachage de données donné et d'un certificat RSA encodé au format X509 contenant la clé publique à utiliser pour vérifier la signature.

Détails
Paramètres
[in] sigAlgoOID
OID de l'algorithme à utiliser pour générer une signature RSA.
[in] hash
Tampon contenant le hachage des données à signer.
[in] hashLen
Longueur du hachage des données, en octets.
[in] sig
Signature RSA codée à vérifier.
[in] certDER
Tampon contenant le certificat avec la clé publique à utiliser pour vérifier la signature. Le certificat doit être encodé au format DER selon une structure RSA X509.
[in] certDERLen
Longueur du certificat encodé, en octets.
Valeurs de retour
WEAVE_NO_ERROR
Indique si l'opération a réussi.