nl::Weave::Crypto

Dieser Namespace enthält alle Schnittstellen in Weave zur gemeinsamen kryptografischen Unterstützung.

Zusammenfassung

Aufzählungen

X963EncodedPointFormat enum

Typedefs

AES128CTRDRBG typedef
AES128CTRMode typedef
AES256CTRMode typedef
EntropyFunct)(uint8_t *buf, size_t bufSize) typedef
int(*
Signatur einer Funktion, die zum Erfassen zufälliger Daten aus einer Entropiequelle verwendet wird.
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.
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)
Prüfen Sie eine Weave-HMAC.
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.

Kurse

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

AES128CTRMode

CTRMode< Platform::Security::AES128BlockCipherEnc > AES128CTRMode

AES256CTRMode

CTRMode< Platform::Security::AES256BlockCipherEnc > AES256CTRMode

EntropyFunct

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

Signatur einer Funktion, die zum Erfassen zufälliger Daten aus einer Entropiequelle verwendet wird.

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 aufgefüllt.

Details
Parameter
[in] buf
Zeiger auf einen Arbeitsspeicherpuffer 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 für diese 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
Andernfalls.

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
)

CodX962ECPoint

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.

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

Details
Parameter
[in] sigAlgoOID
Algorithmus-OID, die 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 der codierten Signaturstruktur zugeordnet werden soll.
[in] data
Ein Puffer, der die zu signierenden Daten enthält.
[in] dataLen
Die Länge der Daten in Byte.
[in] key
Ein Zwischenspeicher mit dem geheimen Schlüssel, der zum Generieren der HMAC-Signatur verwendet werden soll.
[in] keyLen
Die Länge des geheimen Schlüssels in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob der Vorgang erfolgreich war.
other
Andere 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 X509-codierten privaten RSA-Schlüssel und Nachrichten-Hash und schreibt die Signatur als Weave-RSASignature-Struktur in den angegebenen TLV-Writer mit dem angegebenen Tag.

Details
Parameter
[in] sigAlgoOID
Algorithmus-OID, mit dem die RSA-Signatur generiert werden soll.
[in] writer
Das TLVWriter-Objekt, in das die codierte Signatur geschrieben werden soll.
[in] tag
TLV-Tag, das der codierten Signaturstruktur zugeordnet werden soll.
[in] hash
Ein Zwischenspeicher mit dem Hash der zu signierenden Daten.
[in] hashLen
Die Länge des Daten-Hash in Byte.
[in] keyDER
Ein Puffer mit dem privaten Schlüssel, 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
Gibt an, ob der Vorgang erfolgreich war.
other
Andere Weave-Fehlercodes im Zusammenhang mit dem Decodieren 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 Curve OID keine elliptische Kurve unterstützt. 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
)

Prüfen Sie eine Weave-HMAC.

Verifiziert eine HMAC mithilfe der angegebenen Daten und eines geheimen Schlüssels.

Details
Parameter
[in] sigAlgoOID
Algorithmus-OID, die zum Generieren der HMAC-Signatur verwendet werden soll.
[in] data
Ein Puffer, der die zu signierenden Daten enthält.
[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-Signatur 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 mithilfe des angegebenen Daten-Hash und eines X509-codierten RSA-Zertifikats, das den öffentlichen Schlüssel zum Verifizieren der Signatur enthält.

Details
Parameter
[in] sigAlgoOID
Algorithmus-OID, mit dem die RSA-Signatur generiert werden soll.
[in] hash
Ein Zwischenspeicher mit dem Hash der zu signierenden Daten.
[in] hashLen
Die Länge des Daten-Hash in Byte.
[in] sig
Codierte RSA-Signatur, die verifiziert werden muss.
[in] certDER
Ein Zwischenspeicher, der das Zertifikat mit dem öffentlichen Schlüssel zur Überprüfung der Signatur enthält. Das Zertifikat muss der DER-codiert sein und eine X509-RSA-Struktur haben.
[in] certDERLen
Die Länge des codierten Zertifikats in Byte.
Rückgabewerte
WEAVE_NO_ERROR
Gibt an, ob der Vorgang erfolgreich war.