590710c27c27
test: consume shared Vault V4 long-password vector (v2.15.3)
- time
- 2026-09-05 13:01 UTC · 1 month ago
- machine
- koh2
- agent
- gpt-6
- session
- Vault V4 password and passphrase support
- parent
- 82a4e7b3b85b
↓ peach-android-590710c2.tar.gzatlas at this save
files changed3 files
VERSION+1 −1app/src/test/java/com/peachpasswords/vault/PeachScriptTest.kt+14 −0app/src/test/resources/fixtures/golden/peach-payload-v4.json+13 −0app/src/test/java/com/peachpasswords/vault/PeachScriptTest.kt+14 −0
@@ -14,6 +14,20 @@1414 1515 class PeachScriptTest {1616 17+ @Test fun parses_shared_v4_long_password_vector() {18+ val vector = Json.parseToJsonElement(19+ checkNotNull(javaClass.classLoader?.getResource("fixtures/golden/peach-payload-v4.json")).readText(),20+ ).jsonObject21+ val passwords = vector.getValue("passwords").jsonObject22+ val envelope = Base64.getDecoder().decode(vector.getValue("envelopeBase64").jsonPrimitive.content)23+ val entries = PeachPayloadCodec.parsePayload(envelope, vector.getValue("passphrase").jsonPrimitive.content)24+25+ assertEquals(passwords.getValue("ascii").jsonPrimitive.content, entries[0].password)26+ assertEquals(passwords.getValue("unicode").jsonPrimitive.content, entries[1].password)27+ assertEquals(256, entries[0].password?.length)28+ assertEquals(256, entries[1].password?.length)29+ }30+1731 private fun login() = VaultEntry(1832 id = "11111111-2222-3333-4444-555555555555", type = "login", title = "GitHub",1933 url = "https://github.com", username = "june", email = "[email protected]",app/src/test/resources/fixtures/golden/peach-payload-v4.json+13 −0
@@ -0,0 +1,13 @@1+{2+ "format": 4,3+ "passphrase": "cross-platform-v4",4+ "passwords": {5+ "ascii": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",6+ "unicode": "界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界界"7+ },8+ "entryIds": [9+ "123e4567-e89b-42d3-a456-426614174001",10+ "123e4567-e89b-42d3-a456-426614174002"11+ ],12+ "envelopeBase64": "N5j5qjYXq/lg0PIE1Gy2rnYpqn42juHbqYb3u0zoYFIynUEHLSCW2VbIDD8CObJR8FfSGV1xHIfKn/Kdp7QQx5+YQKKSlOrQ0xN3iOrh8wDsWudtp/ucwxrW49wTDMIyzV+yaIs2bDJ8cQT3+i+pAnXMei8PSa8WKM4HfscuXuYYyN3aJCB8/QyPD0eEqhiFHr3e4NOLluhjQ5ssKf6OClpAp5dZ8uZihDSaUzK8zX4C7MTM9N3MJyQAayrlYtkWWIv9Ba9h/GuNzbJAJMuS14wurz/PUQbi7pywIQdAlpHQdbuGM3IOoXwq5ylrIwvh/jezKWEIjt2FGnOdb/H09BV1b2jwEbXsJKbAG6AK/Pt8nvq3f6fZsgTfSbMOLDmgVM2GpnCqXJ4kcgz4S+PdqEi8x1p3CkEcLa/R4CmYI4M7N70n5KWhvjiiFvRWFJ+9H7rMujtBHJmM4oT5plVNQqXm6/NkTqYGUXXbItTvGH5DFvVXkt9e21TZdxneyOr6RCmcst/a255FKrHKIRLlhAYxJNMxVyzMMyXBB8tJeKM+344EcNYH57kQPvsZt1iBShYib/z/QZ8l9hG1jCg0bMwQsPNVGtJ1eOW+kdpweZMnXNMhGLksaQvVhObVP0codlgO5yg0xDvHWBxSej5p3nxBCjaSboadgQC7SXe/qVGXFGkOVXwJHPwsnzHkIY8seUCdu52Pp95t3ALK2rRDQNIIswmxnBkDZ6K1lVsFg3EovmJrkgdgbdAxQWmhFVx+qlKBAWohbMsjJQO3yegdF/Oax2cF+oGH/NnxTdeOhezJuz1HDOl3I9UzQQuNV37lWCEEK4gucaTAdr9o8pBFIPzIgmoygaVjLQAI9tZv8HLmdhkkKBd4KG09Cm6hR8gLBtS9V2jb0VwcACPCiPktx587qz5w4mX3msLp6U73tve+4mQtTo/z+VfFpzZTspsV3CeKKVgxMronNrzqXqm9B7RG20wOGLHFPeQizEy6Sqs3COpf60haumQg51B9ZXAZDo4eVNDV9+QeSESMR3+s4h0T2uEocqXT61auTYZHB5vDvNGXKt1prcPPFXuvfp8BDkyItGKBdLanMFmvtqw3gmd0kGfI7KkwlX5mFMgtdwYvXTXPty4zaurSDZ29r9t5/T9ydwVXKaKleYad/7ErTChutBPdgaM4TrCDkbocNMUyp8I4j0YpDDl2H4Pq/urftcUSBHz1IdekPY+PpilRybqAeR9xRY0HfNk3XVcuUJC9B1EHortXBAWMdA98jvncJaIEB51Jy7BAXyHlNtpkwNxMry4u60UO1f8bWVgb5eqJIUMBf3bh/gMDKLbBB3o38MQBEOHIYSckHARXJbUv3Vrv0DMotKeSVYtztw/92KeVzaDOZiisS1/jXg/g8SBERzfL0W3c4B5iu7Ac"13+}