Skip to content

Commit e8fd5bf

Browse files
authored
Merge pull request #18 from LibreCodeCoop/feat/artifact-exception-handling
fix(xml): preserve UTF-8 declaration in signed DPS output
2 parents fae567e + d504b73 commit e8fd5bf

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/Xml/DpsSigner.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,12 @@ private function signXml(string $xml, string $privateKeyPem, string $certificate
271271
$keyInfo->appendChild($x509Data);
272272
$sig->appendChild($keyInfo);
273273

274-
return $doc->saveXML() ?: $xml;
274+
$serializedDocument = $doc->saveXML($doc->documentElement);
275+
276+
if ($serializedDocument === false || $serializedDocument === '') {
277+
return $xml;
278+
}
279+
280+
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" . $serializedDocument;
275281
}
276282
}

tests/Unit/Xml/DpsSignerTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,13 @@ public function testSignedXmlIsStillValidXml(): void
122122
self::assertTrue($doc->loadXML($signed), 'Signed output must be valid XML');
123123
}
124124

125+
public function testSignedXmlIncludesExplicitUtf8EncodingDeclaration(): void
126+
{
127+
$signed = $this->signer->sign($this->testXml, $this->testCnpj);
128+
129+
self::assertStringStartsWith('<?xml version="1.0" encoding="UTF-8"?>', $signed);
130+
}
131+
125132
public function testSignatureElementIsAppendedToDpsRoot(): void
126133
{
127134
$signed = $this->signer->sign($this->testXml, $this->testCnpj);

0 commit comments

Comments
 (0)