nl::Weave::Crypto

Dieser Namespace umfasst alle Schnittstellen innerhalb von Weave zur gemeinsamen Unterstützung von kryptografischen Daten.

Zusammenfassung

Aufzählungen

X963EncodedPointFormat enum

Typedefs

AES128CTRDRBG typedef.
AES128CTRMode typedef.
AES256CTRMode typedef.
EntropyFunct)(uint8_t *buf, size_t bufSize) typedef.
int(*
Signatur einer Funktion, mit der zufällige Daten aus einer Entropiequelle erfasst werden.
HKDFSHA1 typedef.
HKDFSHA256 typedef.
HMACSHA1 typedef.
HMACSHA256 typedef.

Funktionen

ClearSecretData(uint8_t *buf, uint32_t len)
NL_DLL_EXPORT void
Löscht die ersten len Byte des Arbeitsspeicherbereichs buf.
ConstantTimeCompare(const uint8_t *buf1, const uint8_t *buf2, uint16_t len)
bool
Vergleicht die ersten len Byte des Arbeitsspeicherbereichs buf1 und des Arbeitsspeicherbereichs 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)
Generieren und codieren Sie eine Weave HMAC-Signatur.
GenerateAndEncodeWeaveRSASignature(OID sigAlgoOID, TLVWriter & writer, uint64_t tag, const uint8_t *hash, uint8_t hashLen, const uint8_t *keyDER, uint16_t keyDERLen)
Generieren und codieren Sie eine Weave-RSA-Signatur.
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
Ruft die Größe der elliptischen Kurve (in Byte) ab.
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)
Eine Weave-HMAC verifizieren
VerifyRSASignature(OID sigAlgoOID, const uint8_t *hash, uint8_t hashLen, const EncodedRSASignature & sig, const uint8_t *certDER, uint16_t certDERLen)
Bestätige eine Weave-RSA-Signatur.

Klassen

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

Aufzählungen

X963EncodedPointFormat

 X963EncodedPointFormat

Typedefs

AES128CTRDRBG

CTR_DRBG< Platform::Security::AES128BlockCipherEnc > AES128CTRDRBG

AES128CTR-Modus

CTRMode< Platform::Security::AES128BlockCipherEnc > AES128CTRMode

AES256CTR-Modus

CTRMode< Platform::Security::AES256BlockCipherEnc > AES256CTRMode

EntropyFunct

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

Signatur einer Funktion, mit der zufällige Daten aus einer Entropiequelle erfasst werden.

HKDFSHA1

HKDF< Platform::Security::SHA1 > HKDFSHA1

HKDFSHA256

HKDF< Platform::Security::SHA256 > HKDFSHA256

HMACSHA1

HMAC< Platform::Security::SHA1 > HMACSHA1

HMACSHA256

HMAC< Platform::Security::SHA256 > HMACSHA256

Funktionen

ClearSecretData

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

Löscht die ersten len Byte des Arbeitsspeicherbereichs buf.

Bei dieser Implementierung werden die ersten len Byte des Speicherbereichs buf mit Nullen gefüllt.

Details
Parameter
[in] buf
Zeiger auf einen Zwischenspeicher mit Secret-Daten, die gelöscht werden sollen.
[in] len
Gibt die Größe der Secret-Daten in Byte an.

ConstantTimeCompare

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

Vergleicht die ersten len Byte des Arbeitsspeicherbereichs buf1 und des Arbeitsspeicherbereichs buf2.

Die von dieser Funktion benötigte Zeit ist unabhängig von den Daten in den Speicherbereichen buf1 und buf2.

Details
Parameter
[in] buf1
Zeiger auf einen Speicherblock.
[in] buf2
Zeiger auf einen Speicherblock.
[in] len
Größe des zu vergleichenden Arbeitsspeicherbereichs in Byte.
Rückgabewerte
true
wenn die ersten len Byte des Speicherbereichs buf1 und buf2 gleich sind.
false
sonst.

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
)

EncoderX962ECPoint

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
)

Generieren und codieren Sie eine Weave HMAC-Signatur.

Berechnet mithilfe eines geheimen Schlüssels eine HMAC-Signatur für bestimmte Daten und schreibt die Signatur als Weave HMACSignature-Struktur in den angegebenen TLV-Autor mit dem jeweiligen Tag.

Details
Parameter
[in] sigAlgoOID
OID des Algorithmus, der zum Generieren der HMAC-Signatur verwendet werden soll.
[in] writer
Das TLVWriter-Objekt, in das die codierte Signatur geschrieben werden soll.
[in] tag
TLV-Tag, das mit der codierten Signaturstruktur verknüpft wird.
[in] data
Ein Zwischenspeicher mit den zu signierenden Daten.
[in] dataLen
Die Länge der Daten in Byte.
[in] key
Ein Zwischenspeicher mit dem geheimen Schlüssel, der zum Generieren der HMAC verwendet werden soll.
[in] keyLen
Die Länge des geheimen Schlüssels in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn der Vorgang erfolgreich war.
other
Sonstige Weave-Fehlercodes im Zusammenhang mit der Signaturcodierung.

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
)

Generieren und codieren Sie eine Weave-RSA-Signatur.

Berechnet eine RSA-Signatur mit einem bestimmten privaten X509-codierten privaten RSA-Schlüssel und Nachrichten-Hash und schreibt die Signatur als Weave-RSASignature-Struktur an den angegebenen TLV-Autor mit dem jeweiligen Tag.

Details
Parameter
[in] sigAlgoOID
OID des Algorithmus, der zum Generieren der RSA-Signatur verwendet werden soll.
[in] writer
Das TLVWriter-Objekt, in das die codierte Signatur geschrieben werden soll.
[in] tag
TLV-Tag, das mit der codierten Signaturstruktur verknüpft wird.
[in] hash
Ein Zwischenspeicher, der den Hash der zu signierenden Daten enthält.
[in] hashLen
Die Länge des Daten-Hash in Byte.
[in] keyDER
Ein Zwischenspeicher, der den privaten Schlüssel enthält, der zum Generieren der Signatur verwendet werden soll. Der private Schlüssel muss als private X509-RSA-Schlüsselstruktur codiert sein.
[in] keyDERLen
Die Länge des codierten privaten Schlüssels in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn der Vorgang erfolgreich war.
other
Sonstige Weave-Fehlercodes im Zusammenhang mit der Decodierung des privaten Schlüssels, der Generierung der Signatur oder der Codierung der Signatur.

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
)

Ruft die Größe der elliptischen Kurve (in Byte) ab.

Details
Parameter
[in] curveOID
Angegebene OID für elliptische Kurven.
Rückgabewerte
Returns
0, wenn die angegebene CurveOID nicht unterstützt wird Andernfalls wird die Kurvengröße in Byte zurückgegeben.

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
)

Eine Weave-HMAC verifizieren

Verifiziert eine HMAC-Signatur anhand der angegebenen Daten und eines geheimen Schlüssels, mit dem die Signatur verifiziert werden soll.

Details
Parameter
[in] sigAlgoOID
OID des Algorithmus, der zum Generieren der HMAC-Signatur verwendet werden soll.
[in] data
Ein Zwischenspeicher mit den zu signierenden Daten.
[in] dataLen
Die Länge der Daten in Byte.
[in] sig
Codierte HMAC-Signatur, die überprüft werden soll.
[in] key
Ein Zwischenspeicher mit dem geheimen Schlüssel, der zum Generieren der HMAC verwendet werden soll.
[in] keyLen
Die Länge des geheimen Schlüssels in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn die HMAC-Signaturprüfung erfolgreich war.
WEAVE_ERROR_INVALID_SIGNATURE
Wenn die HMAC-Signaturprüfung fehlgeschlagen ist.

VerifyRSASignature

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

Bestätige eine Weave-RSA-Signatur.

Verifiziert eine RSA-Signatur unter Verwendung des angegebenen Daten-Hashs und eines X509-codierten RSA-Zertifikats mit dem öffentlichen Schlüssel, der zum Verifizieren der Signatur verwendet werden soll.

Details
Parameter
[in] sigAlgoOID
OID des Algorithmus, der zum Generieren der RSA-Signatur verwendet werden soll.
[in] hash
Ein Zwischenspeicher, der den Hash der zu signierenden Daten enthält.
[in] hashLen
Die Länge des Daten-Hash in Byte.
[in] sig
Codierte RSA-Signatur, die verifiziert werden soll.
[in] certDER
Ein Zwischenspeicher, der das Zertifikat mit dem öffentlichen Schlüssel enthält, der zum Prüfen der Signatur verwendet werden soll. Das Zertifikat muss DER-verschlüsselte X509-RSA-Struktur sein.
[in] certDERLen
Die Länge des codierten Zertifikats in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Wenn der Vorgang erfolgreich war.