sabre/vobject chooses the class of a property from its name: a base64 KEY or SOUND in vCard 2.1 or 3.0 (KEY;ENCODING=b;TYPE=PGP:…) is read as text, not as binary. Upstream fix: sabre-io/vobject#798.
When
Once sabre-io/vobject#798 is released, and we require that release (#4: the fix will most likely not be backported to 4.x).
Changes
src/VCard/Internal/Importer.php (resourceUri(), marked sabre/vobject workaround:): rely on $property->property instanceof Binary alone, and drop the detection of ENCODING=b/BASE64 with its own base64_decode().
Not covered upstream, so keep handling it if we meet it: the nameless BASE64 parameter of vCard 2.1 (KEY;BASE64:…).
VCardDecoderTest::testVersion3MediaAreEmbeddedOrTyped must keep passing unchanged.
🤖 Generated with Claude Code
sabre/vobject chooses the class of a property from its name: a base64
KEYorSOUNDin vCard 2.1 or 3.0 (KEY;ENCODING=b;TYPE=PGP:…) is read as text, not as binary. Upstream fix: sabre-io/vobject#798.When
Once sabre-io/vobject#798 is released, and we require that release (#4: the fix will most likely not be backported to 4.x).
Changes
src/VCard/Internal/Importer.php(resourceUri(), markedsabre/vobject workaround:): rely on$property->property instanceof Binaryalone, and drop the detection ofENCODING=b/BASE64with its ownbase64_decode().Not covered upstream, so keep handling it if we meet it: the nameless
BASE64parameter of vCard 2.1 (KEY;BASE64:…).VCardDecoderTest::testVersion3MediaAreEmbeddedOrTypedmust keep passing unchanged.🤖 Generated with Claude Code