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

Questo spazio dei nomi include tutte le interfacce all'interno di Weave per la libreria di passcode 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 di crittografia del 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 del passcode Weave.

Variabili

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

Funzioni

DecryptPasscode(const uint8_t *encPasscode, size_t encPasscodeLen, uint8_t *passcodeBuf, size_t passcodeBufSize, size_t & passcodeLen, GroupKeyStoreBase *groupKeyStore)
Decriptare un passcode criptato tramite 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)
Decriptare un passcode criptato tramite 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 usando lo schema di Nest Passcode Encryption.
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 usando lo schema di Nest Passcode Encryption.
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 di crittografia del passcode fornita è supportata dalle API di crittografia/decrittografia del passcode.

Strutture

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

Enumerazioni

@278

 @278

Tipi di configurazione di crittografia del passcode Weave.

Proprietà
kPasscodeConfig1_KeyId

ID chiave fittizio utilizzato per la configurazione del passcode di prova n. 1.

kPasscode_Config1_TEST_ONLY

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

Questa configurazione DEVE essere utilizzata solo a scopo di TEST.

kPasscode_Config2

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

@279

 @279

Dimensioni dei parametri del protocollo di crittografia del passcode Weave.

Proprietà
kPasscodeAuthenticationKeyLen

Lunghezza della chiave di autenticazione con passcode (SHA-1).

kPasscodeAuthenticatorLen

Lunghezza dell'autenticatore passcode.

kPasscodeEncKeyDiversifierSize

Dimensione del diversificatore della chiave dell'applicazione di crittografia del passcode.

kPasscodeEncryptionKeyLen

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

kPasscodeFingerprintKeyDiversifierSize

Dimensione diversificatore della chiave dell'impronta del passcode.

kPasscodeFingerprintKeyLen

Lunghezza della chiave fingerprint (SHA-1) del passcode.

kPasscodeFingerprintLen

Lunghezza dell'impronta del passcode.

kPasscodeMaxEncryptedLen

Lunghezza massima del passcode criptato.

kPasscodeMaxLen

Lunghezza massima del passcode non criptato.

kPasscodePaddedLen

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

kPasscodeTotalDerivedKeyLen

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

Variabili

kPasscodeEncKeyDiversifier

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

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

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

kPasscodeFingerprintKeyDiversifier

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

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

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

Funzioni

DecryptPasscode

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

Decriptare un passcode criptato tramite lo schema di crittografia di Nest Passcode.

Dettagli
Parametri
[in] encPasscode
Un puntatore al buffer del passcode criptato.
[in] encPasscodeLen
La lunghezza del passcode criptato.
[in] passcodeBuf
Un puntatore a un buffer per ricevere il passcode decriptato.
[in] passcodeBufSize
La dimensione del buffer a cui punta passcodeBuf.
[out] passcodeLen
Imposta la lunghezza del passcode decriptato.
[in] groupKeyStore
Un puntatore all'oggetto archivio chiavi del gruppo.
Valori restituiti
WEAVE_NO_ERROR
In caso di 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
In caso di errore del controllo dell'impronta tramite passcode.
WEAVE_ERROR_INVALID_KEY_ID
Se la chiave richiesta ha un ID chiave non valido.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer del 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 oppure se l'archivio chiavi della piattaforma restituisce parametri chiave non validi.
other
Altri errori specifici della piattaforma restituiti dalle API dell'archivio chiavi 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
)

Decriptare un passcode criptato tramite lo schema di crittografia di Nest Passcode.

Dettagli
Parametri
[in] encPasscode
Un puntatore al buffer del 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 digitale del passcode. La lunghezza della chiave deve corrispondere all'algoritmo di impronte digitali associato alla configurazione specificata.
[in] passcodeBuf
Un puntatore a un buffer per ricevere il passcode decriptato.
[in] passcodeBufSize
La dimensione del buffer a cui punta passcodeBuf.
[out] passcodeLen
Imposta la lunghezza del passcode decriptato.
Valori restituiti
WEAVE_NO_ERROR
In caso di 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
In caso di errore del controllo dell'impronta tramite passcode.
WEAVE_ERROR_BUFFER_TOO_SMALL
Se il buffer del 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 usando lo schema di Nest Passcode Encryption.

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 in cui memorizzare il passcode criptato.
[in] encPasscodeBufSize
Le dimensioni del buffer per l'archiviazione di passcode criptati.
[out] encPasscodeLen
La lunghezza del passcode criptato.
[in] groupKeyStore
Un puntatore all'oggetto archivio chiavi del gruppo.
Valori restituiti
WEAVE_NO_ERROR
In caso di 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 oppure se l'archivio chiavi della piattaforma restituisce parametri chiave non validi.
other
Altri errori specifici della piattaforma restituiti dalle API dell'archivio chiavi 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 usando lo schema di Nest Passcode Encryption.

Dettagli
Parametri
[in] config
La configurazione di crittografia del passcode Weave da utilizzare.
[in] keyId
L'ID della chiave di crittografia del passcode richiesto.
[in] nonce
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 digitale del passcode. La lunghezza della chiave deve corrispondere all'algoritmo di impronte digitali associato alla configurazione specificata.
[out] encPasscode
Un puntatore a un buffer in cui verrà memorizzato il passcode criptato. Le dimensioni di questo buffer devono essere almeno pari a kPasscodeMaxEncryptedLen.
[in] encPasscodeBufSize
La dimensione del buffer a cui punta encPasscode.
[out] encPasscodeLen
La lunghezza del passcode criptato.
Valori restituiti
WEAVE_NO_ERROR
In caso di 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 della fingerprint.
[in] fingerprintBufSize
La dimensione del buffer puntata 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 di crittografia del passcode fornita è supportata dalle API di crittografia/decrittografia del passcode.