Signature XAdES détachée

Afficher en Markdown

Exemples de requête provisionnée

XAdES détachée

L’application demandeuse initie une demande de signature :

POST /api/requests HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
Content-Type: application/json
Content-Length: 150
{
"params" : {
"signerEmail" : "john.doe@my-idp.com"
},
"profiles" : {
"default" : {
"signatureType" : "xadesDetached"
}
}
}

Un objet demande est renvoyé, puis l’application demandeuse téléverse le contenu du document (un PDF) :

POST /api/requests/req_01_EkjMu7hm6EpCb4arVkwz6NUV/profiles/default/documents HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
Content-Disposition: attachment; filename="document.pdf"
Content-Type: application/pdf
%PDF-1.3
%[contenu binaire du fichier PDF]

Un objet document est renvoyé, avec cette fois une policyUri pointant vers la politique de signature CAdES/XAdES détachée de la Banque de France. L’application demandeuse démarre ensuite la demande :

POST /api/requests/req_01_EkjMu7hm6EpCb4arVkwz6NUV/start HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5

Une fois la signature terminée, la liste des documents signés contient à présent deux parties distinctes : le document PDF d’origine (isOriginal: true) et un fichier signature.xml séparé contenant la signature XAdES détachée qui référence le PDF par son nom de fichier :

GET /api/requests/req_01_EkjMu7hm6EpCb4arVkwz6NUV/signedDocuments HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
[ {
"created" : 1787667780630,
"displayedParts" : [ {
"contentType" : "application/pdf",
"filename" : "document.pdf",
"hash" : "obcUcumzUOJsClVDv/jHTNefKTRlTJULnZx4dfOrx+I=",
"isOriginal" : true,
"profileId" : "default",
"size" : 12341
}, {
"contentType" : "text/xml",
"filename" : "signature.xml",
"hash" : "B/FtOYiHGC3lGV/USI/7QawkARNbbTEAO8XXVJDLpTw=",
"isOriginal" : false,
"profileId" : "default",
"size" : 26658
} ],
"id" : "doc_Hq1UEeBgSUuUR4RfbbCHGJAt",
"linkedDocumentId" : "doc_Hsg9B2t1rbu2sYTsRc5FgTpi",
"profileId" : "default",
"requestId" : "req_01_EkjMu7hm6EpCb4arVkwz6NUV",
"workflowIdx" : 0
} ]

Le téléchargement du document signé renvoie le fichier signature.xml : une signature XAdES détachée (ds:Signature) qui référence document.pdf par son URI, avec sa politique de signature (celle de la Banque de France), sa chaîne de certificats et son horodatage :

GET /api/requests/req_01_EkjMu7hm6EpCb4arVkwz6NUV/signedDocuments/doc_Hq1UEeBgSUuUR4RfbbCHGJAt HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
<?xml version="1.0" encoding="UTF-8"?><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="id-0b8c10a6cd1887edcef327f8e2053f7a">
<ds:SignedInfo>
...
<ds:Reference Id="id-0b8c10a6cd1887edcef327f8e2053f7a-1" URI="document.pdf">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>obcUcumzUOJsClVDv/jHTNefKTRlTJULnZx4dfOrx+I=</ds:DigestValue>
</ds:Reference>
...
</ds:SignedInfo>
<ds:SignatureValue Id="value-id-0b8c10a6cd1887edcef327f8e2053f7a">[valeur de signature encodée, tronquée]</ds:SignatureValue>
<ds:KeyInfo>...</ds:KeyInfo>
<ds:Object>
<xad:QualifyingProperties xmlns:xad="http://uri.etsi.org/01903/v1.3.2#" Target="#id-0b8c10a6cd1887edcef327f8e2053f7a">
...
</xad:QualifyingProperties>
</ds:Object>
</ds:Signature>