Secure Exchanges SDK Documentation
Search Results for

    Show / Hide Table of Contents

    Architecture du SDK

    Ce document presente l'architecture et les concepts fondamentaux du Secure Exchanges SDK.

    Vue d'ensemble

    +---------------------+     +------------------------+
    |   Votre Application |     |    Secure Exchanges    |
    |                     |     |        Cloud           |
    |  +---------------+  |     |  +------------------+  |
    |  | SecureExch.   |  | <=> |  |   API REST/SOAP  |  |
    |  | SDK           |  |     |  +------------------+  |
    |  | (Chiffrement  |  |     |  +------------------+  |
    |  |  cote client) |  |     |  |   Stockage       |  |
    |  +---------------+  |     |  |   (Donnees       |  |
    |  | Signature SDK |  |     |  |    chiffrees     |  |
    |  +---------------+  |     |  |    uniquement)   |  |
    +---------------------+     |  +------------------+  |
                                +------------------------+
    

    Principes de securite

    Architecture Zero-Knowledge

    IMPORTANT : Secure Exchanges n'a JAMAIS acces aux cles de chiffrement ni au contenu de vos messages.

    Le SDK implemente une architecture "Zero-Knowledge" :

    • Le chiffrement s'effectue cote client (dans le SDK, sur votre serveur)
    • Les cles ne quittent jamais votre environnement en clair
    • Secure Exchanges stocke uniquement des donnees deja chiffrees
    • Seuls l'expediteur et le destinataire peuvent dechiffrer le contenu
    +------------------+                      +------------------+
    |    EXPEDITEUR    |                      |   DESTINATAIRE   |
    |                  |                      |                  |
    | 1. Genere cle AES|                      |                  |
    | 2. Chiffre msg   |   Donnees chiffrees  | 5. Recoit cle    |
    | 3. Chiffre cle   | ===================> |    chiffree      |
    |    pour destinat.|   (illisibles pour   | 6. Dechiffre cle |
    | 4. Envoie        |    Secure Exchanges) | 7. Dechiffre msg |
    +------------------+                      +------------------+
                                  |
                        +------------------+
                        | SECURE EXCHANGES |
                        |                  |
                        | Stocke UNIQUEMENT|
                        | des donnees      |
                        | chiffrees        |
                        | (ne peut pas les |
                        | lire)            |
                        +------------------+
    

    Chiffrement de bout en bout (E2E)

    Le SDK utilise un systeme de chiffrement hybride :

    1. AES-256 pour le chiffrement des donnees (symetrique) - genere cote client
    2. RSA pour l'echange securise des cles (asymetrique)
    3. SHA-512 pour la verification d'integrite
    // Exemple : Generation de cles AES (cote client uniquement)
    var keys = CryptoHelper.GenerateAESKeys();
    // keys.Key : Cle AES 256 bits (reste sur votre serveur)
    // keys.IV  : Vecteur d'initialisation 128 bits
    

    Flux de chiffrement d'un message

    COTE CLIENT (Votre application)
    ================================
    1. Generation cles AES (expediteur) --> Cle generee localement
            |
            v
    2. Chiffrement du message avec AES --> Message chiffre localement
            |
            v
    3. Chiffrement de la cle AES avec RSA (cle publique destinataire)
    
    TRANSIT VERS SECURE EXCHANGES
    ================================
    4. Envoi : {message_chiffre, cle_AES_chiffree}
       --> Secure Exchanges recoit UNIQUEMENT des donnees chiffrees
       --> Secure Exchanges ne possede PAS la cle privee pour dechiffrer
    
    COTE DESTINATAIRE
    ================================
    5. Dechiffrement cle AES avec RSA (cle privee destinataire)
            |
            v
    6. Dechiffrement message avec AES --> Message lisible uniquement par le destinataire
    

    Structure des namespaces

    SecureExchangesSDK

    SecureExchangesSDK
    ├── Helpers/                    # Classes principales d'operation
    │   ├── MessageHelper          # Envoi/reception de messages
    │   ├── CryptoHelper           # Operations cryptographiques
    │   ├── SignHelper             # Signatures numeriques
    │   ├── LicenceHelper          # Gestion des licences
    │   ├── MessengingHelper       # Workflows SESAR
    │   ├── LogsHelper             # Journalisation
    │   ├── FileHelper             # Operations fichiers
    │   ├── ContactHelper          # Gestion contacts
    │   ├── EmailHelper            # Validation emails
    │   ├── PhoneHelper            # Validation telephones
    │   └── SerializationHelper    # JSON/XML
    │
    ├── Models/
    │   ├── Args/                  # Parametres d'entree (56 classes)
    │   │   ├── MutliRecipientArgs
    │   │   ├── GetMessageArgs
    │   │   ├── GetEnveloppeArgs
    │   │   └── ...
    │   │
    │   ├── Answer/                # Reponses (24 classes)
    │   │   ├── BaseAnswer
    │   │   ├── MultiRecipientAnswer
    │   │   ├── GetMessageResponse
    │   │   └── ...
    │   │
    │   ├── Entity/                # Entites metier (31 classes)
    │   │   ├── RecipientInfo
    │   │   ├── FileArgs
    │   │   ├── Licence
    │   │   └── ...
    │   │
    │   ├── Transport/             # DTOs (46 classes)
    │   │   ├── SecureExchangesMessage
    │   │   ├── Keys
    │   │   ├── FileMetaData
    │   │   └── ...
    │   │
    │   └── Contract/              # Interfaces (14 interfaces)
    │       ├── IEndPointConfiguration
    │       └── ...
    │
    └── CallBack/                  # Callbacks asynchrones
        ├── ISecureExchangesCallBack
        └── CallBackObject
    

    SecureExchangesSignatureSDK

    SecureExchangesSignatureSDK
    ├── Helpers/
    │   └── PkiFileHelper          # Certification PDF avec PKI
    │
    └── Models/
        ├── Args/
        │   └── CertifyPdfArgs     # Parametres de certification
        ├── Transport/
        │   └── ZoneDetails        # Details des zones de signature
        └── Factory/
            └── ZoneDetailsFactory # Creation de zones
    

    Classes principales

    MessageHelper

    Point d'entree principal pour l'envoi et la reception de messages.

    public static class MessageHelper
    {
        // Envoyer a plusieurs destinataires
        public static MultiRecipientAnswer MultiRecipientMessage(MutliRecipientArgs args);
    
        // Recuperer un message
        public static GetMessageResponse GetMessage(GetMessageArgs args);
    
        // Creer une enveloppe de reponse
        public static GetEnveloppeResponse GetEnveloppe(GetEnveloppeArgs args);
    
        // Parser un lien Secure Exchanges
        public static SecureExchangesMessage GetSecureExchangesMessageFromLink(string link);
    }
    

    CryptoHelper

    Operations cryptographiques centralisees.

    public static class CryptoHelper
    {
        // Generation de cles
        public static Keys GenerateAESKeys();
        public static byte[] GenerateSecureRandomByteArray(int length);
    
        // Chiffrement/Dechiffrement
        public static byte[] EncryptBinary(byte[] data, byte[] key, byte[] iv);
        public static byte[] DecryptBinary(byte[] data, byte[] key, byte[] iv);
    
        // Chiffrement fichiers
        public static bool EncryptSecfFile(string path, byte[] key, byte[] iv);
        public static bool DecryptSecfFile(string path, byte[] key, byte[] iv);
    
        // Hachage
        public static string GetSHA512OfFile(string path);
        public static string GetSHA512HashOfBytes(byte[] data);
        public static string GetMD5HashOfFile(string path);
    
        // RSA
        public static byte[] EncryptRSAContent(string xmlPublicKey, string content);
        public static string DecryptRSAContentToString(string xmlPrivateKey, byte[] data, bool useOAEP);
    }
    

    SignHelper

    Gestion des zones de signature electronique et validation de l'integrite des documents.

    public static class SignHelper
    {
        // Helpers de creation de zones
        public static SignZoneDetails CreateSignatureZone(string fieldName, int page,
            float x, float y, float width, float height,
            float pageWidth, float pageHeight, bool required = true);
    
        public static SignZoneDetails CreateTextZone(string fieldName, int page,
            float x, float y, float width, float height,
            float pageWidth, float pageHeight,
            string defaultValue = "", float fontSize = 12, bool required = true);
    
        public static SignZoneDetails CreateDateZone(string fieldName, int page,
            float x, float y, float width, float height,
            float pageWidth, float pageHeight,
            string dateFormat = "yyyy-MM-dd", bool required = true);
    
        public static SignZoneDetails CreateCheckboxZone(string fieldName, int page,
            float x, float y, float size,
            float pageWidth, float pageHeight,
            bool isChecked = false, bool required = false);
    
        public static SignZoneDetails CreateInitialsZone(string fieldName, int page,
            float x, float y, float width, float height,
            float pageWidth, float pageHeight, bool required = true);
    
        // Conversion de templates de zones
        public static Dictionary<RecipientInfo, List<FileZoneDefinition>> AddFileZoneDefToRecipientIndex(
            Dictionary<RecipientInfo, List<FileZoneDefinition>> recipientIndex,
            IEnumerable<SignTemplateRecipient> templateZones,
            string SHA512,
            params KeyValuePair<string, RecipientInfo>[] recipientsMatch);
    
        // Gestion des zones par destinataire
        public static List<RecipientZoneDefinition> ConvertRecipientIndexToList(
            Dictionary<RecipientInfo, List<FileZoneDefinition>> recipientIndex);
        public static List<RecipientZoneDefinition> ConcatRecipientZoneDefinitionLists(
            List<RecipientZoneDefinition> list1, List<RecipientZoneDefinition> list2);
    
        // Validation de document
        public static ValidateDocumentSignatureIntegrityResponse ValidateDocumentSignatureIntegrity(
            ValidateDocumentSignatureIntegrity_args args);
    
        // Token de certification PKI
        public static GetCertificationTokenResponse GetCertificationToken(
            GetCertificationTokenSDKArgs args, CertificationMetadata metadata = null);
    }
    

    Modeles de donnees cles

    MutliRecipientArgs

    Arguments pour l'envoi de messages multi-destinataires.

    var args = new MutliRecipientArgs(
        endPointConfigurationName,  // Configuration endpoint
        serial,                     // Numero de serie licence
        apiUser,                    // Identifiant API
        apiPassword,                // Mot de passe API
        recipients,                 // Liste RecipientInfo
        message,                    // Corps du message (HTML)
        subject,                    // Sujet
        password,                   // Mot de passe (optionnel)
        binaryFiles,                // Fichiers en memoire
        sendMethod,                 // Email, SMS, ou hybride
        sendByMyOwnSMTPServer,      // Utiliser SMTP propre
        showSubject,                // Afficher le sujet
        getNotify,                  // Notification a l'ouverture
        culture,                    // fr-CA ou en-CA
        maxOpeningTime,             // Nombre max d'ouvertures
        expirationMinutes           // Duree de validite
    );
    
    // Proprietes additionnelles
    args.FilesPath = new List<string>();     // Chemins de fichiers
    args.FileToSign = new List<SignFilesRequired>();  // Fichiers a signer
    args.CallBackParameters = "...";          // Parametres callback
    

    MultiRecipientAnswer

    Reponse apres envoi de message.

    public class MultiRecipientAnswer : BaseAnswer
    {
        public int Status { get; set; }           // Code statut (200 = succes)
        public string Data { get; set; }          // Message d'erreur si echec
        public List<RecipientAnswer> RecipientsAnswer { get; set; }
    }
    
    public class RecipientAnswer
    {
        public SendMessageAnswer Answer { get; set; }
    }
    
    public class SendMessageAnswer
    {
        public int Status { get; set; }
        public string URL { get; set; }           // Lien du message
        public string HtmlMsg { get; set; }       // HTML de notification
        public string DefaultOpeningCode { get; set; }  // Code d'ouverture
    }
    

    Flux de travail typiques

    Envoi simple

    Application -> MutliRecipientArgs -> MessageHelper.MultiRecipientMessage()
                                                |
                                                v
                                        MultiRecipientAnswer
                                                |
                                                v
                                        URL du message
    

    Envoi avec signature

    1. Preparer fichiers PDF
            |
            v
    2. Creer zones de signature avec SignHelper
            |
            v
    3. Configurer MutliRecipientArgs avec FileToSign
            |
            v
    4. Envoyer avec MessageHelper.MultiRecipientMessage()
            |
            v
    5. Destinataire signe via interface web
            |
            v
    6. Recuperer document signe via callback ou API
    

    Workflow SESAR (Messenging)

    1. InitializeSesar() - Initialiser la session
            |
            v
    2. CreateRestoreRequest() - Creer demande de restauration
            |
            v
    3. GetMessenging() - Recuperer les messages
            |
            v
    4. Traiter les callbacks chiffres
    

    Configuration de l'endpoint

    // Utilisation de l'environnement de production
    Uri endpoint = new Uri("https://www.secure-exchanges.com/_api/0217/0217.asmx");
    
    var args = new MutliRecipientArgs(endpoint, serial, apiUser, apiPassword, ...);
    

    Voir aussi

    • Guide de demarrage
    • Envoi de messages
    • Chiffrement
    • Signatures electroniques
    In this article
    Back to top Secure Exchanges Inc. - Documentation