nl::Weave::Profiles::Security::Passcodes

이 네임스페이스는 Weave 보안 프로필 내에 있는 Weave 암호 라이브러리에 대한 Weave 내의 모든 인터페이스를 포함합니다.

요약

열거

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Weave 비밀번호 암호화 구성 유형입니다.
@279{
  kPasscodeEncryptionKeyLen = Platform::Security::AES128BlockCipher::kKeyLength,
  kPasscodeAuthenticationKeyLen = Platform::Security::SHA1::kHashLength,
  kPasscodeFingerprintKeyLen = Platform::Security::SHA1::kHashLength,
  kPasscodeTotalDerivedKeyLen = kPasscodeEncryptionKeyLen + kPasscodeAuthenticationKeyLen,
  kPasscodePaddedLen = Platform::Security::AES128BlockCipher::kBlockLength,
  kPasscodeAuthenticatorLen = 8,
  kPasscodeFingerprintLen = 8,
  kPasscodeMaxEncryptedLen = sizeof(uint8_t) + 2 * sizeof(uint32_t) + kPasscodePaddedLen + kPasscodeAuthenticatorLen + kPasscodeFingerprintLen,
  kPasscodeMaxLen = kPasscodePaddedLen,
  kPasscodeEncKeyDiversifierSize = sizeof(kPasscodeEncKeyDiversifier) + sizeof(uint8_t),
  kPasscodeFingerprintKeyDiversifierSize = sizeof(kPasscodeFingerprintKeyDiversifier)
}
enum
Weave 비밀번호 암호화 프로토콜 매개변수 크기입니다.

변수

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Weave 비밀번호 암호화 키 파생에 사용되는 키 다이버입니다.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Weave 비밀번호 암호화 키 파생에 사용되는 키 다이버입니다.

함수

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Nest 비밀번호 암호화 스키마를 사용하여 암호화된 비밀번호를 복호화합니다.
DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, const uint8_t *encKey, const uint8_t *authKey, const uint8_t *fingerprintKey, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen)
Nest 비밀번호 암호화 스키마를 사용하여 암호화된 비밀번호를 복호화합니다.
EncryptPasscode(uint8_t config, uint32_t keyId, uint32_t nonce, const uint8_t *passcode, size_t passcodeLen, uint8_t *encPasscode, size_t encPasscodeBufSize, size_t & encPasscodeLen, GroupKeyStoreBase *groupKeyStore)
Nest 비밀번호 암호화 스키마를 사용하여 비밀번호를 암호화합니다.
EncryptPasscode(uint8_t config, uint32_t keyId, uint32_t nonce, const uint8_t *passcode, size_t passcodeLen, const uint8_t *encKey, const uint8_t *authKey, const uint8_t *fingerprintKey, uint8_t *encPasscode, size_t encPasscodeBufSize, size_t & encPasscodeLen)
Nest 비밀번호 암호화 스키마를 사용하여 비밀번호를 암호화합니다.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
암호화된 비밀번호의 구성 유형을 가져옵니다.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
암호화된 비밀번호와 연결된 지문 값을 가져옵니다.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
암호화된 비밀번호를 암호화하는 데 사용된 키의 ID를 가져옵니다.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
암호화된 비밀번호와 연결된 nonce 값을 가져옵니다.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
제공된 비밀번호 암호화 구성이 비밀번호 암호화/복호화 API에서 지원되는 경우 true를 반환합니다.

구조체

nl::Weave::Profiles::Security::Passcodes::EncryptedPasscodeStruct

열거

@278

 @278

Weave 비밀번호 암호화 구성 유형입니다.

속성
kPasscodeConfig1_KeyId

테스트 비밀번호 구성 1에 사용된 더미 키 ID입니다.

kPasscode_Config1_TEST_ONLY

비밀번호 암호화 구성 #1은 지문 비밀번호 인증 시 암호화와 비밀 키를 사용하지 않습니다.

이 구성은 테스트 목적으로만 사용해야 합니다(SHOULD).

kPasscode_Config2

비밀번호 암호화 구성 #2는 8바이트 HMAC-SHA-1 무결성과 8바이트 HMAC-SHA-1 디지털 지문이 있는 AES-128-ECB 암호화를 사용합니다.

@279

 @279

Weave 비밀번호 암호화 프로토콜 매개변수 크기입니다.

속성
kPasscodeAuthenticationKeyLen

SHA-1 (비밀번호 인증) 키 길이

kPasscodeAuthenticatorLen

비밀번호 인증자 길이

kPasscodeEncKeyDiversifierSize

비밀번호 암호화 애플리케이션 키 다각화 크기입니다.

kPasscodeEncryptionKeyLen

비밀번호 암호화 (AES-128) 키 길이

kPasscodeFingerprintKeyDiversifierSize

비밀번호 지문 키 다양화 크기입니다.

kPasscodeFingerprintKeyLen

비밀번호 지문 (SHA-1) 키 길이

kPasscodeFingerprintLen

비밀번호 지문 길이

kPasscodeMaxEncryptedLen

암호화된 비밀번호 최대 길이

kPasscodeMaxLen

암호화되지 않은 최대 비밀번호 길이입니다.

kPasscodePaddedLen

비밀번호 길이 (AES-128 블록 길이로 패딩됨)

kPasscodeTotalDerivedKeyLen

비밀번호 총 (암호화 및 무결성) 키 길이

변수

kPasscodeEncKeyDiversifier

const uint8_t kPasscodeEncKeyDiversifier[] = { 0x1A, 0x65, 0x5D, 0x96 }

Weave 비밀번호 암호화 키 파생에 사용되는 키 다이버입니다.

이 값은 'Nest Passcode EK and AK'의 SHA-1 HASH의 처음 4바이트를 나타냅니다. 있습니다.

kPasscodeFingerprintKeyDiversifier

const uint8_t kPasscodeFingerprintKeyDiversifier[] = { 0xD1, 0xA1, 0xD9, 0x6C }

Weave 비밀번호 암호화 키 파생에 사용되는 키 다이버입니다.

이 값은 'Nest Passcode EK and AK'의 SHA-1 HASH의 처음 4바이트를 나타냅니다. 있습니다.

함수

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen,
  GroupKeyStoreBase *groupKeyStore
)

Nest 비밀번호 암호화 스키마를 사용하여 암호화된 비밀번호를 복호화합니다.

세부정보
매개변수
[in] encPasscode
암호화된 비밀번호 버퍼에 대한 포인터입니다.
[in] encPasscodeLen
암호화된 비밀번호 길이
[in] passcodeBuf
복호화된 비밀번호를 수신하기 위한 버퍼에 대한 포인터입니다.
[in] passcodeBufSize
passwordBuf가 가리키는 버퍼의 크기입니다.
[out] passcodeLen
복호화된 비밀번호 길이로 설정합니다.
[in] groupKeyStore
그룹 키 저장소 객체를 가리키는 포인터입니다.
반환 값
WEAVE_NO_ERROR
성공 시
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
지정된 비밀번호 구성이 지원되지 않는 경우
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
비밀번호 인증에 실패한 경우
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
비밀번호 지문 검사에 실패할 경우
WEAVE_ERROR_INVALID_KEY_ID
요청된 키의 키 ID가 잘못된 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 비밀번호 버퍼가 너무 작은 경우
WEAVE_ERROR_INVALID_ARGUMENT
암호화된 비밀번호가 너무 짧거나 긴 경우 또는 그룹 키 저장소에 대한 포인터가 제공되지 않았거나 플랫폼 키 저장소가 잘못된 키 매개변수를 반환하는 경우입니다.
other
플랫폼 키 저장소 API에서 반환하는 기타 플랫폼별 오류

DecryptPasscode

WEAVE_ERROR DecryptPasscode(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  const uint8_t *encKey,
  const uint8_t *authKey,
  const uint8_t *fingerprintKey,
  uint8_t *passcodeBuf,
  size_t passcodeBufSize,
  size_t & passcodeLen
)

Nest 비밀번호 암호화 스키마를 사용하여 암호화된 비밀번호를 복호화합니다.

세부정보
매개변수
[in] encPasscode
암호화된 비밀번호 버퍼에 대한 포인터입니다.
[in] encPasscodeLen
암호화된 비밀번호 길이
[in] encKey
비밀번호를 암호화하는 데 사용할 키에 대한 포인터입니다. 키의 길이는 지정된 구성과 관련된 암호화 알고리즘과 일치해야 합니다.
[in] authKey
비밀번호를 인증하는 데 사용할 키에 대한 포인터입니다. 키의 길이는 지정된 구성과 관련된 인증 알고리즘과 일치해야 합니다.
[in] fingerprintKey
비밀번호 지문을 생성하는 데 사용할 키에 대한 포인터입니다. 키의 길이는 지정된 구성과 관련된 디지털 지문 알고리즘과 일치해야 합니다.
[in] passcodeBuf
복호화된 비밀번호를 수신하기 위한 버퍼에 대한 포인터입니다.
[in] passcodeBufSize
passwordBuf가 가리키는 버퍼의 크기입니다.
[out] passcodeLen
복호화된 비밀번호 길이로 설정합니다.
반환 값
WEAVE_NO_ERROR
성공 시
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
지정된 비밀번호 구성이 지원되지 않는 경우
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
비밀번호 인증에 실패한 경우
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
비밀번호 지문 검사에 실패할 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 비밀번호 버퍼가 너무 작은 경우
WEAVE_ERROR_INVALID_ARGUMENT
암호화된 비밀번호가 너무 짧거나 긴 경우

EncryptPasscode

WEAVE_ERROR EncryptPasscode(
  uint8_t config,
  uint32_t keyId,
  uint32_t nonce,
  const uint8_t *passcode,
  size_t passcodeLen,
  uint8_t *encPasscode,
  size_t encPasscodeBufSize,
  size_t & encPasscodeLen,
  GroupKeyStoreBase *groupKeyStore
)

Nest 비밀번호 암호화 스키마를 사용하여 비밀번호를 암호화합니다.

세부정보
매개변수
[in] config
사용할 비밀번호 암호화 구성입니다.
[in] keyId
요청된 비밀번호 암호화 키 ID입니다.
[in] nonce
암호화된 비밀번호에 할당된 고유한 값입니다.
[in] passcode
암호화할 비밀번호에 대한 포인터입니다.
[in] passcodeLen
비밀번호 길이입니다.
[out] encPasscode
암호화된 비밀번호를 저장하기 위한 버퍼에 대한 포인터입니다.
[in] encPasscodeBufSize
암호화된 비밀번호 저장을 위한 버퍼의 크기입니다.
[out] encPasscodeLen
암호화된 비밀번호 길이
[in] groupKeyStore
그룹 키 저장소 객체를 가리키는 포인터입니다.
반환 값
WEAVE_NO_ERROR
성공 시
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
지정된 비밀번호 구성이 지원되지 않는 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 출력 버퍼가 암호화된 비밀번호에 비해 너무 작은 경우
WEAVE_ERROR_INVALID_KEY_ID
요청된 키의 키 ID가 잘못된 경우
WEAVE_ERROR_INVALID_ARGUMENT
제공된 비밀번호가 너무 짧거나 긴 경우 또는 그룹 키 저장소에 대한 포인터가 제공되지 않았거나 플랫폼 키 저장소가 잘못된 키 매개변수를 반환하는 경우입니다.
other
플랫폼 키 저장소 API에서 반환하는 기타 플랫폼별 오류

EncryptPasscode

WEAVE_ERROR EncryptPasscode(
  uint8_t config,
  uint32_t keyId,
  uint32_t nonce,
  const uint8_t *passcode,
  size_t passcodeLen,
  const uint8_t *encKey,
  const uint8_t *authKey,
  const uint8_t *fingerprintKey,
  uint8_t *encPasscode,
  size_t encPasscodeBufSize,
  size_t & encPasscodeLen
)

Nest 비밀번호 암호화 스키마를 사용하여 비밀번호를 암호화합니다.

세부정보
매개변수
[in] config
사용할 Weave 비밀번호 암호화 구성입니다.
[in] keyId
요청된 비밀번호 암호화 키 ID입니다.
[in] nonce
비밀번호에 할당된 고유한 값입니다.
[in] passcode
암호화할 비밀번호에 대한 포인터입니다.
[in] passcodeLen
비밀번호 길이입니다.
[in] encKey
비밀번호를 암호화하는 데 사용할 키에 대한 포인터입니다. 키의 길이는 지정된 구성과 관련된 암호화 알고리즘과 일치해야 합니다.
[in] authKey
비밀번호를 인증하는 데 사용할 키에 대한 포인터입니다. 키의 길이는 지정된 구성과 관련된 인증 알고리즘과 일치해야 합니다.
[in] fingerprintKey
비밀번호 지문을 생성하는 데 사용할 키에 대한 포인터입니다. 키의 길이는 지정된 구성과 관련된 디지털 지문 알고리즘과 일치해야 합니다.
[out] encPasscode
암호화된 비밀번호가 저장될 버퍼에 대한 포인터입니다. 이 버퍼의 크기는 kPasscodeMaxEncryptedLen 이상이어야 합니다.
[in] encPasscodeBufSize
인코딩이 가리키는 버퍼의 크기.
[out] encPasscodeLen
암호화된 비밀번호 길이
반환 값
WEAVE_NO_ERROR
성공 시
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
지정된 비밀번호 구성이 지원되지 않는 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 출력 버퍼가 암호화된 비밀번호에 비해 너무 작은 경우
WEAVE_ERROR_INVALID_ARGUMENT
제공된 비밀번호가 너무 짧거나 긴 경우

GetEncryptedPasscodeConfig

WEAVE_ERROR GetEncryptedPasscodeConfig(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t & config
)

암호화된 비밀번호의 구성 유형을 가져옵니다.

세부정보
매개변수
[in] encPasscode
암호화된 비밀번호가 포함된 버퍼를 가리키는 포인터입니다.
[in] encPasscodeLen
암호화된 비밀번호의 길이입니다.
[out] config
암호화된 비밀번호에서 사용하는 Weave 비밀번호 암호화 구성입니다.

GetEncryptedPasscodeFingerprint

WEAVE_ERROR GetEncryptedPasscodeFingerprint(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint8_t *fingerprintBuf,
  size_t fingerprintBufSize,
  size_t & fingerprintLen
)

암호화된 비밀번호와 연결된 지문 값을 가져옵니다.

세부정보
매개변수
[in] encPasscode
암호화된 비밀번호가 포함된 버퍼를 가리키는 포인터입니다.
[in] encPasscodeLen
암호화된 비밀번호의 길이입니다.
[in] fingerprintBuf
지문 값을 수신하기 위한 버퍼입니다.
[in] fingerprintBufSize
printBuf가 가리키는 버퍼의 크기입니다.
[out] fingerprintLen
반환된 지문 값의 길이입니다.

GetEncryptedPasscodeKeyId

WEAVE_ERROR GetEncryptedPasscodeKeyId(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & keyId
)

암호화된 비밀번호를 암호화하는 데 사용된 키의 ID를 가져옵니다.

세부정보
매개변수
[in] encPasscode
암호화된 비밀번호가 포함된 버퍼를 가리키는 포인터입니다.
[in] encPasscodeLen
암호화된 비밀번호의 길이입니다.
[out] keyId
암호화된 비밀번호를 암호화하는 데 사용된 키의 ID입니다.

GetEncryptedPasscodeNonce

WEAVE_ERROR GetEncryptedPasscodeNonce(
  const uint8_t *encPasscode,
  size_t encPasscodeLen,
  uint32_t & nonce
)

암호화된 비밀번호와 연결된 nonce 값을 가져옵니다.

세부정보
매개변수
[in] encPasscode
암호화된 비밀번호가 포함된 버퍼를 가리키는 포인터입니다.
[in] encPasscodeLen
암호화된 비밀번호의 길이입니다.
[out] nonce
암호화된 비밀번호와 연결된 nonce 값입니다.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

제공된 비밀번호 암호화 구성이 비밀번호 암호화/복호화 API에서 지원되는 경우 true를 반환합니다.