패스키 최초 1회 변경 가능 제한
This commit is contained in:
@@ -19,11 +19,13 @@
|
||||
#define APP_NVS_KEY_HW_NO "hw"
|
||||
#define APP_NVS_KEY_SERIAL_NO "serial"
|
||||
#define APP_NVS_KEY_PASSKEY "passkey"
|
||||
#define APP_NVS_KEY_PASSKEY_CHANGED "passkey_changed" /* 패스키 1회 변경 완료 플래그 */
|
||||
|
||||
#define APP_NVS_FULL_KEY_PIEZO "vesiscan/piezo"
|
||||
#define APP_NVS_FULL_KEY_HW_NO "vesiscan/hw"
|
||||
#define APP_NVS_FULL_KEY_SERIAL_NO "vesiscan/serial"
|
||||
#define APP_NVS_FULL_KEY_PASSKEY "vesiscan/passkey"
|
||||
#define APP_NVS_FULL_KEY_PASSKEY_CHANGED "vesiscan/passkey_changed" /* 값 0은 변경 가능, 값 1은 변경 차단 */
|
||||
|
||||
static piezo_config_t *m_piezo_cfg;
|
||||
static app_nvs_piezo_validate_fn m_piezo_validate;
|
||||
@@ -122,6 +124,18 @@ static int app_nvs_settings_set(const char *name, size_t len,
|
||||
return read_exact(read_cb, cb_arg, m_static_passkey, PASSKEY_LENGTH, APP_NVS_KEY_PASSKEY);
|
||||
}
|
||||
|
||||
if (settings_name_steq(name, APP_NVS_KEY_PASSKEY_CHANGED, &next) && (next == NULL))
|
||||
{
|
||||
/* 저장된 변경 완료 플래그 복원 */
|
||||
if (len != sizeof(m_passkey_changed))
|
||||
{
|
||||
DBG_ERR("[NVS] passkey_changed size mismatch (%u)\r\n", (uint32_t)len);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return read_exact(read_cb, cb_arg, &m_passkey_changed, sizeof(m_passkey_changed), APP_NVS_KEY_PASSKEY_CHANGED);
|
||||
}
|
||||
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -220,3 +234,19 @@ int app_nvs_save_passkey(const char *passkey)
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
int app_nvs_save_passkey_changed(uint8_t changed)
|
||||
{
|
||||
#if IS_ENABLED(CONFIG_SETTINGS)
|
||||
/* 패스키 변경 성공 후 재부팅해도 재변경 차단 */
|
||||
int err = settings_save_one(APP_NVS_FULL_KEY_PASSKEY_CHANGED, &changed, sizeof(changed));
|
||||
if (err)
|
||||
{
|
||||
DBG_ERR("[NVS] passkey_changed save failed err=%d\r\n", err);
|
||||
}
|
||||
return err;
|
||||
#else
|
||||
ARG_UNUSED(changed);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user