Personal Security Manager 1.0API Javascript pour Client Certificate Management |
Ce document décrit une nouvelle interface API JavaScript pour les opérations de gestion de certificats utilisateur dans un client. JavaScript s'exécute dans le contexte d'une page web gérée par une autorité de certification (AC) ou autorité d'enregistrement (AE). L'interface API permet à l'AC ou l'AE d'indiquer au client d'effectuer des opérations PKI telles que la génération de clés, la création de demandes de certificat, le dépôt de clés sous conditions, l'importation de certificats utilisateur, la récupération de clés et les demandes de révocation.
Ces propriétés et méthodes reflètent le comportement actuel de Personal Security Manager 1.0.
Les messages importés ou générés par ces méthodes JavaScript sont définis dans les projets Internet CRMF, CMMF, et CMC.
keySizes est un tableau décrivant les tailles de clés disponibles pour les opérations et algorithmes particuliers.
Le tableau suivant décrit les tailles de clés prises en charge dans les versions américaine et internationale de Communicator.
Algorithme | Tailles de clés de la version américaine | Tailles de clés de la version internationale |
Signature DSA uniquement | 1024, 2048 | 1024, 2048 |
Signature RSA uniquement | 1024, 2048 | 1024, 2048 |
Chiffrement RSA uniquement | 1024, 2048 | 512,1024 |
Double utilisation de RSA pour la signature et le chiffrement | 1024, 2048 | 512,1024 |
Echange de clés DH | 1024, 2048 | 512,1024 |
Cette méthode génèrera une séquence de requêtes CRMF avec N requêtes. Une requête correspond à chaque biclé générée. Les trois premiers paramètres seront appliqués à chaque requête. Le paramètre "escrowAuthorityCert" ne sera utilisé que pour les requêtes relatives à une clé entiercée. Après le paramètre "escrowAuthorityCert", la méthode utilise du code JavaScript exécuté une fois la requête CRMF prête. Enfin, il existe un ou plusieurs ensembles d'arguments de génération de clés. Chaque génération de clés sera associée à sa propre requête. Toutes les requêtes auront le même DN.
Argument | Description |
"requestedDN" | DN formaté RFC1485 à inclure dans la demande de certificat. |
"regToken" | Valeur utilisée pour authentifier l'utilisateur auprès de l'AC/AE. |
"authenticator" | Valeur permettant d'authentifier l'utilisateur à l'avenir en cas de non-disponibilité de sa clé privée. Peut être utilisée pour les demandes de révocation ou de récupération de clé. |
"escrowAuthorityCert" | Si cette valeur est égale à NULL, aucun dépôt de clé ne sera effectué. Cete valeur spécifie le certificat KRA à utiliser pour associer la clé privée entiercée. L'utilisateur sera invité à confirmer à chaque entiercement d'une clé. Seules les clés d'échange seront entiercées. Si une clé à double utilisation est générée, elle ne sera pas entiercée. La valeur de cet argument est un certificat encodé base-64. |
"CRMF Generation Done Code" | Ce paramètre est un code JavaScript à exécuter une fois la génération CRMF terminée. |
keySizeN | Taille en bits de la Nème clé à générer |
"keyParamsN" | Cette chaîne est une valeur de paramètre facultative dépendant de l'algorithme. Pour Diffie-Hellman, elle est utilisée pour spécifier les paramètres p et g. Pour DSA, elle permet de spécifier pqg. Si la génération de clé nécessite des paramètres et que la valeur transmise est égale à NULL, le client génèrera les paramètres lui-même. Cette valeur est actuellement ignorée. |
"keyGenAlgN" | Algorithme pris en charge par la clé générée. Les valeurs acceptables sont les suivantes (les valeurs mentionnées pour keyUsage concernent la valeur keyUsage de l'extension de certificat finalement comprise dans le certificat émis) :
|
La méthode generateCRMFRequest() présentera une boîte de dialogue de génération de clé à l'utilisateur. Elle décrit le processus de génération de clé et permet à l'utilisateur d'annuler l'opération.
La méthode generateCRMFRequest() renverra une instance d'un objet CRMF. Le code JavaScript transmis comme paramètre "CRMF Generation Done Code" doit se baser sur l'attribut requête de l'objet renvoyé pour obtenir les résultats de la génération CRMF.
La chaîne trouvée en accédant à crmfObject.request est le message CRMF encodé base-64 à envoyer à l'AC/AE ou une chaîne d'erreur. Les chaînes d'erreur possibles sont les suivantes :
Chaîne d'erreur | Description |
"error:invalidParameter:XXX" | La valeur du paramètre XXX n'était pas valide. |
"error:userCancel" | L'utilisateur a annulé l'opération de génération de clé |
"error:internalError" | Le logiciel a rencontré une erreur interne, comme une insuffisance de mémoire |
Argument | Description |
"chaînePseudonyme" | Pseudonyme utilisé pour décrire le certificat dans l'interface de gestion de certificats du client. Il doit servir d'identification unique du certificat à l'utilisateur. Par exemple, "ID numérique VeriSign de classe 3 de Jean Dupont" ou "Certificat ID Ford de Jean Dupont". Toutefois, si ce certificat a le même DN qu'un ou plusieurs certificats existants du répertoire de certificats de l'utilisateur, le pseudonyme associé aux certificats ayant le même DN dans le répertoire de certificats est utilisé et le paramètre "chaînePseudonyme" ignoré. Si la chaîne est nulle et qu'aucun certificat avec le même DN n'existe dans le répertoire de certificats de l'utilisateur, Personal Security Manager attribue le pseudonyme comme suit :<Nom commun> <Nom de l'émetteur> ID. |
"chaîneRépCert" | Cette chaîne est la réponse de certification CMMF de l'AC contenant les certificats de l'utilisateur. La réponse est encodée base-64. |
allowBackup | Argument booléen. Il permet à l'AC ou à l'AE d'indiquer au client s'il doit forcer l'utilisateur à sauvegarder un certificat nouvellement émis (PKCS #12). |
La méthode importUserCertificates() permet d'importer les certificats nouvellement émis pour l'utilisateur. La clé privée des certificats doit déjà résider dans la base de données de clés privées personnelles de l'utilisateur.
L'ID de requête de la réponse importée doit correspondre à celle de la demande de certification ou de récupération associée.
Si l'opération d'importation réussit, une chaîne vide sera renvoyée. Dans le cas contraire, l'une des chaînes d'erreur suivantes s'affiche :
Chaîne d'erreur | Description |
"error:userCancel" | L'utilisateur a annulé l'opération d'importation |
"error:invalidCertificate" | L'un des certificats a été incorrectement formaté |
"error:internalError" | Le logiciel a rencontré une erreur interne, comme une insuffisance de mémoire |
"error:invalidRequestID" | L'ID de requête du message de réponse ne correspond à aucune requête en cours |
Argument | Description |
"chaîneDemandeAccès" | Message POPODecKeyChallContent CMMF encodé base-64. La mise en œuvre actuelle n'est pas conforme à celle définie dans le projet CMMF et nous avons l'intention de la remplacer par celle définie dans le RFC CMC.Voir ci-dessous pour la mise en œuvre actuelle. |
La chaîne resultString sera un message POPODecKeyRespContent encodé base-64 ou l'une des chaînes d'erreur suivantes :
Chaîne d'erreur | Description |
"error:invalidParameter:XXX" | La valeur du paramètre XXX n'était pas valide. |
"error:internalError" | Le logiciel a rencontré une erreur interne, comme une insuffisance de mémoire |
Preuve de possession - réponse à la demande d'accès
Résultats prévus :
POPODecKeyChallContent ::= SEQUENCE OF Challenge
-- Une demande d'accès par demande de certification de clé de chiffrement (dans
-- l'ordre d'apparition de ces demandes dans FullCertTemplates).
Challenge ::= SEQUENCE {
owf AlgorithmIdentifier OPTIONAL,
-- DOIT être présent dans la première tentative d'accès ; PEUT être omis
-- dans les tentatives ultérieures de POPODecKeyChallContent(le cas échéant,
-- la fonction unidirectionnelle utilisée dans la tentative immédiatement précédente
-- doit être utilisée).
witness OCTET STRING,
-- le résultat de l'application d'une fonction unidirectionnelle (owf) à un
-- ENTIER généré de manière aléatoire, A. [Notez qu'un
-- ENTIER différent DOIT être utilisé pour chaque tentative d'accès.]
sender GeneralName,
-- nom de l'expéditeur.
key OCTET STRING,
-- clé publique utilisée pour chiffrer la tentative d'accès. Elle permet au
-- client de trouver la clé appropriée pour le chiffrement.
challenge OCTET STRING
-- chiffrement (à l'aide de la clé publique sur laquelle porte
-- la demande de cert.) de Rand, où Rand est spécifié comme
-- Rand ::= SEQUENCE{
-- int INTEGER,
-- - l'ENTIER généré de manière aléatoire A (ci-dessus)
-- senderHash OCTET STRING
-- - le résultat de l'application de la fonction unidirectionnelle (owf)
-- - au nom général de l'expéditeur
-- }
-- La taille de "int" doit être suffisamment réduite pour que "Rand" puisse être
-- contenu dans un seul bloc de chiffrement PKCS #1.
}
© Copyright 1999 Netscape Communications Corporation