Card Viewer Extended Technical Documentation/fr

De Trustedbird Client Wiki
Révision de 3 septembre 2010 à 14:55 par Rfairise (discussion | contributions) (Page créée avec « {{lang|Card Viewer Extended Technical Documentation|Card Viewer Extended Technical Documentation/fr}} > Documentation > [[Card_Viewer_Extended/fr|Module … »)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
English | Français

> Documentation > Module : Card Viewer Extended > Documentation technique


Architecture

Architecture

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.

Card viewer extended fr.gif 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().