Passer à la navigation

Signature Helios

Afficher en Markdown

Exemple de requête réalisant une signature Helios sur un document

Création de la requête provisionnée

L’application demandeuse initie une demande de signature :

POST /api/requests HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
Content-Type: application/json
Content-Length: 269
{
"profiles" : {
"default" : {
"signatureType" : "helios",
"signatureLevel" : "b",
"signerLocationCity" : "Troyes",
"signerLocationPostalCode" : "10000",
"signerLocationCountry" : "France",
"signerRoles" : "Finance"
}
}
}

Un objet demande est renvoyé :

{
"clientId" : "01",
"created" : 1787667778991,
"id" : "req_01_Pc7iJXX1HuADdDN8ZSkEnSkm",
"params" : {
"bypassViewer" : "false"
},
"profiles" : {
"default" : {
"forceScrollDocument" : "false",
"signatureLevel" : "b",
"signatureType" : "helios",
"signerLocationCity" : "Troyes",
"signerLocationCountry" : "France",
"signerLocationPostalCode" : "10000",
"signerRoles" : "Finance"
}
},
"status" : "created",
"updated" : 1787667778991
}

Téléversement du document à signer

L’application demandeuse téléverse le contenu du document (un fichier PES Helios au format XML, incluant une pièce jointe PDF encodée en base64) :

POST /api/requests/req_01_Pc7iJXX1HuADdDN8ZSkEnSkm/profiles/default/documents HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
Content-Type: text/xml
<?xml version="1.0" encoding="UTF-8"?><n:PES_Aller xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" ...>
<Enveloppe>
<Parametres>
<Version V="2"/>
<TypFic V="PESALR2"/>
<NomFic V="PESALR2M14_EMET_REC20090318102027.xml"/>
</Parametres>
...
</Enveloppe>
...
<PES_PJ>
<PJ>
<Contenu>
<Fichier MIMEType="pdf">[contenu du PDF encodé en base64, tronqué]</Fichier>
</Contenu>
<IdUnique V="PJDEP200002009MX3501N20090318102443"/>
<NomPJ V="MX-3501N_20090318_102443.pdf"/>
<TypePJ V="003"/>
<Description V="P.J. au mandat n 220 : MISSION SPS"/>
</PJ>
</PES_PJ>
</n:PES_Aller>

Un objet document est renvoyé :

{
"created" : 1787667779009,
"displayedParts" : [ {
"contentType" : "text/xml",
"filename" : "Document",
"hash" : "mn/7ykoyW2byuPsOPJH97JL9hG8pIf7f8f9z/ZZXy1A=",
"name" : "data",
"policyUri" : "https://www.collectivites-locales.gouv.fr/files/files/2.%20G%C3%A9rer%20les%20finances%20publiques%20locales/6.%20La%20d%C3%A9mat%C3%A9rialisation%20des%20comptes%20locaux%20et%20l%27open%20data/D%C3%A9mat%20comptable/Le%20PES/ps_helios_dgfip.pdf",
"profileId" : "default",
"size" : 22376
} ],
"id" : "doc_8xTuaXy8LZ6tMjv1hVgC5frs",
"parts" : [ {
"contentType" : "text/xml",
"filename" : "Document",
"hash" : "mn/7ykoyW2byuPsOPJH97JL9hG8pIf7f8f9z/ZZXy1A=",
"name" : "data",
"policyUri" : "https://www.collectivites-locales.gouv.fr/files/files/2.%20G%C3%A9rer%20les%20finances%20publiques%20locales/6.%20La%20d%C3%A9mat%C3%A9rialisation%20des%20comptes%20locaux%20et%20l%27open%20data/D%C3%A9mat%20comptable/Le%20PES/ps_helios_dgfip.pdf",
"profileId" : "default",
"size" : 22376
} ],
"profileId" : "default",
"requestId" : "req_01_Pc7iJXX1HuADdDN8ZSkEnSkm",
"workflowIdx" : 0
}

Lancement de la requête provisionnée

L’application demandeuse passe le statut de la demande de signature à started :

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

L’URL de la page de consentement est renvoyée :

{
"consentPageUrl" : "https://evidence-manager.lex-persona.com/?requestToken=eyJhbGciOiJIUzI1NiJ9...#requestId=req_01_Pc7iJXX1HuADdDN8ZSkEnSkm"
}

Récupération des documents signés et des preuves

L’application demandeuse liste les documents signés :

GET /api/requests/req_01_Pc7iJXX1HuADdDN8ZSkEnSkm/signedDocuments HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5

Une liste d’objets document est renvoyée (le document signé, lié au document d’origine par linkedDocumentId) :

[ {
"created" : 1787667779468,
"displayedParts" : [ {
"contentType" : "text/xml",
"filename" : "Document",
"hash" : "O9o2CSbzJR1UKiActnF+nJIhxC/fPO3QY2MqL5z0B5Q=",
"isOriginal" : false,
"name" : "data",
"policyUri" : "https://www.collectivites-locales.gouv.fr/files/files/2.%20G%C3%A9rer%20les%20finances%20publiques%20locales/6.%20La%20d%C3%A9mat%C3%A9rialisation%20des%20comptes%20locaux%20et%20l%27open%20data/D%C3%A9mat%20comptable/Le%20PES/ps_helios_dgfip.pdf",
"profileId" : "default",
"size" : 32843
} ],
"id" : "doc_DSmSHwZh2wY8xf7M6EyL7xDn",
"linkedDocumentId" : "doc_8xTuaXy8LZ6tMjv1hVgC5frs",
"parts" : [ {
"contentType" : "text/xml",
"filename" : "Document",
"hash" : "u/aPqFmitziAiMh/9fhg0Wij4lbcpjtvY1iZVGw3RnA=",
"isOriginal" : false,
"name" : "data",
"policyUri" : "https://www.collectivites-locales.gouv.fr/files/files/2.%20G%C3%A9rer%20les%20finances%20publiques%20locales/6.%20La%20d%C3%A9mat%C3%A9rialisation%20des%20comptes%20locaux%20et%20l%27open%20data/D%C3%A9mat%20comptable/Le%20PES/ps_helios_dgfip.pdf",
"profileId" : "default",
"size" : 32843
} ],
"profileId" : "default",
"requestId" : "req_01_Pc7iJXX1HuADdDN8ZSkEnSkm",
"workflowIdx" : 0
} ]

L’application demandeuse télécharge le document signé, qui contient le PES original ainsi qu’une signature XAdES scellant le document (élément ds:Signature, avec sa politique de signature Helios, sa chaîne de certificats et son horodatage) :

GET /api/requests/req_01_Pc7iJXX1HuADdDN8ZSkEnSkm/signedDocuments/doc_DSmSHwZh2wY8xf7M6EyL7xDn HTTP/1.1
Authorization: ApiKey 5xVpCQPEYdncwHXwCDf5sqyfN9GPrio5
<?xml version="1.0" encoding="UTF-8"?><n:PES_Aller xmlns:n="http://www.minefi.gouv.fr/cp/helios/pes_v2/Rev0/aller" ...>
<Enveloppe>
<Parametres>
<Version V="2"/>
<TypFic V="PESALR2"/>
<NomFic V="PESALR2M14_EMET_REC20090318102027.xml"/>
</Parametres>
...
</Enveloppe>
...
<PES_PJ>
<PJ>
<Contenu>
<Fichier MIMEType="pdf">[contenu du PDF encodé en base64, tronqué]</Fichier>
</Contenu>
<IdUnique V="PJDEP200002009MX3501N20090318102443"/>
<NomPJ V="MX-3501N_20090318_102443.pdf"/>
<TypePJ V="003"/>
<Description V="P.J. au mandat n 220 : MISSION SPS"/>
</PJ>
</PES_PJ>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="id-12ba34e1cf4a951c1c3f50e977dc2ebd">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference Id="r-id-12ba34e1cf4a951c1c3f50e977dc2ebd-1" URI="#IDF2009-03-18T10-20-33.40">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>MztJpkmvCp6+aHpE26154lOaopQ7/SRK+O2AT6zms6k=</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903/v1.2.2#SignedProperties" URI="#xades-id-12ba34e1cf4a951c1c3f50e977dc2ebd">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>vJUqs3XPsYPc3ecF0iOB9JK6DOa9fzMX3P8O+0htFtw=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="value-id-12ba34e1cf4a951c1c3f50e977dc2ebd">MQpvqFjaT9N/KKXpGxxTAOvNGAH3+ETn8zLBnWfMXADlo0/RiM7qsAXLUI55dBraYzbtZel0jlxoGiegN8tImtaCj8JLuJFv5aQdkavTdJJj9r9Ac1j1FM4u...</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIGVjCCBD6gAwIBAgIIJ/TRdsPRnnUwDQYJKoZIhvcNAQELBQAwgYMxKzApBgNVBAMMIlN1bm55c3RhbXAgTGVnYWwgUGVyc29ucyBDQSAoVEVTVCkxFzAV...</ds:X509Certificate>
<ds:X509Certificate>MIIHADCCBOigAwIBAgIIXZTNpYsvZKAwDQYJKoZIhvcNAQENBQAwdjEeMBwGA1UEAwwVU3VubnlzdGFtcCBSb290IENBIEcyMRcwFQYDVQQLDA4wMDAyIDQ4...</ds:X509Certificate>
<ds:X509Certificate>MIIF5DCCA8ygAwIBAgIIds3Y5/Vg0IYwDQYJKoZIhvcNAQELBQAwdjEeMBwGA1UEAwwVU3VubnlzdGFtcCBSb290IENBIEcyMRcwFQYDVQQLDA4wMDAyIDQ4...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
<xad:QualifyingProperties xmlns:xad="http://uri.etsi.org/01903/v1.2.2#" Target="#id-12ba34e1cf4a951c1c3f50e977dc2ebd">
<xad:SignedProperties Id="xades-id-12ba34e1cf4a951c1c3f50e977dc2ebd">
<xad:SignedSignatureProperties>
<xad:SigningTime>2026-09-15T10:27:38Z</xad:SigningTime>
<xad:SigningCertificate>
<xad:Cert>
<xad:CertDigest>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>7y96RSVU3QZjQB18ap56T8Qp9CfzutdvoI+yjAEhNU0=</ds:DigestValue>
</xad:CertDigest>
<xad:IssuerSerial>
<ds:X509IssuerName>C=FR,O=LEX PERSONA,2.5.4.97=#0c0f4e545246522d343830363232323537,OU=0002 480622257,CN=Sunnystamp Legal Persons CA (TEST)</ds:X509IssuerName>
<ds:X509SerialNumber>2879156369818230389</ds:X509SerialNumber>
</xad:IssuerSerial>
</xad:Cert>
</xad:SigningCertificate>
<xad:SignaturePolicyIdentifier>
<xad:SignaturePolicyId>
<xad:SigPolicyId>
<xad:Identifier Qualifier="OIDAsURN">urn:oid:1.2.250.1.131.1.5.18.21.1.7</xad:Identifier>
</xad:SigPolicyId>
<xad:SigPolicyHash>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>GbP1WjbTrHp6h9zlsz5RN7AqkJbnDNDOAQzgm1qzIJ4=</ds:DigestValue>
</xad:SigPolicyHash>
<xad:SigPolicyQualifiers>
<xad:SigPolicyQualifier>
<xad:SPURI>https://www.collectivites-locales.gouv.fr/files/files/2.%20G%C3%A9rer%20les%20finances%20publiques%20locales/6.%20La%20d%C3%A9mat%C3%A9rialisation%20des%20comptes%20locaux%20et%20l%27open%20data/D%C3%A9mat%20comptable/Le%20PES/ps_helios_dgfip.pdf</xad:SPURI>
</xad:SigPolicyQualifier>
</xad:SigPolicyQualifiers>
</xad:SignaturePolicyId>
</xad:SignaturePolicyIdentifier>
<xad:SignatureProductionPlace>
<xad:City>Troyes</xad:City>
<xad:PostalCode>10000</xad:PostalCode>
<xad:CountryName>France</xad:CountryName>
</xad:SignatureProductionPlace>
<xad:SignerRole>
<xad:ClaimedRoles>
<xad:ClaimedRole>Finance</xad:ClaimedRole>
</xad:ClaimedRoles>
</xad:SignerRole>
</xad:SignedSignatureProperties>
<xad:SignedDataObjectProperties>
<xad:DataObjectFormat ObjectReference="#r-id-12ba34e1cf4a951c1c3f50e977dc2ebd-1">
<xad:MimeType>text/xml</xad:MimeType>
</xad:DataObjectFormat>
</xad:SignedDataObjectProperties>
</xad:SignedProperties>
</xad:QualifyingProperties>
</ds:Object>
</ds:Signature>
</n:PES_Aller>