нл:: Переплетение:: Крипто

Это пространство имен включает в себя все интерфейсы Weave для общей криптографической поддержки.

Краткое содержание

Перечисления

X963EncodedPointFormat перечисление

Определения типов

AES128CTRDRBG определение типа
AES128CTRMode определение типа
AES256CTRMode определение типа
EntropyFunct )(uint8_t *buf, size_t bufSize) определение типа
int(*
Сигнатура функции, используемой для сбора случайных данных из источника энтропии.
HKDFSHA1 определение типа
HKDFSHA256 определение типа
HMACSHA1 определение типа
HMACSHA256 определение типа

Функции

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

Перечисления

X963EncodedPointFormat

 X963EncodedPointFormat

Определения типов

AES128CTRDRBG

CTR_DRBG< Platform::Security::AES128BlockCipherEnc > AES128CTRDRBG

AES128CTRMode

CTRMode< Platform::Security::AES128BlockCipherEnc > AES128CTRMode

AES256CTRMode

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

ХМАЧША1

HMAC< Platform::Security::SHA1 > HMACSHA1

ХМАЧША256

HMAC< Platform::Security::SHA256 > HMACSHA256

Функции

ClearSecretData

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

Очищает первые len байт области памяти buf .

В этой реализации первые len байт области памяти buf заполняются нулями.

Подробности
Параметры
[in] buf
Указатель на буфер памяти, содержащий секретные данные, которые следует очистить.
[in] len
Указывает размер секретных данных в байтах.

ConstantTimeCompare

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
)

ДекодированиеECDSASignature

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

ДекодированиеECKey

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_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
)

КодироватьBIGNUMValueLE

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

КодироватьECDSASignature

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 для заданных данных с использованием секретного ключа и записывает подпись в виде структуры Weave HMACSignature в указанный модуль записи 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, связанные с декодированием закрытого ключа, генерацией подписи или кодированием подписи.

СоздатьECDHKey

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

Создать подпись ECDSASignature

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

Создать подпись ECDSASignature

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
)

Получить размер эллиптической кривой (в байтах).

Подробности
Параметры
[in] curveOID
Указанный OID эллиптической кривой.
Возвращаемые значения
Returns
0, если указанный идентификатор CurveOID не поддерживается эллиптической кривой. В противном случае возвращает размер кривой в байтах.

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
)

Проверить подписьECDSASignature

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

Проверить подписьECDSASignature

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

Проверить подписьHMACSignature

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 не удалась.

Проверить подписьRSASignature

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
Буфер, содержащий сертификат с открытым ключом, который будет использоваться для проверки подписи. Ожидается, что сертификат будет иметь структуру X509 RSA, закодированную в DER.
[in] certDERLen
Длина закодированного сертификата в байтах.
Возвращаемые значения
WEAVE_NO_ERROR
Если операция прошла успешно.