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

Questo spazio dei nomi include tutte le interfacce di Weave per la libreria dei passcode di Weave all'interno del profilo di sicurezza Weave.

Riepilogo

Enumerazioni

@278{
  kPasscode_Config1_TEST_ONLY = 0x01,
  kPasscode_Config2 = 0x02,
  kPasscodeConfig1_KeyId = WeaveKeyId::kNone
}
enum
Tipi di configurazione della crittografia con passcode 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
Dimensioni dei parametri del protocollo di crittografia passcode di Weave.

Variabili

kPasscodeEncKeyDiversifier = { 0x1A, 0x65, 0x5D, 0x96 }[]
const uint8_t
Diversificatore di chiavi utilizzato per la derivazione della chiave di crittografia del passcode di Weave.
kPasscodeFingerprintKeyDiversifier = { 0xD1, 0xA1, 0xD9, 0x6C }[]
const uint8_t
Diversificatore di chiavi utilizzato per la derivazione della chiave di crittografia del passcode di Weave.

Funzioni

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Decripta un passcode criptato usando lo schema di crittografia di Nest Passcode.
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)
Decripta un passcode criptato usando lo schema di crittografia di Nest Passcode.
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)
Cripta un passcode utilizzando lo schema di crittografia di Nest Passcode.
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)
Cripta un passcode utilizzando lo schema di crittografia di Nest Passcode.
GetEncryptedPasscodeConfig(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t & config)
Recupera il tipo di configurazione di un passcode criptato.
GetEncryptedPasscodeFingerprint(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *fingerprintBuf, size_t fingerprintBufSize, size_t & fingerprintLen)
Recupera il valore dell'impronta associato a un passcode criptato.
GetEncryptedPasscodeKeyId(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & keyId)
Recupera l'ID della chiave utilizzata per criptare un passcode criptato.
GetEncryptedPasscodeNonce(const uint8_t *encPasscode, size_t encPasscodeLen, uint32_t & nonce)
Recupera il valore nonce associato a un passcode criptato.
IsSupportedPasscodeEncryptionConfig(uint8_t config)
bool
Restituisce true se la configurazione della crittografia del passcode fornita è supportata dalle API di crittografia/decrittografia del passcode.

Structs

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

Enumerazioni

@278

 @278

Tipi di configurazione della crittografia con passcode Weave.

Proprietà
kPasscodeConfig1_KeyId

ID chiave fittizia utilizzato per la configurazione 1 del passcode di test.

kPasscode_Config1_TEST_ONLY

La configurazione della crittografia del passcode n. 1 non utilizza la crittografia e le chiavi segrete per l'autenticazione e il passcode dell'impronta.

Questa configurazione DEVE essere utilizzata solo a scopo di TEST.

kPasscode_Config2

La configurazione di crittografia del passcode n. 2 utilizza la crittografia AES-128-ECB con integrità HMAC-SHA-1 a 8 byte e impronta HMAC-SHA-1 a 8 byte.

@279

 @279

Dimensioni dei parametri del protocollo di crittografia passcode di Weave.

Proprietà
kPasscodeAuthenticationKeyLen

Lunghezza della chiave di autenticazione SHA-1 con passcode.

kPasscodeAuthenticatorLen

Lunghezza dell'autenticatore del passcode.

kPasscodeEncKeyDiversifierSize

Dimensione della diversificazione della chiave di applicazione di crittografia del passcode.

kPasscodeEncryptionKeyLen

Lunghezza della chiave di crittografia con passcode (AES-128).

kPasscodeFingerprintKeyDiversifierSize

Dimensioni della diversificazione della chiave dell'impronta del passcode.

kPasscodeFingerprintKeyLen

Lunghezza della chiave SHA-1 (passcode fingerprint).

kPasscodeFingerprintLen

Lunghezza dell'impronta del passcode.

kPasscodeMaxEncryptedLen

Lunghezza massima del passcode criptato.

kPasscodeMaxLen

Lunghezza massima del passcode non criptato.

kPasscodePaddedLen

Lunghezza del passcode (riempita alla lunghezza del blocco AES-128).

kPasscodeTotalDerivedKeyLen

Lunghezza totale della chiave (crittografia e integrità) del passcode.

Variabili

kPasscodeEncKeyDiversifier

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

Diversificatore di chiavi utilizzato per la derivazione della chiave di crittografia del passcode di Weave.

Questo valore rappresenta i primi 4 byte dell'HASH SHA-1 di "Nest Passcode EK and AK" a frase.

kPasscodeFingerprintKeyDiversifier

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

Diversificatore di chiavi utilizzato per la derivazione della chiave di crittografia del passcode di Weave.

Questo valore rappresenta i primi 4 byte dell'HASH SHA-1 di "Nest Passcode EK and AK" a frase.

Funzioni

DecryptPasscode

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

Decripta un passcode criptato usando lo schema di crittografia di Nest Passcode.

Dettagli
Parametri
[in] encPasscode
Un puntatore al buffer di passcode criptato.
[in] encPasscodeLen
La lunghezza del passcode criptato.
[in] passcodeBuf
Un puntatore a un buffer per ricevere il passcode decriptato.
[in] passcodeBufSize
Le dimensioni del buffer a cui punta il passcodeBuf.
[out] passcodeLen
Imposta la lunghezza del passcode decriptato.
[in] groupKeyStore
Un puntatore all'oggetto di archivio chiavi di gruppo.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se la configurazione del passcode specificata non è supportata.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Se l'autenticazione tramite passcode non va a buon fine.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Se il controllo dell'impronta del passcode non va a buon fine.
WEAVE_ERROR_INVALID_KEY_ID
Se la chiave richiesta ha un ID chiave non valido.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer di passcode fornito è troppo piccolo.
WEAVE_ERROR_INVALID_ARGUMENT
Se il passcode criptato è troppo breve o troppo lungo: Oppure se il puntatore all'archivio chiavi del gruppo non viene fornito o l'archivio chiavi della piattaforma restituisce parametri chiave non validi.
other
Altri errori specifici della piattaforma restituiti dalle API Key Store della piattaforma.

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
)

Decripta un passcode criptato usando lo schema di crittografia di Nest Passcode.

Dettagli
Parametri
[in] encPasscode
Un puntatore al buffer di passcode criptato.
[in] encPasscodeLen
La lunghezza del passcode criptato.
[in] encKey
Un puntatore alla chiave da utilizzare per criptare il passcode. La lunghezza della chiave deve corrispondere all'algoritmo di crittografia associato alla configurazione specificata.
[in] authKey
Un puntatore alla chiave da utilizzare per autenticare il passcode. La lunghezza della chiave deve corrispondere all'algoritmo di autenticazione associato alla configurazione specificata.
[in] fingerprintKey
Un puntatore alla chiave da utilizzare per generare l'impronta del passcode. La lunghezza della chiave deve corrispondere all'algoritmo di fingerprint associato alla configurazione specificata.
[in] passcodeBuf
Un puntatore a un buffer per ricevere il passcode decriptato.
[in] passcodeBufSize
Le dimensioni del buffer a cui punta il passcodeBuf.
[out] passcodeLen
Imposta la lunghezza del passcode decriptato.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se la configurazione del passcode specificata non è supportata.
WEAVE_ERROR_PASSCODE_AUTHENTICATION_FAILED
Se l'autenticazione tramite passcode non va a buon fine.
WEAVE_ERROR_PASSCODE_FINGERPRINT_FAILED
Se il controllo dell'impronta del passcode non va a buon fine.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer di passcode fornito è troppo piccolo.
WEAVE_ERROR_INVALID_ARGUMENT
Se il passcode criptato è troppo breve o troppo lungo.

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
)

Cripta un passcode utilizzando lo schema di crittografia di Nest Passcode.

Dettagli
Parametri
[in] config
La configurazione di crittografia del passcode da utilizzare.
[in] keyId
L'ID della chiave di crittografia del passcode richiesto.
[in] nonce
Un valore univoco assegnato al passcode criptato.
[in] passcode
Un puntatore al passcode da criptare.
[in] passcodeLen
La lunghezza del passcode.
[out] encPasscode
Un puntatore al buffer per memorizzare il passcode criptato.
[in] encPasscodeBufSize
Le dimensioni del buffer per l'archiviazione del passcode criptato.
[out] encPasscodeLen
La lunghezza del passcode criptato.
[in] groupKeyStore
Un puntatore all'oggetto di archivio chiavi di gruppo.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se la configurazione del passcode specificata non è supportata.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer di output fornito è troppo piccolo per il passcode criptato.
WEAVE_ERROR_INVALID_KEY_ID
Se la chiave richiesta ha un ID chiave non valido.
WEAVE_ERROR_INVALID_ARGUMENT
Se il passcode fornito è troppo breve o troppo lungo: Oppure se il puntatore all'archivio chiavi del gruppo non viene fornito o l'archivio chiavi della piattaforma restituisce parametri chiave non validi.
other
Altri errori specifici della piattaforma restituiti dalle API Key Store della piattaforma.

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
)

Cripta un passcode utilizzando lo schema di crittografia di Nest Passcode.

Dettagli
Parametri
[in] config
La configurazione della crittografia del passcode di Weave da utilizzare.
[in] keyId
L'ID della chiave di crittografia del passcode richiesto.
[in] nonce
Un valore univoco assegnato al passcode.
[in] passcode
Un puntatore al passcode da criptare.
[in] passcodeLen
La lunghezza del passcode.
[in] encKey
Un puntatore alla chiave da utilizzare per criptare il passcode. La lunghezza della chiave deve corrispondere all'algoritmo di crittografia associato alla configurazione specificata.
[in] authKey
Un puntatore alla chiave da utilizzare per autenticare il passcode. La lunghezza della chiave deve corrispondere all'algoritmo di autenticazione associato alla configurazione specificata.
[in] fingerprintKey
Un puntatore alla chiave da utilizzare per generare l'impronta del passcode. La lunghezza della chiave deve corrispondere all'algoritmo di fingerprint associato alla configurazione specificata.
[out] encPasscode
Un puntatore al buffer in cui verrà memorizzato il passcode criptato. Questo buffer deve avere una dimensione minima di kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
La dimensione del buffer a cui punta encPasscode.
[out] encPasscodeLen
La lunghezza del passcode criptato.
Valori restituiti
WEAVE_NO_ERROR
Un successo.
WEAVE_ERROR_UNSUPPORTED_PASSCODE_CONFIG
Se la configurazione del passcode specificata non è supportata.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer di output fornito è troppo piccolo per il passcode criptato.
WEAVE_ERROR_INVALID_ARGUMENT
Se il passcode fornito è troppo breve o troppo lungo.

GetEncryptedPasscodeConfig

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

Recupera il tipo di configurazione di un passcode criptato.

Dettagli
Parametri
[in] encPasscode
Punta a un buffer contenente il passcode criptato.
[in] encPasscodeLen
Lunghezza del passcode criptato.
[out] config
La configurazione della crittografia del passcode Weave utilizzata dal passcode criptato.

GetEncryptedPasscodeFingerprint

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

Recupera il valore dell'impronta associato a un passcode criptato.

Dettagli
Parametri
[in] encPasscode
Punta a un buffer contenente il passcode criptato.
[in] encPasscodeLen
Lunghezza del passcode criptato.
[in] fingerprintBuf
Un buffer per ricevere il valore dell'impronta.
[in] fingerprintBufSize
La dimensione del buffer indicato da fingerprintBuf.
[out] fingerprintLen
La lunghezza del valore dell'impronta restituito.

GetEncryptedPasscodeKeyId

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

Recupera l'ID della chiave utilizzata per criptare un passcode criptato.

Dettagli
Parametri
[in] encPasscode
Punta a un buffer contenente il passcode criptato.
[in] encPasscodeLen
Lunghezza del passcode criptato.
[out] keyId
L'ID della chiave utilizzata per criptare il passcode criptato.

GetEncryptedPasscodeNonce

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

Recupera il valore nonce associato a un passcode criptato.

Dettagli
Parametri
[in] encPasscode
Punta a un buffer contenente il passcode criptato.
[in] encPasscodeLen
Lunghezza del passcode criptato.
[out] nonce
Il valore nonce associato a un passcode criptato.

IsSupportedPasscodeEncryptionConfig

bool IsSupportedPasscodeEncryptionConfig(
  uint8_t config
)

Restituisce true se la configurazione della crittografia del passcode fornita è supportata dalle API di crittografia/decrittografia del passcode.