Merge branch 'soru/fix-input-recovery-key' into 'main'

fix(ssss): Strip all whitespace characters from recovery keys upon decode

See merge request famedly/company/frontend/famedlysdk!921
This commit is contained in:
Krille Fear 2021-12-05 15:53:10 +00:00
commit 86f99bdef5
2 changed files with 5 additions and 2 deletions

View File

@ -121,7 +121,7 @@ class SSSS {
} }
static Uint8List decodeRecoveryKey(String recoveryKey) { static Uint8List decodeRecoveryKey(String recoveryKey) {
final result = base58.decode(recoveryKey.replaceAll(' ', '')); final result = base58.decode(recoveryKey.replaceAll(RegExp(r'\s'), ''));
final parity = result.fold<int>(0, (a, b) => a ^ b); final parity = result.fold<int>(0, (a, b) => a ^ b);
if (parity != 0) { if (parity != 0) {

View File

@ -126,7 +126,10 @@ void main() {
if (!olmEnabled) return; if (!olmEnabled) return;
final key = Uint8List.fromList(secureRandomBytes(32)); final key = Uint8List.fromList(secureRandomBytes(32));
final encoded = SSSS.encodeRecoveryKey(key); final encoded = SSSS.encodeRecoveryKey(key);
final decoded = SSSS.decodeRecoveryKey(encoded); var decoded = SSSS.decodeRecoveryKey(encoded);
expect(key, decoded);
decoded = SSSS.decodeRecoveryKey(encoded + ' \n\t');
expect(key, decoded); expect(key, decoded);
final handle = client.encryption!.ssss.open(); final handle = client.encryption!.ssss.open();