Aller au contenu principal
S'applique à :
OpenSC pkcs11-toolBibliothèque PKCS#11 de DuoKeyLinux / Windows

Prérequis​

Prérequis

  • OpenSC pkcs11-tool installé
  • Bibliothèque PKCS#11 de DuoKey compilée (libdke_pkcs11.so ou dke_pkcs11.dll)
  • Un fichier pkcs11.toml (chemin dans DKE_PKCS11_CONF) ou des variables DKE_PKCS11_* configurées (voir Vue d'ensemble → Configuration)
Remarque
La valeur du PIN (par exemple 1234) peut être n'importe quelle valeur car elle n'est pas actuellement validée par la bibliothèque. Elle est requise par la syntaxe de pkcs11-tool mais ignorée par la bibliothèque DuoKey.

Informations générales​

Afficher les informations du token​

pkcs11-tool --module ./libdke_pkcs11.so --list-token-slots

Lister les mécanismes pris en charge​

pkcs11-tool --module ./libdke_pkcs11.so --list-mechanisms

Lister les objets et les clés​

Lister tous les objets​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so --list-objects

Lister une clé spécifique par label​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--label "test-key-RSA-2048"

Filtrer par type de clé​

# List public keys only
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--type pubkey

# List by key type (e.g., AES)
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--key-type "AES"
Attention
Le filtre --key-type est défectueux (ne fonctionne pas) dans la version 0.26 de pkcs11-tool.

Exporter les clés publiques​

Seules les clés publiques peuvent être exportées. Les clés privées restent protégées dans le backend du Cockpit.

Exporter une clé publique RSA​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--read-object \
--type pubkey \
--label "test-key-RSA-2048" \
--output-file test-key-RSA-2048.pubkey

Exporter une clé publique ECC​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--read-object \
--type pubkey \
--label "test-key-ECC-256" \
--output-file test-key-ECC-256.pubkey

Chiffrement et déchiffrement​

Important
Pour les opérations de chiffrement/déchiffrement, pkcs11-tool ne prend en charge la recherche de clé que par ID (pas par label). Utilisez la commande --list-objects ci-dessus pour découvrir l'ID de clé à utiliser.

Chiffrement / déchiffrement RSA​

# Encrypt
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file plaintext.txt \
--output-file encrypted.txt

# Decrypt
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file encrypted.txt \
--output-file plaintext-2.txt

Chiffrement / déchiffrement AES-GCM​

# Encrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes.txt

# Decrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes.txt \
--output-file plaintext-2-aes.txt

Chiffrement / déchiffrement AES-CBC-PAD​

# Encrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes-cbc.txt

# Decrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes-cbc.txt \
--output-file plaintext-2-aes-cbc.txt

Gestion des objets​

Les objets sont créés par les commandes de génération de clé ci-dessous ou découverts avec --list-objects. La création d'un objet de données avec --write-object n'est pas prise en charge (C_CreateObject).

Supprimer une clé​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--delete-object \
--type secrkey \
--label 'test-pkcs11-generated-key-aes-1'
Non pris en charge

La création d'objets (--write-object), la copie d'objets et la modification d'attributs ne sont pas prises en charge. Voir Couverture des fonctions.

Génération de clés​

Générer une paire de clés RSA​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--keypairgen \
--label 'test-pkcs11-generated-key-rsa' \
--key-type RSA:2048

Générer une clé AES​

pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--keygen \
--label 'test-pkcs11-generated-key-aes-1' \
--key-type AES:256

Mises en garde​

La signature / vérification et l'encapsulation / désencapsulation sont prises en charge (pour les clés RSA / EC ; elles ne s'appliquent pas aux clés maîtres Oracle TDE, qui sont AES uniquement). Les véritables mises en garde sont :

ÉlémentRemarque
Création d'objet (--write-object)Non prise en charge (C_CreateObject / C_CopyObject / C_SetAttributeValue).
Opérations multi-partiesSeules les opérations single-part de chiffrement / déchiffrement / signature / vérification / digest sont prises en charge.
Dérivation de cléNon prise en charge (C_DeriveKey).
Digest SHA-1CKM_SHA_1 est annoncé mais rejeté par le backend — utilisez SHA-256 / 384 / 512.
Filtre --key-typeDéfectueux dans pkcs11-tool 0.26 (un bug de pkcs11-tool, pas de la bibliothèque).