# Intégrité des données

## Vue d'ensemble

Les données d'encaissement font l'objet d'un traitement spécifique pour garantir leur intégrité au sein du système centralisé.

Les données d'encaissement sont signées numériquement à l'aide d'une clé asymétrique. Cette signature peut ensuite être vérifiée à l'aide de la clé publique correspondante.

## Signature des données

Les données signées sont les suivantes :

| Intitulé                                | Nom de la table physique    |
|-----------------------------------------|-----------------------------|
| Grand total périodique                  | Cash Register Period CCCAP  |
| Journal des événements techniques (JET) | Technical Log CCCAP         |
| Tickets de caisse / Grand total ticket  | Posted Receipt Header CCCAP |
| Duplicatas de tickets                   | Posted Receipt Copy CCCAP   |

Ces tables contiennent les données de toutes les caisses si votre système comporte plusieurs caisses.
Les signatures chaînent les enregistrements d'une même caisse. Un défaut d'intégrité sur le chaînage d'une caisse n'entraîne pas de défaut d'intégrité dans le chaînage des autres caisses.

Sur chaque enregistrement ci-dessus, deux signatures sont calculées :

* Une signature de l'enregistrement lui-même.
* Une signature du chaînage de l'enregistrement avec l'enregistrement précédent.
  Dans ce second cas, la signature est calculée sur la concaténation des champs de l'enregistrement et de la signature de l'enregistrement précédent.

Vous pouvez afficher les signatures des enregistrements en naviguant dans les données de caisse du système centralisé.

![Exemple d'affichage des signatures dans le JET](Images/user-guide-bc-data-integrity-0.png)

## Vérification des données

Vous pouvez à tout moment lancer un test d'intégrité des données.

Pour ce faire :

1. Choisissez ![](/public/svg/search-right.svg) et tapez **Caisses**.
2. Dans la liste des caisses, ouvrez la fiche de la caisse pour laquelle vous souhaitez vérifier l'intégrité.
3. Choisissez l'action **Vérifier l'intégrité**.

   L'opération peut prendre plusieurs minutes, voire plusieurs heures selon la quantité d'écritures de la caisse.

Si les données sont intègres, le message suivant s'affiche : _L'intégrité de la caisse XXX a été vérifiée avec succès._

> [!IMPORTANT]
> Tout défaut d'intégrité détecté fait l'objet d'un enregistrement dans le JET.

## Contrôle des signatures individuelles

Vous pouvez lire et contrôler les signatures électroniques des enregistrements de caisse au sein du système centralisé.
Dans les pages, du journal des événements techniques, la liste/fiche d'un ticket de caisse, dans la liste des duplicatas de tickets et dans les périodes quotidiennes/d'encaissement/comptables, vous pouvez afficher les signatures électroniques des enregistrements.

Pour ce faire :

1. Rendez-vous dans l'une des pages mentionnées ci-dessus.
2. Choisissez l'option **Personnaliser** dans le menu des paramètres.

   ![Personnaliser les pages](Images/user-guide-bc-data-integrity-1.png)

3. Dans la section des récapitulatifs, choisissez d'afficher celui nommé **Signatures**.

   ![Afficher le récapitulatif des signatures](Images/user-guide-bc-data-integrity-2.png)

Le texte de la signature est affiché en clair sous deux versions : la version propre à l'enregistrement et la version chaînée. Cette information n'est pas stockée dans le logiciel, elle est reconstruite à la volée.

![Afficher les signatures](Images/user-guide-bc-data-integrity-3.png)

Si vous souhaitez visualiser l'empreinte de la signature (c'est-à-dire sa version signée), vous devez choisir l'option **Afficher l'empreinte**.
L'empreinte est une version hachée de la signature et encodée en base64url. Elle est stockée dans la base de données au moment où l'enregistrement a été inséré et est intangible.

![Afficher l'empreinte des signatures](Images/user-guide-bc-data-integrity-4.png)

Lorsque vous activez l'affichage de l'empreinte, vous disposez de deux fonctions supplémentaires :

1. **Vérifier la signature** : cette fonction vous permet de vérifier que l'empreinte de l'enregistrement est conforme à la signature grâce à une fonction intégrée au logiciel.
2. **Obtenir un script PowerShell** : cette fonction vous permet d'obtenir un script PowerShell qui vous permet de vérifier la signature par vous-même en exécutant le code dans [PowerShell](https://learn.microsoft.com/fr-fr/powershell/scripting/overview). Ce script vous permet notamment de récupérer la clé publique ayant permis de signer l'enregistrement.

![Vérifier l'intégrité d'un enregistrement](Images/user-guide-bc-data-integrity-5.png)