Preserve data across the Straywild transition
This commit is contained in:
parent
737d1cf2e0
commit
98a27e2f53
28 changed files with 577 additions and 94 deletions
|
|
@ -4,6 +4,7 @@ extends Node
|
|||
signal operation_finished(success: bool, message: String)
|
||||
|
||||
const MAGIC := "straywild_IDENTITY_BACKUP"
|
||||
const LEGACY_MAGIC := "NETFISHING_IDENTITY_BACKUP"
|
||||
const FORMAT_VERSION := 1
|
||||
const MAX_BACKUP_BYTES := 256 * 1024
|
||||
const MIN_PASSPHRASE_LENGTH := 12
|
||||
|
|
@ -110,8 +111,9 @@ func inspect_backup(
|
|||
if json.parse(text) != OK or typeof(json.data) != TYPE_DICTIONARY:
|
||||
return {"ok": false}
|
||||
var data: Dictionary = json.data
|
||||
var legacy_backup: bool = data.get("magic") == LEGACY_MAGIC
|
||||
if (
|
||||
data.get("magic") != MAGIC
|
||||
data.get("magic") not in [MAGIC, LEGACY_MAGIC]
|
||||
or data.get("format_version") != FORMAT_VERSION
|
||||
or data.get("identity_type") != expected_type
|
||||
or data.get("algorithm") != NetworkIdentityCrypto.ALGORITHM
|
||||
|
|
@ -134,12 +136,23 @@ func inspect_backup(
|
|||
var signature: PackedByteArray = Marshalls.base64_to_raw(
|
||||
str(data.get("self_signature", ""))
|
||||
)
|
||||
if not NetworkIdentityCrypto.verify_fields(
|
||||
NetworkIdentityCrypto.load_public_key(public_pem),
|
||||
"identity_backup_self_test",
|
||||
[expected_type, fingerprint],
|
||||
signature,
|
||||
):
|
||||
var public_key: CryptoKey = NetworkIdentityCrypto.load_public_key(public_pem)
|
||||
var backup_signature_valid: bool = (
|
||||
NetworkIdentityCrypto.verify_legacy_fields(
|
||||
public_key,
|
||||
"identity_backup_self_test",
|
||||
[expected_type, fingerprint],
|
||||
signature,
|
||||
)
|
||||
if legacy_backup
|
||||
else NetworkIdentityCrypto.verify_fields(
|
||||
public_key,
|
||||
"identity_backup_self_test",
|
||||
[expected_type, fingerprint],
|
||||
signature,
|
||||
)
|
||||
)
|
||||
if not backup_signature_valid:
|
||||
return {"ok": false}
|
||||
var fresh: PackedByteArray = NetworkIdentityCrypto.sign_fields(
|
||||
key, "identity_import_self_test", [fingerprint]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue