import 'dart:convert'; import 'package:friendly_map/modules/core/core.dart'; /// 시험용 암호: 진짜 암호는 아니고, "두 사람의 키 + 단위 ID 가 맞아야 풀린다"는 약속만 흉내 낸다. class FakeCipher implements PayloadCipher { FakeCipher(this.myKey); final String myKey; String _tag(String peer, String context) => '${([myKey, peer]..sort()).join('+')}|$context'; @override Future seal({required String plain, required String peerPublicKey, required String context}) async => '${_tag(peerPublicKey, context)}|${base64Encode(utf8.encode(plain))}'; @override Future open({required String sealed, required String peerPublicKey, required String context}) async { final tag = _tag(peerPublicKey, context); if (!sealed.startsWith('$tag|')) return null; return utf8.decode(base64Decode(sealed.substring(tag.length + 1))); } } class FakeIdentity implements IdentityProvider { FakeIdentity(this.key); final String key; @override Future myPublicKey() async => key; }