fr.gif, 1 kB    en.gif, 1 kB

Architecture card viewer extended/fr

Dernière modification de cette page le 12 septembre 2007 à 09:57.

Un article de Milimail.

Sommaire

Documentation technique - Affichage du certificat pour un contact

Retour

Rappel des fonctionnalités

Cette extension permet d'afficher le certificat d'un contact. Ce certificat peut-être celui stocké en local ou bien celui présent dans l'annuaire LDAP. Dans les deux cas, la clé utilisée pour récupérer le certificat d'un contact est son adresse mail. Lorsqu'un certificat est trouvé dans l'annuaire LDAP, il est stocké en local pour pouvoir être utilisé ultérieurement. Par exemple, lors de l'envoi d'un message chiffré.


Implémentation

Normes

Aucune norme ne s'applique à cette extension.


Architecture

Présentation synthétique de l'architecture de l'extension

Cette fonctionnalité est développée sous la forme d'une extension Thunderbird.

Architecture

Le coeur de cette implémentation consiste à ajouter un bouton permettant l'affichage du certificat depuis la fiche d'un contact.


Les fichiers d'IHM

Au niveau de l'IHM seule la fiche contact est modifiée par overlay pour ajouter un bouton permettant l'affichage du certificat correspondant.

Image:card_viewer_extended_fr.gif Image:card_viewer_extended_certificat_fr.gif


Les fichiers XPCOM

Nous devons distinguer deux types de certificat : le certificat local, stocké au niveau du client, et le certificat distant, stocké au niveau LDAP. En effet, le mode de récupération du certificat est différent pour chacun de ces deux types. Dans tous les cas, la clé utilisée pour récupérer le certificat d'un contact est son adresse mail. La fiche d'un contact local ou distant est affichée en utilisant le même fichier XUL. Celui ci permet de gérer différemment les 2 cas : par exemple champs éditables ou non ... L'attribut LDAP interrogé pour récupérer un certificat est « userCertificate ». Cet attribut est une donnée binaire.

Certificat local

Le service nsIX509CertDB permet de récupérer un certificat local en utilisant une adresse mail comme clé par la méthode :

nsIX509Cert findCertByEmailAddress(nsISupports token , char* emailAddress)


Cet objet certificat doit ensuite être fourni au service nsICertificateDialogs qui se chargera entièrement de son affichage dans une fenêtre dédiée. Le code Javascript à mettre en oeuvre pourra être repris depuis le fichier existant pippki.js :

 const nsICertificateDialogs = Components.interfaces.nsICertificateDialogs;
 const nsCertificateDialogs = "@mozilla.org/nsCertificateDialogs;1"

 function viewCertHelper(parent, cert) {
  if (!cert) {
    return;
  }

  var cd = Components.classes[nsCertificateDialogs].getService(nsICertificateDialogs);
  cd.viewCert(parent, cert);
}


Il est préférable de dupliquer ce code dans le fichier abCardOverlay_overlay.js dédié afin de s'affranchir des évolutions du fichier pippki.js.

Certificat distant

Pour l'interrogation d'un annuaire LDAP, l'API XPCOM fournit une interface nsILDAPOperation et en particulier la méthode :


void searchExt( AUTF8String baseDn , PRInt32 scope , AUTF8String filter , PRUint32 attrCount , arrayof char* attributes , PRIntervalTime timeOut , PRInt32 sizeLimit )


L'attribut LDAP à interroger pour récupérer le certificat est « userCertificate ». Lors de l'interrogation, il est nécessaire d'utiliser la chaîne suivante « userCertificate;binary » pour spécifier que l'attribut est stocké sous forme binaire. Un exemple complet de récupération de certificat depuis un annuaire LDAP est disponible dans la librairie certFetchingStatus.js. L'interrogation du LDAP est contenue dans la méthode kickOffSearch() qui est un bon point d'entrée pour comprendre ce code. Le mécanisme d'interrogation d'un annuaire LDAP est également présent dans l'extension se chargeant de déterminer le format de message supporté par un destinataire.


Retour


Reference: English – Translations:  Français  • 


Téléchargement