Crypto: plataforma

Este módulo inclui a abstração da plataforma para Crypto.

Resumo

Enumerações

anonymous enum{
  OT_CRYPTO_KEY_USAGE_NONE = 0,
  OT_CRYPTO_KEY_USAGE_EXPORT = 1 << 0,
  OT_CRYPTO_KEY_USAGE_ENCRYPT = 1 << 1,
  OT_CRYPTO_KEY_USAGE_DECRYPT = 1 << 2,
  OT_CRYPTO_KEY_USAGE_SIGN_HASH = 1 << 3,
  OT_CRYPTO_KEY_USAGE_VERIFY_HASH = 1 << 4
}
enum
Define as sinalizações de uso das chaves.
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256,
  OT_CRYPTO_KEY_ALG_ECDSA
}
enum
Define os principais algoritmos.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Define os tipos de armazenamento de chaves.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Define os tipos de chave.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Esse tipo de dados representa a referência da chave.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Representa um hash SHA-256.

Variáveis

OT_TOOL_PACKED_END

Funções

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Criptografe os dados fornecidos.
otPlatCryptoAesFree(otCryptoContext *aContext)
Libere o contexto do AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
Inicialize a operação do AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Defina a chave para a operação do AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Destrua uma chave armazenada no PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Acesse a chave pública associada da referência de chave transmitida.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Gere e importe um novo par de chaves ECDSA na referência transmitida.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Gere e preencha o buffer de saída com um novo par de chaves ECDSA.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Receba a chave pública associada do contexto de entrada.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcule a assinatura ECDSA para uma mensagem com hash usando a chave privada do contexto de entrada.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcule a assinatura ECDSA de uma mensagem com hash usando a referência de chave transmitida.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Use a chave do contexto de entrada para verificar a assinatura ECDSA de uma mensagem com hash.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Use a referência de chave para verificar a assinatura ECDSA de uma mensagem com hash.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Exporte uma chave armazenada no PSA ITS.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Verifique se a referência de chave aprovada tem uma chave associada no PSA ITS.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Desinicialize o contexto de HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Realize a etapa de expansão do HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Realize a etapa de extração de HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Inicialize o contexto de HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Desinicialize a operação HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Conclua a operação HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Inicialize a operação HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Iniciar operação HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Atualize a operação HMAC com uma nova entrada.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Importe uma chave para o PSA ITS.
otPlatCryptoInit(void)
void
Inicialize o módulo Crypto.
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
Execute o PKCS#5 PBKDF2 usando o CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Desinicialize o gerador de números pseudoaleatórios com segurança criptográfica (CSPRNG).
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Preenche um determinado buffer com bytes aleatórios criptograficamente seguros.
otPlatCryptoRandomInit(void)
void
Inicializar o gerador de números pseudoaleatórios com segurança criptográfica (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Cancele a operação SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Conclua a operação SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Inicialize a operação SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
Inicie a operação SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Atualize a operação SHA-256 com uma nova entrada.

Estruturas

otCryptoContext

Armazena o objeto de contexto para APIs de plataforma.

otCryptoKey

Representa o material da chave necessário para operações de criptografia.

otPlatCryptoEcdsaKeyPair

Representa um par de chaves ECDSA (chaves públicas e privadas).

otPlatCryptoEcdsaPublicKey

Representa uma chave pública ECDSA.

otPlatCryptoEcdsaSignature

Representa uma assinatura ECDSA.

otPlatCryptoSha256Hash

Representa um hash SHA-256.

Enumerações

enumeração anônima

 anonymous enum

Define as sinalizações de uso das chaves.

Propriedades
OT_CRYPTO_KEY_USAGE_DECRYPT

Uso da chave: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Uso da chave: criptografia (definida pelo fornecedor).

OT_CRYPTO_KEY_USAGE_EXPORT

Uso da chave: a chave pode ser exportada.

OT_CRYPTO_KEY_USAGE_NONE

Uso da chave: o uso da chave está em branco.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Uso da chave: hash de assinatura.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Uso da chave: verificar hash.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Define os principais algoritmos.

Propriedades
OT_CRYPTO_KEY_ALG_AES_ECB

Algoritmo principal: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Algoritmo principal: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Algoritmo da chave: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Algoritmo principal: definido pelo fornecedor.

otCryptoKeyStorage

 otCryptoKeyStorage

Define os tipos de armazenamento de chaves.

Propriedades
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Persistência de chave: a chave é persistente.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Persistência de chave: chave é volátil.

otCryptoKeyType

 otCryptoKeyType

Define os tipos de chave.

Propriedades
OT_CRYPTO_KEY_TYPE_AES

Tipo de chave: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Tipo de chave: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Tipo de chave: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Tipo de chave: dados brutos.

Typedefs

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Esse tipo de dados representa a referência da chave.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Representa um hash SHA-256.

Variáveis

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Funções

otPlatCryptoAesEncrypt

otError otPlatCryptoAesEncrypt(
  otCryptoContext *aContext,
  const uint8_t *aInput,
  uint8_t *aOutput
)

Criptografe os dados fornecidos.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação do AES.
[in] aInput
Ponteiro para o buffer de entrada.
[in] aOutput
Ponteiro para o buffer de saída.
Valores de retorno
OT_ERROR_NONE
aInput criptografado.
OT_ERROR_FAILED
Falha ao criptografar aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey ou aOutput estavam NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Libere o contexto do AES.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação do AES.
Valores de retorno
OT_ERROR_NONE
O contexto do AES foi liberado.
OT_ERROR_FAILED
Falha ao liberar contexto AES.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Inicialize a operação do AES.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação do AES.
Valores de retorno
OT_ERROR_NONE
Operação AES inicializada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação do AES.
OT_ERROR_INVALID_ARGS
aContext estava NULL
OT_ERROR_NO_BUFS
Não é possível alocar o contexto.

otPlatCryptoAesSetKey

otError otPlatCryptoAesSetKey(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

Defina a chave para a operação do AES.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação do AES.
[out] aKey
Chave a ser usada para a operação AES.
Valores de retorno
OT_ERROR_NONE
A chave para a operação AES foi definida.
OT_ERROR_FAILED
Falha ao definir a chave para a operação do AES.
OT_ERROR_INVALID_ARGS
aContext ou aKey estava NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Destrua uma chave armazenada no PSA ITS.

Detalhes
Parâmetros
[in] aKeyRef
A referência de chave a ser destruída
Valores de retorno
OT_ERROR_NONE
A chave foi destruída.
OT_ERROR_FAILED
Falha ao destruir a chave.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Acesse a chave pública associada da referência de chave transmitida.

A chave pública é armazenada de maneira diferente, dependendo da biblioteca de back-end de criptografia usada (OPENTHREAD_CONFIG_CRYPTO_LIB).

Essa API precisa retornar a chave pública como uma representação de sequência de bytes de um ponto de curva descompactado (RFC 6605 - seção 4)

Detalhes
Parâmetros
[in] aKeyRef
Referência da chave ao slot em que o par de chaves está armazenado.
[out] aPublicKey
Um ponteiro para uma estrutura de chave pública ECDSA para armazenar a chave pública.
Valores de retorno
OT_ERROR_NONE
A chave pública foi recuperada e aBuffer foi atualizado.
OT_ERROR_PARSE
Não foi possível analisar o formato DER do par de chaves (formato inválido).
OT_ERROR_INVALID_ARGS
O aContext é NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Gere e importe um novo par de chaves ECDSA na referência transmitida.

Detalhes
Parâmetros
[in] aKeyRef
Referência da chave ao slot em que o par de chaves está armazenado.
Valores de retorno
OT_ERROR_NONE
Um novo par de chaves foi gerado.
OT_ERROR_NO_BUFS
Falha ao alocar buffer para a geração da chave.
OT_ERROR_NOT_CAPABLE
Recurso indisponível.
OT_ERROR_FAILED
Falha ao gerar par de chaves.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Gere e preencha o buffer de saída com um novo par de chaves ECDSA.

Detalhes
Parâmetros
[out] aKeyPair
Um ponteiro para uma estrutura de par de chaves ECDSA para armazenar o par de chaves gerado.
Valores de retorno
OT_ERROR_NONE
Um novo par de chaves foi gerado.
OT_ERROR_NO_BUFS
Falha ao alocar buffer para a geração da chave.
OT_ERROR_NOT_CAPABLE
Recurso indisponível.
OT_ERROR_FAILED
Falha ao gerar par de chaves.

otPlatCryptoEcdsaGetPublicKey

otError otPlatCryptoEcdsaGetPublicKey(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Receba a chave pública associada do contexto de entrada.

Detalhes
Parâmetros
[in] aKeyPair
Um ponteiro para uma estrutura de par de chaves ECDSA em que o par de chaves é armazenado.
[out] aPublicKey
Um ponteiro para uma estrutura de chave pública ECDSA para armazenar a chave pública.
Valores de retorno
OT_ERROR_NONE
A chave pública foi recuperada e aBuffer foi atualizado.
OT_ERROR_PARSE
Não foi possível analisar o formato DER do par de chaves (formato inválido).
OT_ERROR_INVALID_ARGS
O aContext é NULL.

otPlatCryptoEcdsaSign

otError otPlatCryptoEcdsaSign(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

Calcule a assinatura ECDSA para uma mensagem com hash usando a chave privada do contexto de entrada.

Usa o procedimento determinístico de geração de assinatura digital da RFC 6979.

Detalhes
Parâmetros
[in] aKeyPair
Um ponteiro para uma estrutura de par de chaves ECDSA em que o par de chaves é armazenado.
[in] aHash
Um ponteiro para uma estrutura de hash SHA-256 em que o valor de hash para o cálculo da assinatura é armazenado.
[out] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA para produzir a assinatura calculada.
Valores de retorno
OT_ERROR_NONE
A assinatura foi calculada, aSignature foi atualizada.
OT_ERROR_PARSE
Não foi possível analisar o formato DER do par de chaves (formato inválido).
OT_ERROR_NO_BUFS
Falha ao alocar buffer para o cálculo da assinatura.
OT_ERROR_INVALID_ARGS
O aContext é NULL.

otPlatCryptoEcdsaSignUsingKeyRef

otError otPlatCryptoEcdsaSignUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

Calcule a assinatura ECDSA de uma mensagem com hash usando a referência de chave transmitida.

Usa o procedimento determinístico de geração de assinatura digital da RFC 6979.

Detalhes
Parâmetros
[in] aKeyRef
Referência da chave ao slot em que o par de chaves está armazenado.
[in] aHash
Um ponteiro para uma estrutura de hash SHA-256 em que o valor de hash para o cálculo da assinatura é armazenado.
[out] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA para produzir a assinatura calculada.
Valores de retorno
OT_ERROR_NONE
A assinatura foi calculada, aSignature foi atualizada.
OT_ERROR_PARSE
Não foi possível analisar o formato DER do par de chaves (formato inválido).
OT_ERROR_NO_BUFS
Falha ao alocar buffer para o cálculo da assinatura.
OT_ERROR_INVALID_ARGS
O aContext é NULL.

otPlatCryptoEcdsaVerify

otError otPlatCryptoEcdsaVerify(
  const otPlatCryptoEcdsaPublicKey *aPublicKey,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

Use a chave do contexto de entrada para verificar a assinatura ECDSA de uma mensagem com hash.

Detalhes
Parâmetros
[in] aPublicKey
Um ponteiro para uma estrutura de chave pública ECDSA, em que a chave pública para verificação de assinatura está armazenada.
[in] aHash
Um ponteiro para uma estrutura de hash SHA-256 em que o valor de hash para a verificação de assinatura é armazenado.
[in] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA em que o valor da assinatura a ser verificado é armazenado.
Valores de retorno
OT_ERROR_NONE
A assinatura foi verificada.
OT_ERROR_SECURITY
A assinatura é inválida.
OT_ERROR_INVALID_ARGS
A chave ou o hash é inválido.
OT_ERROR_NO_BUFS
Falha ao alocar buffer para a verificação da assinatura.

otPlatCryptoEcdsaVerifyUsingKeyRef

otError otPlatCryptoEcdsaVerifyUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

Use a referência de chave para verificar a assinatura ECDSA de uma mensagem com hash.

Detalhes
Parâmetros
[in] aKeyRef
Referência da chave ao slot em que o par de chaves está armazenado.
[in] aHash
Um ponteiro para uma estrutura de hash SHA-256 em que o valor de hash para a verificação de assinatura é armazenado.
[in] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA em que o valor da assinatura a ser verificado é armazenado.
Valores de retorno
OT_ERROR_NONE
A assinatura foi verificada.
OT_ERROR_SECURITY
A assinatura é inválida.
OT_ERROR_INVALID_ARGS
A chave ou o hash é inválido.
OT_ERROR_NO_BUFS
Falha ao alocar buffer para a verificação da assinatura.

otPlatCryptoExportKey

otError otPlatCryptoExportKey(
  otCryptoKeyRef aKeyRef,
  uint8_t *aBuffer,
  size_t aBufferLen,
  size_t *aKeyLen
)

Exporte uma chave armazenada no PSA ITS.

Detalhes
Parâmetros
[in] aKeyRef
A referência de chave a ser usada para operações de criptografia.
[out] aBuffer
Ponteiro para o buffer onde a chave precisa ser exportada.
[in] aBufferLen
Tamanho do buffer passado para armazenar a chave exportada.
[out] aKeyLen
Ponteiro para retornar o tamanho da chave exportada.
Valores de retorno
OT_ERROR_NONE
aKeyRef exportado.
OT_ERROR_FAILED
Falha ao exportar aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer estava NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Verifique se a referência de chave aprovada tem uma chave associada no PSA ITS.

Detalhes
Parâmetros
[in] aKeyRef
A referência de chave a ser verificada.
Valores de retorno
TRUE
Há uma chave associada a aKeyRef.
FALSE
Não há nenhuma chave associada a aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Desinicialize o contexto de HKDF.

Detalhes
Parâmetros
[in] aContext
Contexto da operação de HKDF.
Valores de retorno
OT_ERROR_NONE
Operação HKDF não inicializada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação de HKDF.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoHkdfExpand

otError otPlatCryptoHkdfExpand(
  otCryptoContext *aContext,
  const uint8_t *aInfo,
  uint16_t aInfoLength,
  uint8_t *aOutputKey,
  uint16_t aOutputKeyLength
)

Realize a etapa de expansão do HKDF.

Detalhes
Parâmetros
[in] aContext
Contexto da operação de HKDF.
[in] aInfo
Ponteiro para a sequência de informações.
[in] aInfoLength
Tamanho da sequência de informações.
[out] aOutputKey
Ponteiro para a chave de saída.
[in] aOutputKeyLength
Tamanho do buffer da chave de saída.
Valores de retorno
OT_ERROR_NONE
A expansão de HKDF foi concluída.
OT_ERROR_FAILED
Falha ao expandir HKDF.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoHkdfExtract

otError otPlatCryptoHkdfExtract(
  otCryptoContext *aContext,
  const uint8_t *aSalt,
  uint16_t aSaltLength,
  const otCryptoKey *aInputKey
)

Realize a etapa de extração de HKDF.

Detalhes
Parâmetros
[in] aContext
Contexto da operação de HKDF.
[in] aSalt
Ponteiro para o Salt da HKDF.
[in] aSaltLength
Comprimento do sal.
[in] aInputKey
Ponteiro para a chave de entrada.
Valores de retorno
OT_ERROR_NONE
A extração de HKDF foi concluída.
OT_ERROR_FAILED
Falha na extração de HKDF.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Inicialize o contexto de HKDF.

Detalhes
Parâmetros
[in] aContext
Contexto da operação de HKDF.
Valores de retorno
OT_ERROR_NONE
Operação AES inicializada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação do AES.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Desinicialize a operação HMAC.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação HMAC.
Valores de retorno
OT_ERROR_NONE
Operação HMAC não inicializada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoHmacSha256Finish

otError otPlatCryptoHmacSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aBuf,
  size_t aBufLength
)

Conclua a operação HMAC.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação HMAC.
[out] aBuf
Um ponteiro para o buffer de saída.
[in] aBufLength
O comprimento de aBuf em bytes.
Valores de retorno
OT_ERROR_NONE
Operação HMAC concluída.
OT_ERROR_FAILED
Falha ao concluir a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aBuf estava NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Inicialize a operação HMAC.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação HMAC.
Valores de retorno
OT_ERROR_NONE
Operação HMAC inicializada.
OT_ERROR_FAILED
Falha ao inicializar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoHmacSha256Start

otError otPlatCryptoHmacSha256Start(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

Iniciar operação HMAC.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação HMAC.
[in] aKey
Material da chave a ser usado para a operação HMAC.
Valores de retorno
OT_ERROR_NONE
Operação HMAC iniciada.
OT_ERROR_FAILED
Falha ao iniciar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aKey estava NULL

otPlatCryptoHmacSha256Update

otError otPlatCryptoHmacSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

Atualize a operação HMAC com uma nova entrada.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação HMAC.
[in] aBuf
Um ponteiro para o buffer de entrada.
[in] aBufLength
O comprimento de aBuf em bytes.
Valores de retorno
OT_ERROR_NONE
O HMAC foi atualizado com a nova operação de entrada.
OT_ERROR_FAILED
Falha ao atualizar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aBuf estava NULL

otPlatCryptoImportKey

otError otPlatCryptoImportKey(
  otCryptoKeyRef *aKeyRef,
  otCryptoKeyType aKeyType,
  otCryptoKeyAlgorithm aKeyAlgorithm,
  int aKeyUsage,
  otCryptoKeyStorage aKeyPersistence,
  const uint8_t *aKey,
  size_t aKeyLen
)

Importe uma chave para o PSA ITS.

Se OT_CRYPTO_KEY_STORAGE_VOLATILE for transmitido para aKeyPersistência, aKeyRef for a saída, o valor inicial não importa, e a API da plataforma PRECISA atualizá-lo para retornar a nova referência de chave.

Detalhes
Parâmetros
[in,out] aKeyRef
Ponteiro para a referência de chave a ser usada para operações de criptografia.
[in] aKeyType
Codificação do tipo de chave para a chave.
[in] aKeyAlgorithm
Codificação do algoritmo de chave para a chave.
[in] aKeyUsage
Codificação de uso da chave para a chave (combinações de OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistência de chave para essa chave
[in] aKey
Chave real a ser importada.
[in] aKeyLen
Comprimento da chave a ser importada.
Valores de retorno
OT_ERROR_NONE
A chave foi importada.
OT_ERROR_FAILED
Falha ao importar a chave.
OT_ERROR_INVALID_ARGS
aKey foi definido como NULL.

Esta API só é usada pelo OT Core quando o OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE está ativado.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Inicialize o módulo Crypto.

otPlatCryptoPbkdf2GenerateKey

otError otPlatCryptoPbkdf2GenerateKey(
  const uint8_t *aPassword,
  uint16_t aPasswordLen,
  const uint8_t *aSalt,
  uint16_t aSaltLen,
  uint32_t aIterationCounter,
  uint16_t aKeyLen,
  uint8_t *aKey
)

Execute o PKCS#5 PBKDF2 usando o CMAC (AES-CMAC-PRF-128).

Detalhes
Parâmetros
[in] aPassword
Senha a ser usada ao gerar a chave.
[in] aPasswordLen
Tamanho da senha.
[in] aSalt
Sal a ser usado ao gerar a chave.
[in] aSaltLen
Comprimento do sal.
[in] aIterationCounter
Contagem de iterações.
[in] aKeyLen
Tamanho da chave gerada em bytes.
[out] aKey
Um ponteiro para a chave gerada.
Valores de retorno
OT_ERROR_NONE
Um novo par de chaves foi gerado.
OT_ERROR_NO_BUFS
Falha ao alocar buffer para a geração da chave.
OT_ERROR_NOT_CAPABLE
Recurso indisponível.
OT_ERROR_FAILED
Falha ao gerar a chave.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Desinicialize o gerador de números pseudoaleatórios com segurança criptográfica (CSPRNG).

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Preenche um determinado buffer com bytes aleatórios criptograficamente seguros.

Detalhes
Parâmetros
[out] aBuffer
Um ponteiro para um buffer a ser preenchido com os bytes aleatórios.
[in] aSize
Tamanho do buffer (número de bytes a serem preenchidos).
Valores de retorno
OT_ERROR_NONE
Buffer preenchido com valores aleatórios.
OT_ERROR_FAILED
Falha na operação.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Inicializar o gerador de números pseudoaleatórios com segurança criptográfica (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Cancele a operação SHA-256.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação SHA-256.
Valores de retorno
OT_ERROR_NONE
Operação SHA-256 não inicializada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoSha256Finish

otError otPlatCryptoSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aHash,
  uint16_t aHashSize
)

Conclua a operação SHA-256.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação SHA-256.
[in] aHash
Um ponteiro para o buffer de saída, onde o hash precisa ser armazenado.
[in] aHashSize
O comprimento de aHash em bytes.
Valores de retorno
OT_ERROR_NONE
A operação SHA-256 foi concluída.
OT_ERROR_FAILED
Falha ao concluir a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext ou aHash estava NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Inicialize a operação SHA-256.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação SHA-256.
Valores de retorno
OT_ERROR_NONE
Operação SHA-256 inicializada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Inicie a operação SHA-256.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação SHA-256.
Valores de retorno
OT_ERROR_NONE
A operação SHA-256 foi iniciada.
OT_ERROR_FAILED
Falha ao iniciar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext estava NULL

otPlatCryptoSha256Update

otError otPlatCryptoSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

Atualize a operação SHA-256 com uma nova entrada.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação SHA-256.
[in] aBuf
Um ponteiro para o buffer de entrada.
[in] aBufLength
O comprimento de aBuf em bytes.
Valores de retorno
OT_ERROR_NONE
SHA-256 atualizado com a nova operação de entrada.
OT_ERROR_FAILED
Falha ao atualizar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext ou aBuf estava NULL

Macros

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Tamanho máximo do buffer (em bytes) para representar o par de chaves EDCSA no formato DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Tamanho do buffer (em bytes) para representar a chave pública EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Tamanho do buffer (em bytes) para representar a assinatura EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Comprimento máximo de SALT de PBKDF2: prefixo de sal (6) + panid estendido (8) + nome da rede (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Comprimento do hash SHA256 (em bytes).

Recursos

Os tópicos de Referência da API OpenThread são originados do código-fonte, disponível no GitHub. Para mais informações ou para contribuir com nossa documentação, consulte Recursos.