mirror of
https://github.com/Yubico/yubioath-flutter.git
synced 2024-11-22 00:12:09 +03:00
Merge PR #1646
This commit is contained in:
commit
496087f27f
@ -500,6 +500,7 @@
|
||||
}
|
||||
},
|
||||
"@_fingerprints": {},
|
||||
"s_biometrics": null,
|
||||
"l_fingerprint": "Fingerabdruck: {label}",
|
||||
"@l_fingerprint": {
|
||||
"placeholders": {
|
||||
@ -660,6 +661,7 @@
|
||||
"s_allow_fingerprint": null,
|
||||
"p_cert_options_desc": "Verwendeter Schlüssel-Algorithmus, Ausgabeformat und Ablaufdatum (nur Zertifikat).",
|
||||
"p_cert_options_bio_desc": null,
|
||||
"p_key_options_bio_desc": null,
|
||||
"s_overwrite_slot": "Slot überschreiben",
|
||||
"p_overwrite_slot_desc": "Damit wird vorhandener Inhalt im Slot {slot} dauerhaft überschrieben.",
|
||||
"@p_overwrite_slot_desc": {
|
||||
|
@ -500,6 +500,7 @@
|
||||
}
|
||||
},
|
||||
"@_fingerprints": {},
|
||||
"s_biometrics": "Biometrics",
|
||||
"l_fingerprint": "Fingerprint: {label}",
|
||||
"@l_fingerprint": {
|
||||
"placeholders": {
|
||||
@ -660,6 +661,7 @@
|
||||
"s_allow_fingerprint": "Allow fingerprint",
|
||||
"p_cert_options_desc": "Key algorithm to use, output format, and expiration date (certificate only).",
|
||||
"p_cert_options_bio_desc": "Key algorithm to use, output format, expiration date (certificate only), and if biometrics can be used instead of PIN.",
|
||||
"p_key_options_bio_desc": "Allow biometrics to be used instead of PIN.",
|
||||
"s_overwrite_slot": "Overwrite slot",
|
||||
"p_overwrite_slot_desc": "This will permanently overwrite existing content in slot {slot}.",
|
||||
"@p_overwrite_slot_desc": {
|
||||
|
@ -500,6 +500,7 @@
|
||||
}
|
||||
},
|
||||
"@_fingerprints": {},
|
||||
"s_biometrics": null,
|
||||
"l_fingerprint": "Empreinte digitale\u00a0: {label}",
|
||||
"@l_fingerprint": {
|
||||
"placeholders": {
|
||||
@ -660,6 +661,7 @@
|
||||
"s_allow_fingerprint": null,
|
||||
"p_cert_options_desc": "Algorithme clé à utiliser, format de sortie et date d'expiration (certificat uniquement).",
|
||||
"p_cert_options_bio_desc": null,
|
||||
"p_key_options_bio_desc": null,
|
||||
"s_overwrite_slot": "Écraser slot",
|
||||
"p_overwrite_slot_desc": "Cela écrasera définitivement le contenu du slot {slot}.",
|
||||
"@p_overwrite_slot_desc": {
|
||||
|
@ -500,6 +500,7 @@
|
||||
}
|
||||
},
|
||||
"@_fingerprints": {},
|
||||
"s_biometrics": null,
|
||||
"l_fingerprint": "指紋:{label}",
|
||||
"@l_fingerprint": {
|
||||
"placeholders": {
|
||||
@ -660,6 +661,7 @@
|
||||
"s_allow_fingerprint": null,
|
||||
"p_cert_options_desc": "使用する鍵アルゴリズム、出力形式、および有効期限(証明書のみ)。",
|
||||
"p_cert_options_bio_desc": null,
|
||||
"p_key_options_bio_desc": null,
|
||||
"s_overwrite_slot": "スロットを上書き",
|
||||
"p_overwrite_slot_desc": "これにより、スロット{slot}内の既存コンテンツが完全に上書きされます。",
|
||||
"@p_overwrite_slot_desc": {
|
||||
|
@ -500,6 +500,7 @@
|
||||
}
|
||||
},
|
||||
"@_fingerprints": {},
|
||||
"s_biometrics": null,
|
||||
"l_fingerprint": "Odcisk palca: {label}",
|
||||
"@l_fingerprint": {
|
||||
"placeholders": {
|
||||
@ -660,6 +661,7 @@
|
||||
"s_allow_fingerprint": null,
|
||||
"p_cert_options_desc": "Algorytm klucza do użycia, format wyjściowy i data wygaśnięcia (tylko certyfikat).",
|
||||
"p_cert_options_bio_desc": null,
|
||||
"p_key_options_bio_desc": null,
|
||||
"s_overwrite_slot": "Nadpisz slot",
|
||||
"p_overwrite_slot_desc": "Spowoduje to trwałe nadpisanie istniejącej zawartości w slocie {slot}.",
|
||||
"@p_overwrite_slot_desc": {
|
||||
|
@ -99,6 +99,7 @@ const appListItem95 = Key('$_prefix.95.applistitem');
|
||||
|
||||
// SlotMetadata body keys
|
||||
const slotMetadataKeyType = Key('$_prefix.slotMetadata.keyType');
|
||||
const slotMetadataBiometrics = Key('$_prefix.slotMetadata.biometrics');
|
||||
|
||||
// CertInfo body keys
|
||||
const certInfoKeyType = Key('$_prefix.certInfo.keyType');
|
||||
|
@ -28,9 +28,10 @@ class CertInfoTable extends ConsumerWidget {
|
||||
final CertInfo? certInfo;
|
||||
final SlotMetadata? metadata;
|
||||
final bool alwaysIncludePrivate;
|
||||
final bool supportsBio;
|
||||
|
||||
const CertInfoTable(this.certInfo, this.metadata,
|
||||
{super.key, this.alwaysIncludePrivate = false});
|
||||
{super.key, this.alwaysIncludePrivate = false, this.supportsBio = false});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
@ -46,6 +47,16 @@ class CertInfoTable extends ConsumerWidget {
|
||||
metadata.keyType.getDisplayName(l10n),
|
||||
keys.slotMetadataKeyType
|
||||
),
|
||||
if (metadata != null &&
|
||||
metadata.pinPolicy != PinPolicy.never &&
|
||||
supportsBio)
|
||||
l10n.s_biometrics: (
|
||||
[PinPolicy.matchAlways, PinPolicy.matchOnce]
|
||||
.contains(metadata.pinPolicy)
|
||||
? l10n.s_enabled
|
||||
: l10n.s_disabled,
|
||||
keys.slotMetadataBiometrics
|
||||
),
|
||||
if (metadata == null && alwaysIncludePrivate)
|
||||
l10n.s_private_key: (l10n.s_none, keys.slotMetadataKeyType),
|
||||
if (certInfo != null) ...{
|
||||
|
@ -249,11 +249,13 @@ class _GenerateKeyDialogState extends ConsumerState<GenerateKeyDialog> {
|
||||
FilterChip(
|
||||
label: Text(l10n.s_allow_fingerprint),
|
||||
selected: _allowMatch,
|
||||
onSelected: (value) {
|
||||
setState(() {
|
||||
_allowMatch = value;
|
||||
});
|
||||
},
|
||||
onSelected: _generating
|
||||
? null
|
||||
: (value) {
|
||||
setState(() {
|
||||
_allowMatch = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
]),
|
||||
Padding(
|
||||
|
@ -292,16 +292,6 @@ class _ImportFileDialogState extends ConsumerState<ImportFileDialog> {
|
||||
),
|
||||
],
|
||||
),
|
||||
if (!unsupportedKey && widget.showMatch)
|
||||
FilterChip(
|
||||
label: Text(l10n.s_allow_fingerprint),
|
||||
selected: _allowMatch,
|
||||
onSelected: (value) {
|
||||
setState(() {
|
||||
_allowMatch = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
if (certInfo != null) ...[
|
||||
Text(
|
||||
@ -315,7 +305,25 @@ class _ImportFileDialogState extends ConsumerState<ImportFileDialog> {
|
||||
140, // Needed for layout, adapt if text sizes changes
|
||||
child: CertInfoTable(certInfo, null),
|
||||
),
|
||||
]
|
||||
],
|
||||
if (keyType != null && !unsupportedKey && widget.showMatch) ...[
|
||||
Text(
|
||||
l10n.s_options,
|
||||
style: textTheme.bodyLarge,
|
||||
),
|
||||
Text(l10n.p_key_options_bio_desc),
|
||||
FilterChip(
|
||||
label: Text(l10n.s_allow_fingerprint),
|
||||
selected: _allowMatch,
|
||||
onSelected: _importing
|
||||
? null
|
||||
: (value) {
|
||||
setState(() {
|
||||
_allowMatch = value;
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
]
|
||||
.map((e) => Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||
|
@ -158,6 +158,7 @@ class _PivScreenState extends ConsumerState<PivScreen> {
|
||||
selected.metadata,
|
||||
alwaysIncludePrivate:
|
||||
pivState.supportsMetadata,
|
||||
supportsBio: pivState.supportsBio,
|
||||
),
|
||||
if (selected.certInfo == null)
|
||||
const SizedBox(height: 16)
|
||||
|
@ -98,6 +98,7 @@ class SlotDialog extends ConsumerWidget {
|
||||
certInfo,
|
||||
metadata,
|
||||
alwaysIncludePrivate: pivState.supportsMetadata,
|
||||
supportsBio: pivState.supportsBio,
|
||||
),
|
||||
if (certInfo == null) const SizedBox(height: 16),
|
||||
],
|
||||
|
Loading…
Reference in New Issue
Block a user