암호화 - 플랫폼

이 모듈에는 Crypto를 위한 플랫폼 추상화가 포함되어 있습니다.

요약

열거

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
키 사용 플래그를 정의합니다.
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
키 알고리즘을 정의합니다.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
키 저장소 유형을 정의합니다.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
키 유형을 정의합니다.

Typedef

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
이 데이터 유형은 키 참조를 나타냅니다.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
SHA-256 해시를 나타냅니다.

변수

OT_TOOL_PACKED_END

함수

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
지정된 데이터를 암호화합니다.
otPlatCryptoAesFree(otCryptoContext *aContext)
AES 컨텍스트를 해제합니다.
otPlatCryptoAesInit(otCryptoContext *aContext)
AES 작업을 초기화합니다.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
AES 작업을 위한 키를 설정합니다.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
PSA ITS에 저장된 키를 폐기합니다.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
전달된 키 참조에서 연결된 공개 키를 가져옵니다.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
전달된 참조에서 새 ECDSA 키 쌍을 생성하고 가져옵니다.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
출력 버퍼를 생성하고 새 ECDSA 키 쌍으로 채웁니다.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
입력 컨텍스트에서 연결된 공개 키를 가져옵니다.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
입력 컨텍스트의 비공개 키를 사용하여 해시된 메시지의 ECDSA 서명을 계산합니다.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
전달된 키 참조를 사용하여 해싱된 메시지의 ECDSA 서명을 계산합니다.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
입력 컨텍스트의 키를 사용하여 해싱된 메시지의 ECDSA 서명을 확인합니다.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
keyref를 사용하여 해싱된 메시지의 ECDSA 서명을 확인합니다.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
PSA ITS에 저장된 키를 내보냅니다.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
전달된 키 참조에 PSA ITS에 연결된 키가 있는지 확인합니다.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
HKDF 컨텍스트를 초기화 해제합니다.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
HKDF 확장 단계를 실행합니다.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
HKDF 추출 단계를 수행합니다.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
HKDF 컨텍스트를 초기화합니다.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
HMAC 작업을 초기화 취소합니다.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
HMAC 작업을 완료합니다.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
HMAC 작업을 초기화합니다.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
HMAC 작업을 시작합니다.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
새 입력으로 HMAC 작업을 업데이트합니다.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
키를 PSA ITS로 가져옵니다.
otPlatCryptoInit(void)
void
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)
CMAC (AES-CMAC-PRF-128)를 사용하여 PKCS#5 PBKDF2를 실행합니다.
otPlatCryptoRandomDeinit(void)
void
암호화 방식으로 안전한 의사 난수 생성기 (CSPRNG)를 초기화 해제합니다.
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
지정된 버퍼를 암호학적으로 안전한 임의 바이트로 채웁니다.
otPlatCryptoRandomInit(void)
void
암호화 방식으로 안전한 의사 난수 생성기 (CSPRNG)를 초기화합니다.
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
SHA-256 작업을 초기화 취소합니다.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
SHA-256 작업을 완료합니다.
otPlatCryptoSha256Init(otCryptoContext *aContext)
SHA-256 작업을 초기화합니다.
otPlatCryptoSha256Start(otCryptoContext *aContext)
SHA-256 작업을 시작합니다.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
새 입력으로 SHA-256 작업을 업데이트합니다.

구조체

otCryptoContext

플랫폼 API의 컨텍스트 객체를 저장합니다.

otCryptoKey

암호화 작업에 필요한 키 자료를 나타냅니다.

otPlatCryptoEcdsaKeyPair

ECDSA 키 쌍 (공개 및 비공개 키)을 나타냅니다.

otPlatCryptoEcdsaPublicKey

ECDSA 공개 키를 나타냅니다.

otPlatCryptoEcdsaSignature

ECDSA 서명을 나타냅니다.

otPlatCryptoSha256Hash

SHA-256 해시를 나타냅니다.

열거형

익명의 enum

 anonymous enum

키 사용 플래그를 정의합니다.

속성
OT_CRYPTO_KEY_USAGE_DECRYPT

키 사용: AES ECB

OT_CRYPTO_KEY_USAGE_ENCRYPT

키 사용: 암호화 (공급업체 정의)

OT_CRYPTO_KEY_USAGE_EXPORT

키 사용: 키를 내보낼 수 있습니다.

OT_CRYPTO_KEY_USAGE_NONE

키 사용: 키 사용이 비어 있습니다.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

키 사용: 부호 해시.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

키 사용: 해시 확인

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

키 알고리즘을 정의합니다.

속성
OT_CRYPTO_KEY_ALG_AES_ECB

키 알고리즘: AES ECB

OT_CRYPTO_KEY_ALG_ECDSA

키 알고리즘: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

키 알고리즘: HMAC SHA-256

OT_CRYPTO_KEY_ALG_VENDOR

키 알고리즘: 공급업체 정의.

otCryptoKeyStorage

 otCryptoKeyStorage

키 저장소 유형을 정의합니다.

속성
OT_CRYPTO_KEY_STORAGE_PERSISTENT

키 지속성: 키는 영구적입니다.

OT_CRYPTO_KEY_STORAGE_VOLATILE

키 지속성: 키는 휘발성입니다.

otCryptoKeyType

 otCryptoKeyType

키 유형을 정의합니다.

속성
OT_CRYPTO_KEY_TYPE_AES

키 유형: AES

OT_CRYPTO_KEY_TYPE_ECDSA

키 유형: ECDSA

OT_CRYPTO_KEY_TYPE_HMAC

키 유형: HMAC

OT_CRYPTO_KEY_TYPE_RAW

키 유형: 원시 데이터.

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

이 데이터 유형은 키 참조를 나타냅니다.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

SHA-256 해시를 나타냅니다.

변수

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

함수

otPlatCryptoAesEncrypt

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

지정된 데이터를 암호화합니다.

세부정보
매개변수
[in] aContext
AES 작업의 컨텍스트입니다.
[in] aInput
입력 버퍼를 가리키는 포인터입니다.
[in] aOutput
출력 버퍼를 가리키는 포인터입니다.
반환 값
OT_ERROR_NONE
aInput이(가) 암호화되었습니다.
OT_ERROR_FAILED
aInput을(를) 암호화할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext, aKey 또는 aOutput이(가) NULL입니다.

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

AES 컨텍스트를 해제합니다.

세부정보
매개변수
[in] aContext
AES 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
AES 컨텍스트가 해제되었습니다.
OT_ERROR_FAILED
AES 컨텍스트를 해제할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

AES 작업을 초기화합니다.

세부정보
매개변수
[in] aContext
AES 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
AES 작업이 초기화되었습니다.
OT_ERROR_FAILED
AES 작업을 초기화하지 못했습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음
OT_ERROR_NO_BUFS
컨텍스트를 할당할 수 없습니다.

otPlatCryptoAesSetKey

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

AES 작업을 위한 키를 설정합니다.

세부정보
매개변수
[in] aContext
AES 작업의 컨텍스트입니다.
[out] aKey
AES 작업에 사용할 키입니다.
반환 값
OT_ERROR_NONE
AES 작업을 위한 키를 설정했습니다.
OT_ERROR_FAILED
AES 작업의 키를 설정할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext 또는 aKey이(가) NULL입니다.

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

PSA ITS에 저장된 키를 폐기합니다.

세부정보
매개변수
[in] aKeyRef
제거할 주요 참조
반환 값
OT_ERROR_NONE
키를 폐기했습니다.
OT_ERROR_FAILED
키를 폐기할 수 없습니다.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

전달된 키 참조에서 연결된 공개 키를 가져옵니다.

공개 키는 사용 중인 암호화 백엔드 라이브러리 (OPENTHREAD_CONFIG_CRYPTO_LIB)에 따라 다르게 저장됩니다.

이 API는 압축되지 않은 곡선 지점의 바이트 시퀀스 표현으로 공개 키를 반환해야 합니다 (RFC 6605 - 4초).

세부정보
매개변수
[in] aKeyRef
키 쌍이 저장된 슬롯에 대한 키 참조입니다.
[out] aPublicKey
공개 키를 저장할 ECDSA 공개 키 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
공개 키를 가져왔으며 aBuffer이(가) 업데이트되었습니다.
OT_ERROR_PARSE
키 쌍 DER 형식을 파싱할 수 없습니다 (잘못된 형식).
OT_ERROR_INVALID_ARGS
aContext가 NULL입니다.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

전달된 참조에서 새 ECDSA 키 쌍을 생성하고 가져옵니다.

세부정보
매개변수
[in] aKeyRef
키 쌍이 저장된 슬롯에 대한 키 참조입니다.
반환 값
OT_ERROR_NONE
새 키 쌍이 생성되었습니다.
OT_ERROR_NO_BUFS
키 생성을 위한 버퍼를 할당할 수 없습니다.
OT_ERROR_NOT_CAPABLE
기능이 지원되지 않습니다.
OT_ERROR_FAILED
키 쌍을 생성할 수 없습니다.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

출력 버퍼를 생성하고 새 ECDSA 키 쌍으로 채웁니다.

세부정보
매개변수
[out] aKeyPair
생성된 키 쌍을 저장할 ECDSA 키 쌍 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
새 키 쌍이 생성되었습니다.
OT_ERROR_NO_BUFS
키 생성을 위한 버퍼를 할당할 수 없습니다.
OT_ERROR_NOT_CAPABLE
기능이 지원되지 않습니다.
OT_ERROR_FAILED
키 쌍을 생성할 수 없습니다.

otPlatCryptoEcdsaGetPublicKey

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

입력 컨텍스트에서 연결된 공개 키를 가져옵니다.

세부정보
매개변수
[in] aKeyPair
키 쌍이 저장된 ECDSA 키 쌍 구조에 대한 포인터입니다.
[out] aPublicKey
공개 키를 저장할 ECDSA 공개 키 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
공개 키를 가져왔으며 aBuffer이(가) 업데이트되었습니다.
OT_ERROR_PARSE
키 쌍 DER 형식을 파싱할 수 없습니다 (잘못된 형식).
OT_ERROR_INVALID_ARGS
aContext가 NULL입니다.

otPlatCryptoEcdsaSign

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

입력 컨텍스트의 비공개 키를 사용하여 해시된 메시지의 ECDSA 서명을 계산합니다.

RFC 6979의 확정적 디지털 서명 생성 절차를 사용합니다.

세부정보
매개변수
[in] aKeyPair
키 쌍이 저장된 ECDSA 키 쌍 구조에 대한 포인터입니다.
[in] aHash
서명 계산을 위한 해시 값이 저장된 SHA-256 해시 구조에 대한 포인터입니다.
[out] aSignature
계산된 서명을 출력할 ECDSA 서명 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
서명이 계산되었으며 aSignature이(가) 업데이트되었습니다.
OT_ERROR_PARSE
키 쌍 DER 형식을 파싱할 수 없습니다 (잘못된 형식).
OT_ERROR_NO_BUFS
서명 계산을 위한 버퍼를 할당할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext가 NULL입니다.

otPlatCryptoEcdsaSignUsingKeyRef

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

전달된 키 참조를 사용하여 해싱된 메시지의 ECDSA 서명을 계산합니다.

RFC 6979의 확정적 디지털 서명 생성 절차를 사용합니다.

세부정보
매개변수
[in] aKeyRef
키 쌍이 저장된 슬롯에 대한 키 참조입니다.
[in] aHash
서명 계산을 위한 해시 값이 저장된 SHA-256 해시 구조에 대한 포인터입니다.
[out] aSignature
계산된 서명을 출력할 ECDSA 서명 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
서명이 계산되었으며 aSignature이(가) 업데이트되었습니다.
OT_ERROR_PARSE
키 쌍 DER 형식을 파싱할 수 없습니다 (잘못된 형식).
OT_ERROR_NO_BUFS
서명 계산을 위한 버퍼를 할당할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext가 NULL입니다.

otPlatCryptoEcdsaVerify

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

입력 컨텍스트의 키를 사용하여 해싱된 메시지의 ECDSA 서명을 확인합니다.

세부정보
매개변수
[in] aPublicKey
서명 확인을 위한 공개 키가 저장된 ECDSA 공개 키 구조에 대한 포인터입니다.
[in] aHash
서명 확인을 위한 해시 값이 저장된 SHA-256 해시 구조에 대한 포인터입니다.
[in] aSignature
확인할 서명 값이 저장된 ECDSA 서명 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
서명이 확인되었습니다.
OT_ERROR_SECURITY
서명이 잘못되었습니다.
OT_ERROR_INVALID_ARGS
키 또는 해시가 잘못되었습니다.
OT_ERROR_NO_BUFS
서명 확인을 위한 버퍼를 할당할 수 없습니다.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

keyref를 사용하여 해싱된 메시지의 ECDSA 서명을 확인합니다.

세부정보
매개변수
[in] aKeyRef
키 쌍이 저장된 슬롯에 대한 키 참조입니다.
[in] aHash
서명 확인을 위한 해시 값이 저장된 SHA-256 해시 구조에 대한 포인터입니다.
[in] aSignature
확인할 서명 값이 저장된 ECDSA 서명 구조에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
서명이 확인되었습니다.
OT_ERROR_SECURITY
서명이 잘못되었습니다.
OT_ERROR_INVALID_ARGS
키 또는 해시가 잘못되었습니다.
OT_ERROR_NO_BUFS
서명 확인을 위한 버퍼를 할당할 수 없습니다.

otPlatCryptoExportKey

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

PSA ITS에 저장된 키를 내보냅니다.

세부정보
매개변수
[in] aKeyRef
암호화 작업에 사용할 키 참조입니다.
[out] aBuffer
키를 내보내야 하는 버퍼를 가리키는 포인터입니다.
[in] aBufferLen
내보낸 키를 저장하기 위해 전달된 버퍼의 길이입니다.
[out] aKeyLen
내보낸 키의 길이를 반환하는 포인터입니다.
반환 값
OT_ERROR_NONE
aKeyRef 내보내기가 완료되었습니다.
OT_ERROR_FAILED
aKeyRef을(를) 내보낼 수 없습니다.
OT_ERROR_INVALID_ARGS
aBuffer이(가) 비어있음

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

전달된 키 참조에 PSA ITS에 연결된 키가 있는지 확인합니다.

세부정보
매개변수
[in] aKeyRef
확인할 키 참조입니다.
반환 값
TRUE
aKeyRef에 연결된 키가 있습니다.
FALSE
aKeyRef에 연결된 키가 없습니다.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

HKDF 컨텍스트를 초기화 해제합니다.

세부정보
매개변수
[in] aContext
HKDF 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
HKDF 작업의 초기화를 성공적으로 취소했습니다.
OT_ERROR_FAILED
초기화되지 않은 HKDF 작업을 실패했습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoHkdfExpand

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

HKDF 확장 단계를 실행합니다.

세부정보
매개변수
[in] aContext
HKDF 작업의 작업 컨텍스트입니다.
[in] aInfo
정보 시퀀스를 가리키는 포인터입니다.
[in] aInfoLength
Info 시퀀스의 길이입니다.
[out] aOutputKey
출력 키를 가리키는 포인터입니다.
[in] aOutputKeyLength
출력 키 버퍼의 크기.
반환 값
OT_ERROR_NONE
HKDF 확장이 완료되었습니다.
OT_ERROR_FAILED
HKDF 확장에 실패했습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoHkdfExtract

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

HKDF 추출 단계를 수행합니다.

세부정보
매개변수
[in] aContext
HKDF 작업의 작업 컨텍스트입니다.
[in] aSalt
HKDF 솔트에 대한 포인터입니다.
[in] aSaltLength
소금의 길이
[in] aInputKey
입력 키를 가리키는 포인터입니다.
반환 값
OT_ERROR_NONE
HKDF 추출에 성공했습니다.
OT_ERROR_FAILED
HKDF 추출에 실패했습니다.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

HKDF 컨텍스트를 초기화합니다.

세부정보
매개변수
[in] aContext
HKDF 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
AES 작업이 초기화되었습니다.
OT_ERROR_FAILED
AES 작업을 초기화하지 못했습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

HMAC 작업을 초기화 취소합니다.

세부정보
매개변수
[in] aContext
HMAC 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
HMAC 작업을 초기화했습니다.
OT_ERROR_FAILED
HMAC 작업을 초기화하지 못했습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoHmacSha256Finish

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

HMAC 작업을 완료합니다.

세부정보
매개변수
[in] aContext
HMAC 작업의 컨텍스트입니다.
[out] aBuf
출력 버퍼에 대한 포인터입니다.
[in] aBufLength
바이트 단위의 aBuf 길이입니다.
반환 값
OT_ERROR_NONE
HMAC 작업이 완료되었습니다.
OT_ERROR_FAILED
HMAC 작업을 완료할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext 또는 aBuf이(가) NULL입니다.

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

HMAC 작업을 초기화합니다.

세부정보
매개변수
[in] aContext
HMAC 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
HMAC 작업을 초기화했습니다.
OT_ERROR_FAILED
HMAC 작업을 초기화할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoHmacSha256Start

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

HMAC 작업을 시작합니다.

세부정보
매개변수
[in] aContext
HMAC 작업의 컨텍스트입니다.
[in] aKey
HMAC 작업에 사용할 키 자료입니다.
반환 값
OT_ERROR_NONE
HMAC 작업을 시작했습니다.
OT_ERROR_FAILED
HMAC 작업을 시작할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext 또는 aKey이(가) NULL입니다.

otPlatCryptoHmacSha256Update

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

새 입력으로 HMAC 작업을 업데이트합니다.

세부정보
매개변수
[in] aContext
HMAC 작업의 컨텍스트입니다.
[in] aBuf
입력 버퍼에 대한 포인터입니다.
[in] aBufLength
바이트 단위의 aBuf 길이입니다.
반환 값
OT_ERROR_NONE
새 입력 작업으로 HMAC를 업데이트했습니다.
OT_ERROR_FAILED
HMAC 작업을 업데이트할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext 또는 aBuf이(가) NULL입니다.

otPlatCryptoImportKey

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

키를 PSA ITS로 가져옵니다.

aKeyPersistence에 OT_CRYPTO_KEY_STORAGE_VOLATILE이 전달되면 aKeyRef가 출력되고 초깃값은 중요하지 않으며 플랫폼 API는 새로운 키 참조를 반환하도록 업데이트해야 합니다(MUST).

세부정보
매개변수
[in,out] aKeyRef
암호화 작업에 사용할 키 참조에 대한 포인터입니다.
[in] aKeyType
키의 키 유형 인코딩입니다.
[in] aKeyAlgorithm
키의 키 알고리즘 인코딩입니다.
[in] aKeyUsage
키에 대한 키 사용 인코딩 (OT_CRYPTO_KEY_USAGE_*의 조합)
[in] aKeyPersistence
이 키의 키 지속성
[in] aKey
가져올 실제 키입니다.
[in] aKeyLen
가져올 키의 길이입니다.
반환 값
OT_ERROR_NONE
키를 가져왔습니다.
OT_ERROR_FAILED
키를 가져올 수 없습니다.
OT_ERROR_INVALID_ARGS
aKey가 NULL로 설정되었습니다.

이 API는 OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE가 사용 설정된 경우에만 OT 코어에서 사용됩니다.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

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
)

CMAC (AES-CMAC-PRF-128)를 사용하여 PKCS#5 PBKDF2를 실행합니다.

세부정보
매개변수
[in] aPassword
키를 생성할 때 사용할 비밀번호입니다.
[in] aPasswordLen
비밀번호 길이입니다.
[in] aSalt
키를 생성할 때 사용할 솔트입니다.
[in] aSaltLen
소금의 길이
[in] aIterationCounter
반복 횟수
[in] aKeyLen
생성된 키의 길이(바이트)입니다.
[out] aKey
생성된 키에 대한 포인터입니다.
반환 값
OT_ERROR_NONE
새 키 쌍이 생성되었습니다.
OT_ERROR_NO_BUFS
키 생성을 위한 버퍼를 할당할 수 없습니다.
OT_ERROR_NOT_CAPABLE
기능이 지원되지 않습니다.
OT_ERROR_FAILED
키를 생성할 수 없습니다.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

암호화 방식으로 안전한 의사 난수 생성기 (CSPRNG)를 초기화 해제합니다.

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

지정된 버퍼를 암호학적으로 안전한 임의 바이트로 채웁니다.

세부정보
매개변수
[out] aBuffer
임의의 바이트로 채울 버퍼에 대한 포인터입니다.
[in] aSize
버퍼 크기 (채울 바이트 수)
반환 값
OT_ERROR_NONE
버퍼를 임의의 값으로 채웠습니다.
OT_ERROR_FAILED
작업에 실패했습니다.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

암호화 방식으로 안전한 의사 난수 생성기 (CSPRNG)를 초기화합니다.

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

SHA-256 작업을 초기화 취소합니다.

세부정보
매개변수
[in] aContext
SHA-256 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
SHA-256 작업을 초기화 해제했습니다.
OT_ERROR_FAILED
초기화되지 않은 SHA-256 작업을 수행할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoSha256Finish

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

SHA-256 작업을 완료합니다.

세부정보
매개변수
[in] aContext
SHA-256 작업의 컨텍스트입니다.
[in] aHash
해시를 저장해야 하는 출력 버퍼에 대한 포인터입니다.
[in] aHashSize
바이트 단위의 aHash 길이입니다.
반환 값
OT_ERROR_NONE
SHA-256 작업을 완료했습니다.
OT_ERROR_FAILED
SHA-256 작업을 완료할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext 또는 aHash이(가) NULL입니다.

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

SHA-256 작업을 초기화합니다.

세부정보
매개변수
[in] aContext
SHA-256 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
SHA-256 작업을 초기화했습니다.
OT_ERROR_FAILED
SHA-256 작업을 초기화하지 못했습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

SHA-256 작업을 시작합니다.

세부정보
매개변수
[in] aContext
SHA-256 작업의 컨텍스트입니다.
반환 값
OT_ERROR_NONE
SHA-256 작업을 시작했습니다.
OT_ERROR_FAILED
SHA-256 작업을 시작할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext이(가) 비어있음

otPlatCryptoSha256Update

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

새 입력으로 SHA-256 작업을 업데이트합니다.

세부정보
매개변수
[in] aContext
SHA-256 작업의 컨텍스트입니다.
[in] aBuf
입력 버퍼에 대한 포인터입니다.
[in] aBufLength
바이트 단위의 aBuf 길이입니다.
반환 값
OT_ERROR_NONE
새 입력 작업으로 SHA-256을 업데이트했습니다.
OT_ERROR_FAILED
SHA-256 작업을 업데이트할 수 없습니다.
OT_ERROR_INVALID_ARGS
aContext 또는 aBuf이(가) NULL입니다.

매크로

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

DER 형식으로 EDCSA 키 쌍을 나타내기 위한 최대 버퍼 크기 (바이트)입니다.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

EDCSA 공개 키를 나타내는 버퍼 크기 (바이트)입니다.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

EDCSA 서명을 나타내는 버퍼 크기 (바이트)입니다.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

최대 PBKDF2 SALT 길이: 솔트 접두사 (6) + 확장 팬 ID (8) + 네트워크 이름 (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

SHA256 해시의 길이 (바이트)입니다.

자료

OpenThread API 참조 주제는 GitHub에서 제공되는 소스 코드에서 비롯됩니다. 자세한 내용을 알아보거나 문서에 참여하려면 리소스를 참고하세요.