Mark the remaining small credential keys as secret (#183774)

This commit is contained in:
Franck Nijhof
2026-10-02 10:35:56 +02:00
committed by GitHub
parent b89b9d4a22
commit f07e089e89
26 changed files with 70 additions and 45 deletions
@@ -23,7 +23,7 @@ class AmbientStationFlowHandler(ConfigFlow, domain=DOMAIN):
self.data_schema = probatio.Schema(
{
probatio.Required(probatio.Secret(CONF_API_KEY)): str,
probatio.Required(probatio.Secret(CONF_APP_KEY)): str,
probatio.Required(CONF_APP_KEY): str,
}
)
@@ -48,10 +48,12 @@ CONFIG_SCHEMA = probatio.Schema(
DOMAIN: probatio.Schema(
{
probatio.Optional(CONF_EVENT_HUB_INSTANCE_NAME): cv.string,
probatio.Optional(CONF_EVENT_HUB_CON_STRING): cv.string,
probatio.Optional(
probatio.Secret(CONF_EVENT_HUB_CON_STRING)
): cv.string,
probatio.Optional(CONF_EVENT_HUB_NAMESPACE): cv.string,
probatio.Optional(CONF_EVENT_HUB_SAS_POLICY): cv.string,
probatio.Optional(CONF_EVENT_HUB_SAS_KEY): cv.string,
probatio.Optional(probatio.Secret(CONF_EVENT_HUB_SAS_KEY)): cv.string,
probatio.Optional(CONF_SEND_INTERVAL): cv.positive_int,
probatio.Optional(CONF_MAX_DELAY): cv.positive_int,
probatio.Optional(CONF_FILTER, default={}): FILTER_SCHEMA,
@@ -42,7 +42,7 @@ BASE_SCHEMA = probatio.Schema(
CONN_STRING_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_EVENT_HUB_CON_STRING): str,
probatio.Required(probatio.Secret(CONF_EVENT_HUB_CON_STRING)): str,
}
)
@@ -50,7 +50,7 @@ SAS_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_EVENT_HUB_NAMESPACE): str,
probatio.Required(CONF_EVENT_HUB_SAS_POLICY): str,
probatio.Required(CONF_EVENT_HUB_SAS_KEY): str,
probatio.Required(probatio.Secret(CONF_EVENT_HUB_SAS_KEY)): str,
}
)
@@ -95,7 +95,7 @@ class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
probatio.Required(
CONF_CONTAINER_NAME, default="home-assistant-backups"
): str,
probatio.Required(CONF_STORAGE_ACCOUNT_KEY): str,
probatio.Required(probatio.Secret(CONF_STORAGE_ACCOUNT_KEY)): str,
}
),
errors=errors,
@@ -131,7 +131,7 @@ class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
step_id="reauth_confirm",
data_schema=probatio.Schema(
{
probatio.Required(CONF_STORAGE_ACCOUNT_KEY): str,
probatio.Required(probatio.Secret(CONF_STORAGE_ACCOUNT_KEY)): str,
}
),
errors=errors,
@@ -164,7 +164,7 @@ class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
default=reconfigure_entry.data[CONF_CONTAINER_NAME],
): str,
probatio.Required(
CONF_STORAGE_ACCOUNT_KEY,
probatio.Secret(CONF_STORAGE_ACCOUNT_KEY),
default=reconfigure_entry.data[CONF_STORAGE_ACCOUNT_KEY],
): str,
}
@@ -34,7 +34,7 @@ REQUIRED_CAPABILITIES = {"writeFiles", "listFiles", "deleteFiles", "readFiles"}
STEP_USER_DATA_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_KEY_ID): cv.string,
probatio.Required(CONF_APPLICATION_KEY): TextSelector(
probatio.Required(probatio.Secret(CONF_APPLICATION_KEY)): TextSelector(
config=TextSelectorConfig(type=TextSelectorType.PASSWORD)
),
probatio.Required(CONF_BUCKET): cv.string,
@@ -253,7 +253,9 @@ class BackblazeConfigFlow(ConfigFlow, domain=DOMAIN):
data_schema=probatio.Schema(
{
probatio.Required(CONF_KEY_ID): cv.string,
probatio.Required(CONF_APPLICATION_KEY): TextSelector(
probatio.Required(
probatio.Secret(CONF_APPLICATION_KEY)
): TextSelector(
config=TextSelectorConfig(type=TextSelectorType.PASSWORD)
),
}
@@ -118,7 +118,7 @@ class BSBLANFlowHandler(ConfigFlow, domain=DOMAIN):
if user_input is None:
data_schema = probatio.Schema(
{
probatio.Optional(CONF_PASSKEY): str,
probatio.Optional(probatio.Secret(CONF_PASSKEY)): str,
probatio.Optional(CONF_USERNAME): str,
probatio.Optional(probatio.Secret(CONF_PASSWORD)): str,
}
@@ -156,7 +156,7 @@ class BSBLANFlowHandler(ConfigFlow, domain=DOMAIN):
step_id="discovery_confirm",
data_schema=probatio.Schema(
{
probatio.Optional(CONF_PASSKEY): str,
probatio.Optional(probatio.Secret(CONF_PASSKEY)): str,
probatio.Optional(CONF_USERNAME): str,
probatio.Optional(probatio.Secret(CONF_PASSWORD)): str,
}
@@ -171,7 +171,7 @@ class BSBLANFlowHandler(ConfigFlow, domain=DOMAIN):
step_id="discovery_confirm",
data_schema=probatio.Schema(
{
probatio.Optional(CONF_PASSKEY): str,
probatio.Optional(probatio.Secret(CONF_PASSKEY)): str,
probatio.Optional(CONF_USERNAME): str,
probatio.Optional(probatio.Secret(CONF_PASSWORD)): str,
}
@@ -275,7 +275,7 @@ class BSBLANFlowHandler(ConfigFlow, domain=DOMAIN):
return probatio.Schema(
{
probatio.Optional(
CONF_PASSKEY,
probatio.Secret(CONF_PASSKEY),
default=defaults.get(CONF_PASSKEY) or probatio.UNDEFINED,
): str,
probatio.Optional(
@@ -303,7 +303,7 @@ class BSBLANFlowHandler(ConfigFlow, domain=DOMAIN):
default=defaults.get(CONF_PORT, DEFAULT_PORT),
): int,
probatio.Optional(
CONF_PASSKEY,
probatio.Secret(CONF_PASSKEY),
default=defaults.get(CONF_PASSKEY) or probatio.UNDEFINED,
): str,
probatio.Optional(
@@ -32,13 +32,13 @@ USER_SCHEMA = probatio.Schema(
probatio.Required(CONF_PORT, default=DEFAULT_PORT): probatio.Port(),
probatio.Optional(probatio.Secret(CONF_PIN), default=DEFAULT_PIN): cv.string,
probatio.Required(CONF_TYPE, default=BRIDGE): probatio.In(DEVICE_TYPE_LIST),
probatio.Optional(CONF_VEDO_PIN): cv.string,
probatio.Optional(probatio.Secret(CONF_VEDO_PIN)): cv.string,
}
)
STEP_REAUTH_DATA_SCHEMA = probatio.Schema(
{
probatio.Required(probatio.Secret(CONF_PIN)): cv.string,
probatio.Optional(CONF_VEDO_PIN): cv.string,
probatio.Optional(probatio.Secret(CONF_VEDO_PIN)): cv.string,
}
)
@@ -240,7 +240,7 @@ class ComelitConfigFlow(ConfigFlow, domain=DOMAIN):
CONF_PORT, default=reconfigure_entry.data[CONF_PORT]
): probatio.Port(),
probatio.Optional(probatio.Secret(CONF_PIN)): cv.string,
probatio.Optional(CONF_VEDO_PIN): cv.string,
probatio.Optional(probatio.Secret(CONF_VEDO_PIN)): cv.string,
}
)
+3 -1
View File
@@ -246,7 +246,9 @@ class DSMRFlowHandler(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="encryption_key",
data_schema=probatio.Schema({probatio.Required(CONF_ENCRYPTION_KEY): str}),
data_schema=probatio.Schema(
{probatio.Required(probatio.Secret(CONF_ENCRYPTION_KEY)): str}
),
errors=errors,
)
+12 -6
View File
@@ -50,7 +50,7 @@ REAUTH_FORM_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_ELMAX_USERNAME): str,
probatio.Required(probatio.Secret(CONF_ELMAX_PASSWORD)): str,
probatio.Required(CONF_ELMAX_PANEL_PIN): str,
probatio.Required(probatio.Secret(CONF_ELMAX_PANEL_PIN)): str,
}
)
@@ -59,13 +59,13 @@ DIRECT_SETUP_SCHEMA = probatio.Schema(
probatio.Required(CONF_ELMAX_MODE_DIRECT_HOST): str,
probatio.Required(CONF_ELMAX_MODE_DIRECT_PORT, default=443): int,
probatio.Required(CONF_ELMAX_MODE_DIRECT_SSL, default=True): bool,
probatio.Required(CONF_ELMAX_PANEL_PIN): str,
probatio.Required(probatio.Secret(CONF_ELMAX_PANEL_PIN)): str,
}
)
ZEROCONF_SETUP_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_ELMAX_PANEL_PIN): str,
probatio.Required(probatio.Secret(CONF_ELMAX_PANEL_PIN)): str,
probatio.Required(CONF_ELMAX_MODE_DIRECT_SSL, default=True): bool,
}
)
@@ -231,7 +231,9 @@ class ElmaxConfigFlow(ConfigFlow, domain=DOMAIN):
probatio.Required(
CONF_ELMAX_MODE_DIRECT_SSL, default=self._panel_direct_use_ssl
): bool,
probatio.Required(CONF_ELMAX_PANEL_PIN, default=self._panel_pin): str,
probatio.Required(
probatio.Secret(CONF_ELMAX_PANEL_PIN), default=self._panel_pin
): str,
}
)
return await self._handle_direct_and_create_entry(
@@ -257,7 +259,9 @@ class ElmaxConfigFlow(ConfigFlow, domain=DOMAIN):
self._panel_pin = user_input[CONF_ELMAX_PANEL_PIN]
tmp_schema = probatio.Schema(
{
probatio.Required(CONF_ELMAX_PANEL_PIN, default=self._panel_pin): str,
probatio.Required(
probatio.Secret(CONF_ELMAX_PANEL_PIN), default=self._panel_pin
): str,
probatio.Required(
CONF_ELMAX_MODE_DIRECT_SSL, default=self._panel_direct_use_ssl
): bool,
@@ -341,7 +345,9 @@ class ElmaxConfigFlow(ConfigFlow, domain=DOMAIN):
probatio.Required(CONF_ELMAX_PANEL_NAME): probatio.In(
self._panel_names.keys()
),
probatio.Required(CONF_ELMAX_PANEL_PIN, default="000000"): str,
probatio.Required(
probatio.Secret(CONF_ELMAX_PANEL_PIN), default="000000"
): str,
}
)
self._panels_schema = schema
@@ -78,7 +78,7 @@ GOOGLE_ASSISTANT_SCHEMA = probatio.All(
): probatio.EnsureList(),
probatio.Optional(CONF_ENTITY_CONFIG): {cv.entity_id: ENTITY_SCHEMA},
# str on purpose, makes sure it is configured correctly.
probatio.Optional(CONF_SECURE_DEVICES_PIN): str,
probatio.Optional(probatio.Secret(CONF_SECURE_DEVICES_PIN)): str,
probatio.Optional(CONF_REPORT_STATE, default=False): cv.boolean,
probatio.Optional(CONF_SERVICE_ACCOUNT): GOOGLE_SERVICE_ACCOUNT,
# deprecated configuration options
+1 -1
View File
@@ -50,7 +50,7 @@ CONFIG_SCHEMA = probatio.Schema(
{
probatio.Optional(DOMAIN): probatio.Schema(
{
probatio.Required(CONF_KEY): probatio.Any(
probatio.Required(probatio.Secret(CONF_KEY)): probatio.Any(
{cv.string: cv.string}, cv.string
)
}
@@ -859,7 +859,7 @@ class MideaConfigFlow(ConfigFlow, domain=DOMAIN):
default=(self.found_device.get(CONF_TOKEN) or ""),
): str,
probatio.Optional(
CONF_KEY,
probatio.Secret(CONF_KEY),
default=(self.found_device.get(CONF_KEY) or ""),
): str,
},
+1 -1
View File
@@ -4026,7 +4026,7 @@ OTHER_SETTINGS_SCHEMA = probatio.Schema(
probatio.Optional(CONF_KEEPALIVE): KEEPALIVE_SELECTOR,
probatio.Required(SET_CLIENT_CERT): BOOLEAN_SELECTOR,
probatio.Optional(CONF_CLIENT_CERT): CERT_UPLOAD_SELECTOR,
probatio.Optional(CONF_CLIENT_KEY): CERT_KEY_UPLOAD_SELECTOR,
probatio.Optional(probatio.Secret(CONF_CLIENT_KEY)): CERT_KEY_UPLOAD_SELECTOR,
probatio.Optional(probatio.Secret(CONF_CLIENT_KEY_PASSWORD)): PASSWORD_SELECTOR,
probatio.Required(SET_CA_CERT): BROKER_VERIFICATION_SELECTOR,
probatio.Optional(CONF_CERTIFICATE): CA_CERT_UPLOAD_SELECTOR,
@@ -230,7 +230,9 @@ class OpenDisplayConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="encryption_key",
data_schema=probatio.Schema({probatio.Required(CONF_ENCRYPTION_KEY): str}),
data_schema=probatio.Schema(
{probatio.Required(probatio.Secret(CONF_ENCRYPTION_KEY)): str}
),
description_placeholders={"name": name},
errors=errors,
)
@@ -276,7 +278,11 @@ class OpenDisplayConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="reauth_confirm",
data_schema=probatio.Schema(
{probatio.Optional(CONF_ENCRYPTION_KEY, default=""): str}
{
probatio.Optional(
probatio.Secret(CONF_ENCRYPTION_KEY), default=""
): str
}
),
description_placeholders={"name": reauth_entry.title},
errors=errors,
@@ -20,7 +20,7 @@ _LOGGER = logging.getLogger(__name__)
STEP_USER_DATA_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_DEVICE_KEY): str,
probatio.Required(probatio.Secret(CONF_DEVICE_KEY)): str,
probatio.Required(CONF_HOST, default="http://"): str,
probatio.Optional(CONF_PORT, default=DEFAULT_PORT): int,
probatio.Optional(CONF_VERIFY_SSL, default=False): bool,
@@ -18,7 +18,7 @@ USER_SCHEMA = probatio.Schema(
# pylint: disable-next=home-assistant-config-flow-name-field
probatio.Optional(CONF_NAME, default=DEFAULT_NAME): str,
probatio.Required(probatio.Secret(CONF_API_KEY)): str,
probatio.Required(probatio.Secret(CONF_USER_KEY)): str,
probatio.Required(CONF_USER_KEY): str,
}
)
+1 -1
View File
@@ -54,7 +54,7 @@ ATTR_PICTURE1_PASSWORD = "password"
ATTR_PICTURE1_AUTH = "auth"
PLATFORM_SCHEMA = NOTIFY_PLATFORM_SCHEMA.extend(
{probatio.Required(CONF_DEVICE_KEY): cv.string}
{probatio.Required(probatio.Secret(CONF_DEVICE_KEY)): cv.string}
)
@@ -51,7 +51,7 @@ CONNECTION_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_HOST): str,
probatio.Required(CONF_PORT, default=DEFAULT_PORT): probatio.Port(),
probatio.Optional(CONF_ENCRYPTION_KEY): selector.TextSelector(
probatio.Optional(probatio.Secret(CONF_ENCRYPTION_KEY)): selector.TextSelector(
selector.TextSelectorConfig(type=selector.TextSelectorType.PASSWORD)
),
}
+2 -2
View File
@@ -38,7 +38,7 @@ HUB_SCHEMA = probatio.Schema(
probatio.Required(CONF_PORT): int,
probatio.Optional(CONF_PROTOCOL, default="TCP"): probatio.In(["TCP", "UDP"]),
probatio.Required(CONF_ACCOUNT): str,
probatio.Optional(CONF_ENCRYPTION_KEY): str,
probatio.Optional(probatio.Secret(CONF_ENCRYPTION_KEY)): str,
probatio.Required(CONF_PING_INTERVAL, default=1): int,
probatio.Required(CONF_ZONES, default=1): int,
probatio.Optional(CONF_ADDITIONAL_ACCOUNTS, default=False): bool,
@@ -48,7 +48,7 @@ HUB_SCHEMA = probatio.Schema(
ACCOUNT_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_ACCOUNT): str,
probatio.Optional(CONF_ENCRYPTION_KEY): str,
probatio.Optional(probatio.Secret(CONF_ENCRYPTION_KEY)): str,
probatio.Required(CONF_PING_INTERVAL, default=1): int,
probatio.Required(CONF_ZONES, default=1): int,
probatio.Optional(CONF_ADDITIONAL_ACCOUNTS, default=False): bool,
@@ -67,7 +67,7 @@ class SimplePushFlowHandler(ConfigFlow, domain=DOMAIN):
step_id="user",
data_schema=probatio.Schema(
{
probatio.Required(CONF_DEVICE_KEY): str,
probatio.Required(probatio.Secret(CONF_DEVICE_KEY)): str,
# Name field is no longer allowed in config flow schemas
# pylint: disable-next=home-assistant-config-flow-name-field
probatio.Required(CONF_NAME, default=DEFAULT_NAME): str,
@@ -28,7 +28,7 @@ DOCUMENTATION_URL = (
STEP_USER_SCHEMA = probatio.Schema(
{
probatio.Required(CONF_AUTH_CODE): cv.string,
probatio.Required(probatio.Secret(CONF_AUTH_CODE)): cv.string,
}
)
@@ -299,7 +299,9 @@ class SpecializedTurboConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="manual_key",
data_schema=probatio.Schema({probatio.Required(CONF_WRAPPED_KEY): str}),
data_schema=probatio.Schema(
{probatio.Required(probatio.Secret(CONF_WRAPPED_KEY)): str}
),
errors=errors,
)
@@ -311,7 +311,7 @@ class SwitchbotConfigFlow(ConfigFlow, domain=DOMAIN):
data_schema=probatio.Schema(
{
probatio.Required(CONF_KEY_ID): str,
probatio.Required(CONF_ENCRYPTION_KEY): str,
probatio.Required(probatio.Secret(CONF_ENCRYPTION_KEY)): str,
}
),
description_placeholders={
+1 -1
View File
@@ -35,7 +35,7 @@ DEFAULT_SSL = False
PLATFORM_SCHEMA = CAMERA_PLATFORM_SCHEMA.extend(
{
probatio.Required(CONF_NVR): cv.string,
probatio.Required(CONF_KEY): cv.string,
probatio.Required(probatio.Secret(CONF_KEY)): cv.string,
probatio.Optional(
probatio.Secret(CONF_PASSWORD), default=DEFAULT_PASSWORD
): cv.string,
@@ -39,7 +39,9 @@ CONFIG_HOST = {
GATEWAY_CONFIG_HOST = GATEWAY_CONFIG.extend(CONFIG_HOST)
GATEWAY_SETTINGS = probatio.Schema(
{
probatio.Optional(CONF_KEY): probatio.All(str, probatio.Length(min=16, max=16)),
probatio.Optional(probatio.Secret(CONF_KEY)): probatio.All(
str, probatio.Length(min=16, max=16)
),
# Name field is no longer allowed in config flow schemas
# pylint: disable-next=home-assistant-config-flow-name-field
probatio.Optional(CONF_NAME, default=DEFAULT_GATEWAY_NAME): str,
@@ -229,7 +229,10 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="reauth_validate",
data_schema=probatio.Schema(
{probatio.Required(CONF_KEY): str, probatio.Required(CONF_SLOT): int}
{
probatio.Required(probatio.Secret(CONF_KEY)): str,
probatio.Required(CONF_SLOT): int,
}
),
description_placeholders={
"address": reauth_entry.data[CONF_ADDRESS],
@@ -280,7 +283,7 @@ class YalexsConfigFlow(ConfigFlow, domain=DOMAIN):
step_id="key_slot",
data_schema=probatio.Schema(
{
probatio.Required(CONF_KEY): str,
probatio.Required(probatio.Secret(CONF_KEY)): str,
probatio.Required(CONF_SLOT): int,
}
),