nl :: Tecer:: Criptográfico

Este namespace inclui todas as interfaces dentro do Weave para suporte criptográfico compartilhado.

Resumo

Enumerações

X963EncodedPointFormat enum

Typedefs

AES128CTRDRBG typedef
AES128CTRMode typedef
AES256CTRMode typedef
EntropyFunct )(uint8_t *buf, size_t bufSize) typedef
int(*
Assinatura de uma função usada para coletar dados aleatórios de uma fonte de entropia.
HKDFSHA1 typedef
HKDFSHA256 typedef
HMACSHA1 typedef
HMACSHA256 typedef

Funções

ClearSecretData (uint8_t *buf, uint32_t len)
NL_DLL_EXPORT void
Limpa os primeiros len bytes de área de memória buf .
ConstantTimeCompare (const uint8_t *buf1, const uint8_t *buf2, uint16_t len)
bool
Compara o primeiro len bytes de área de memória buf1 e área de memória 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)
Gerar e codificar um Weave HMAC assinatura.
GenerateAndEncodeWeaveRSASignature (OID sigAlgoOID,TLVWriter & writer, uint64_t tag, const uint8_t *hash, uint8_t hashLen, const uint8_t *keyDER, uint16_t keyDERLen)
Gere e codifique uma assinatura 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
Obtenha o tamanho da curva elíptica (em bytes).
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)
Verificar uma Weave HMAC assinatura.
VerifyRSASignature (OID sigAlgoOID, const uint8_t *hash, uint8_t hashLen, const EncodedRSASignature & sig, const uint8_t *certDER, uint16_t certDERLen)
Verifique uma assinatura Weave RSA.

Aulas

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

Enumerações

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)

Assinatura de uma função usada para coletar dados aleatórios de uma fonte de entropia.

HKDFSHA1

HKDF< Platform::Security::SHA1 > HKDFSHA1

HKDFSHA256

HKDF< Platform::Security::SHA256 > HKDFSHA256

HMACSHA1

HMAC< Platform::Security::SHA1 > HMACSHA1

HMACSHA256

HMAC< Platform::Security::SHA256 > HMACSHA256

Funções

ClearSecretData

NL_DLL_EXPORT void ClearSecretData(
  uint8_t *buf,
  uint32_t len
)

Limpa os primeiros len bytes de área de memória buf .

Nesta implementação primeiro len bytes de área de memória buf são preenchidos com zeros.

Detalhes
Parâmetros
[in] buf
Ponteiro para um buffer de memória que contém dados secretos que devem ser apagados.
[in] len
Especifica o tamanho dos dados secretos em bytes.

ConstantTimeCompare

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

Compara o primeiro len bytes de área de memória buf1 e área de memória buf2 .

O tempo gasto por esta função é independente dos dados em áreas de memória buf1 e buf2 .

Detalhes
Parâmetros
[in] buf1
Ponteiro para um bloco de memória.
[in] buf2
Ponteiro para um bloco de memória.
[in] len
Tamanho da área de memória para comparar em bytes.
Valores Retornados
true
se primeiro len bytes de área de memória buf1 e buf2 são iguais.
false
por outro lado.

DecodeBIGNUMValueLE

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

Decodificar ECDSASignature

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
)

Gerar e codificar um Weave HMAC assinatura.

Calcula um HMAC assinatura para um dado dados usando chave secreta e escreve a assinatura como uma estrutura Weave HMACSignature ao especificado TLV escritor com a tag dada.

Detalhes
Parâmetros
[in] sigAlgoOID
Algoritmo OID a ser usado para gerar HMAC assinatura.
[in] writer
O objeto TLVWriter no qual a assinatura codificada deve ser gravada.
[in] tag
TLV etiqueta a ser associada com a estrutura da assinatura codificada.
[in] data
Um buffer contendo os dados a serem assinados.
[in] dataLen
O comprimento em bytes dos dados.
[in] key
Uma solução tampão com a chave secreta a ser utilizada para gerar HMAC assinatura.
[in] keyLen
O comprimento em bytes da chave secreta.
Valores Retornados
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
other
Outros códigos de erro do Weave relacionados à codificação da assinatura.

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
)

Gere e codifique uma assinatura Weave RSA.

Calcula uma assinatura RSA usando um determinado X509 codificado RSA chave e mensagem de hash privado e escreve a assinatura como uma estrutura Weave RSASignature ao especificado TLV escritor com a tag dada.

Detalhes
Parâmetros
[in] sigAlgoOID
Algoritmo OID a ser usado para gerar a assinatura RSA.
[in] writer
O objeto TLVWriter no qual a assinatura codificada deve ser gravada.
[in] tag
TLV etiqueta a ser associada com a estrutura da assinatura codificada.
[in] hash
Um buffer contendo o hash dos dados a serem assinados.
[in] hashLen
O comprimento em bytes do hash de dados.
[in] keyDER
Um buffer contendo a chave privada a ser usada para gerar a assinatura. Espera-se que a chave privada seja codificada como uma estrutura de chave privada X509 RSA.
[in] keyDERLen
O comprimento em bytes da chave privada codificada.
Valores Retornados
WEAVE_NO_ERROR
Se a operação for bem-sucedida.
other
Outros códigos de erro Weave relacionados à decodificação da chave privada, gerando a assinatura ou codificando a assinatura.

GerarECDHKey

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

Gerar assinatura ECDS

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

Gerar assinatura ECDS

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
)

Obtenha o tamanho da curva elíptica (em bytes).

Detalhes
Parâmetros
[in] curveOID
Curva elíptica especificada OID.
Valores Retornados
Returns
0 se o curveOID especificado for uma curva elíptica não suportada. Caso contrário, retorna o tamanho da curva em bytes.

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
)

Verificar assinatura ECDS

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

Verificar assinatura ECDS

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
)

Verificar uma Weave HMAC assinatura.

Verifica um HMAC assinatura usando dados fornecidos e uma chave secreta para ser usado para verificar a assinatura.

Detalhes
Parâmetros
[in] sigAlgoOID
Algoritmo OID a ser usado para gerar HMAC assinatura.
[in] data
Um buffer contendo os dados a serem assinados.
[in] dataLen
O comprimento em bytes dos dados.
[in] sig
Codificado HMAC assinatura para ser verificada.
[in] key
Uma solução tampão com a chave secreta a ser utilizada para gerar HMAC assinatura.
[in] keyLen
O comprimento em bytes da chave secreta.
Valores Retornados
WEAVE_NO_ERROR
Se HMAC verificação de assinatura sucedido.
WEAVE_ERROR_INVALID_SIGNATURE
Se HMAC verificação de assinatura falhou.

VerifyRSASignature

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

Verifique uma assinatura Weave RSA.

Verifica uma assinatura RSA usando o hash de dados fornecido e um certificado RSA codificado em X509 contendo a chave pública a ser usada para verificar a assinatura.

Detalhes
Parâmetros
[in] sigAlgoOID
Algoritmo OID a ser usado para gerar a assinatura RSA.
[in] hash
Um buffer contendo o hash dos dados a serem assinados.
[in] hashLen
O comprimento em bytes do hash de dados.
[in] sig
Assinatura RSA codificada a ser verificada.
[in] certDER
Um buffer contendo o certificado com chave pública a ser usado para verificar a assinatura. O certificado deve ser codificado por DER em uma estrutura X509 RSA.
[in] certDERLen
O comprimento em bytes do certificado codificado.
Valores Retornados
WEAVE_NO_ERROR
Se a operação for bem-sucedida.