Crypto - Plataforma

Este módulo inclui a abstração de 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
}
tipo enumerado
Define as principais sinalizações de uso.
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256,
  OT_CRYPTO_KEY_ALG_ECDSA
}
tipo enumerado
Define os principais algoritmos.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
tipo enumerado
Define os principais tipos de armazenamento.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
tipo enumerado
Define os tipos de chave.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Esse tipo de dados representa a referência principal.
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)
Criptografa 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)
Define a chave para a operação do AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Destruir uma chave armazenada no PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Consiga a chave pública associada da referência de chave passada.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Gere e importe um novo par de chaves ECDSA na referência passada.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Gere e preencha o buffer de saída com um novo par de chaves ECDSA.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Consiga a chave pública associada do contexto de entrada.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcule a assinatura ECDSA de 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 do ECDSA de uma mensagem com hash.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Use o keyref para verificar a assinatura do 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 transmitida tem uma chave associada no PSA ITS.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Cancele a inicialização do contexto HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Execute a etapa de expansão do HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Execute a etapa "Extração de HKDF".
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Inicialize o contexto HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Cancele a inicialização da operação HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Conclua a operação do HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Inicialize a operação HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Inicie a operação do HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Atualize a operação do 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)
void
Execute o PKCS#5 PBKDF2 usando o CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Desinicialize o gerador de pseudoaleatórios criptograficamente seguros (CSPRNG).
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Preenche um determinado buffer com bytes aleatórios com segurança criptográfica.
otPlatCryptoRandomInit(void)
void
Inicializar gerador de números pseudoaleatórios com segurança criptográfica (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Cancele a inicialização da operação SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Concluir 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)
Atualização da operação SHA-256 com nova entrada.

Estruturas

otCryptoContext (em inglês)

Armazena o objeto de contexto para APIs da plataforma.

otCryptoKey

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

otPlatCryptoEcdsaKeyPair (link em inglês)

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

otPlatCryptoEcdsaPublicKey (em inglês)

Representa uma chave pública ECDSA.

otPlatCryptoEcdsaSignature (em inglês)

Representa uma assinatura ECDSA.

otPlatCryptoSha256Hash (em inglês)

Representa um hash SHA-256.

Enumerações

enumeração anônima

 anonymous enum

Define as principais sinalizações de uso.

Propriedades
OT_CRYPTO_KEY_USAGE_DECRYPT

Uso da chave: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Uso da chave: criptografia (definido 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á vazio.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Uso da chave: hash do sinal.

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 de chave: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Algoritmo principal: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Algoritmo de chave: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Algoritmo principal: definido pelo fornecedor.

o StorageCryptoKey

 otCryptoKeyStorage

Define os principais tipos de armazenamento.

Propriedades
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Persistência de chave: a chave é persistente.

OT_CRYPTO_KEY_STORAGE_VOLATILE

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

Tipo de CryptoKey

 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

CryptoKey

struct otCryptoKey otCryptoKey

CryptoKey

uint32_t otCryptoKeyRef

Esse tipo de dados representa a referência principal.

OpPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

OpPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

OtPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

OtPlatCryptoSha256Hash (em inglês)

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
)

Criptografa 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 com sucesso.
OT_ERROR_FAILED
Falha ao criptografar aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey ou aOutput eram 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 da AES foi liberado.
OT_ERROR_FAILED
Falha ao liberar o contexto do AES.
OT_ERROR_INVALID_ARGS
aContext era 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 iniciada com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação do AES.
OT_ERROR_INVALID_ARGS
aContext era NULL
OT_ERROR_NO_BUFS
Não é possível alocar o contexto.

OpPlatCryptoAesSetKey

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

Define 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 da 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 era NULL

OpPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Destruir 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.

OpPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Consiga a chave pública associada da referência de chave passada.

A chave pública é armazenada de forma diferente dependendo da biblioteca de back-end de criptografia que está sendo usada (OPENTHREAD_CONFIG_CRYPTO_LIB).

Essa API deve garantir que a chave pública seja retornada como uma representação da sequência de bytes de um ponto de curva descompactado (RFC 6605 - sec 4)

Detalhes
Parâmetros
[in] aKeyRef
Referência de 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 de par de chaves (formato inválido).
OT_ERROR_INVALID_ARGS
O aContext é NULL.

OpPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

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

Detalhes
Parâmetros
[in] aKeyRef
Referência de 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 de chaves.
OT_ERROR_NOT_CAPABLE
Recurso indisponível.
OT_ERROR_FAILED
Falha ao gerar o par de chaves.

OpPlatCryptoEcdsaGenerateKey

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 de chaves.
OT_ERROR_NOT_CAPABLE
Recurso indisponível.
OT_ERROR_FAILED
Falha ao gerar o par de chaves.

OpPlatCryptoEcdsaGetPublicKey

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

Consiga 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 de 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 de uma mensagem com hash usando a chave privada do contexto de entrada.

Usa o procedimento de geração de assinaturas digitais determinísticas 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 de assinatura é armazenado.
[out] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA para gerar a assinatura calculada.
Valores de retorno
OT_ERROR_NONE
A assinatura foi calculada com sucesso, aSignature foi atualizado.
OT_ERROR_PARSE
Não foi possível analisar o formato DER de par de chaves (formato inválido).
OT_ERROR_NO_BUFS
Falha ao alocar buffer para cálculo de 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 de geração de assinaturas digitais determinísticas da RFC 6979.

Detalhes
Parâmetros
[in] aKeyRef
Referência de 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 de assinatura é armazenado.
[out] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA para gerar a assinatura calculada.
Valores de retorno
OT_ERROR_NONE
A assinatura foi calculada com sucesso, aSignature foi atualizado.
OT_ERROR_PARSE
Não foi possível analisar o formato DER de par de chaves (formato inválido).
OT_ERROR_NO_BUFS
Falha ao alocar buffer para cálculo de 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 do 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 da assinatura está armazenada.
[in] aHash
Um ponteiro para uma estrutura de hash SHA-256 em que o valor de hash para verificação da assinatura é armazenado.
[in] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA, onde 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 verificação de assinatura.

OtPlatCryptoEcdsaVerifyUsingKeyRef

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

Use o keyref para verificar a assinatura do ECDSA de uma mensagem com hash.

Detalhes
Parâmetros
[in] aKeyRef
Referência de 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 verificação da assinatura é armazenado.
[in] aSignature
Um ponteiro para uma estrutura de assinatura ECDSA, onde 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 verificação de assinatura.

Chave de exportação otPlatCrypto

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 para onde a chave precisa ser exportada.
[in] aBufferLen
Duração do buffer passado para armazenar a chave exportada.
[out] aKeyLen
Ponteiro para retornar o comprimento da chave exportada.
Valores de retorno
OT_ERROR_NONE
aKeyRef exportado.
OT_ERROR_FAILED
Falha ao exportar aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer era NULL

OpPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

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

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

OtPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Cancele a inicialização do contexto HKDF.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação de HKDF.
Valores de retorno
OT_ERROR_NONE
A operação de HKDF não foi inicializada.
OT_ERROR_FAILED
Falha ao não inicializar a operação de HKDF.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHkdfExpand

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

Execute 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
Duração 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 na expansão de HKDF.
OT_ERROR_INVALID_ARGS
aContext era NULL

OtPlatCryptoHkdfExtract

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

Execute a etapa "Extração de HKDF".

Detalhes
Parâmetros
[in] aContext
Contexto da operação de HKDF.
[in] aSalt
Ponteiro para o Salt pelo HKDF.
[in] aSaltLength
Duração do sal.
[in] aInputKey
Ponteiro para a chave de entrada.
Valores de retorno
OT_ERROR_NONE
Extração de HKDF concluída.
OT_ERROR_FAILED
Falha ao extrair HKDF.

OpPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Inicialize o contexto HKDF.

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

OtPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Cancele a inicialização da operação HMAC.

Detalhes
Parâmetros
[in] aContext
Contexto para a operação HMAC.
Valores de retorno
OT_ERROR_NONE
A operação de HMAC foi inicializada com sucesso.
OT_ERROR_FAILED
Falha ao desinicializar a operação do HMAC.
OT_ERROR_INVALID_ARGS
aContext era NULL

OtPlatCryptoHmacSha256Finish

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

Conclua a operação do 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 tamanho de aBuf em bytes.
Valores de retorno
OT_ERROR_NONE
A operação de HMAC foi concluída.
OT_ERROR_FAILED
Falha ao concluir a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aBuf era 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 com sucesso.
OT_ERROR_FAILED
Falha ao inicializar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext era NULL

OtPlatCryptoHmacSha256Início

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

Inicie a operação do 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
A operação HMAC foi iniciada.
OT_ERROR_FAILED
Falha ao iniciar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aKey era NULL

Atualização do otPlatCryptoHmacSha256

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

Atualize a operação do 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 tamanho de aBuf em bytes.
Valores de retorno
OT_ERROR_NONE
HMAC atualizado com nova operação de entrada.
OT_ERROR_FAILED
Falha ao atualizar a operação HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aBuf era NULL

OpPlatCryptoImportKey

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 aKeyPersistence, a saída do aKeyRef será irrelevante, e a API da plataforma PRECISA atualizá-la 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 para a chave.
[in] aKeyUsage
Codificação do uso da chave (combinações de OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistência para esta 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.

Essa API só é usada pelo núcleo OT quando OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE está ativado.

OtPlatCryptoInit

void otPlatCryptoInit(
  void
)

Inicialize o módulo Crypto.

OpPlatCryptoPbkdf2GenerateKey

void 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
Comprimento da chave gerada em bytes.
[out] aKey
Um ponteiro para a chave gerada.

OtPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Desinicialize o gerador de pseudoaleatórios criptograficamente seguros (CSPRNG).

OPPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Preenche um determinado buffer com bytes aleatórios com segurança criptográfica.

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.

OpPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

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

OtPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Cancele a inicialização da 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 não foi inicializada.
OT_ERROR_FAILED
Falha ao não inicializar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

OtPlatCryptoSha256Finish

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

Concluir 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, em que o hash precisa ser armazenado.
[in] aHashSize
O tamanho 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 era 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
A operação SHA-256 foi inicializada.
OT_ERROR_FAILED
Falha ao inicializar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

OtPlatCryptoSha256Início

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 era NULL

Atualização otPlatCryptoSha256

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

Atualização da operação SHA-256 com 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 tamanho de aBuf em bytes.
Valores de retorno
OT_ERROR_NONE
SHA-256 atualizado com nova operação de entrada.
OT_ERROR_FAILED
Falha ao atualizar a operação SHA-256.
OT_ERROR_INVALID_ARGS
aContext ou aBuf era NULL

Macros

PR_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.

PR_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

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

PR_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

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

PR_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

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

PR_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Tamanho 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.