pkcs11-tool-usage
pkcs11-tool を使用したテスト
OpenSC pkcs11-tool を使用して DuoKey PKCS#11 ライブラリをテストするための包括的なガイド
適用対象:
OpenSC pkcs11-toolDuoKey PKCS#11 LibraryLinux / Windows
前提条件
前提条件
- OpenSC pkcs11-tool がインストールされていること
- DuoKey PKCS#11 ライブラリがコンパイルされていること(cockpitPKCS11client.so または cockpitPKCS11client.dll)
- 環境変数が構成されていること(実装に関する注記を参照)
注記
PIN 値(例:
1234)は、現在ライブラリによって検証されないため、任意の値を使用できます。pkcs11-tool の構文では必須ですが、DuoKey ライブラリでは無視されます。一般情報
トークン情報の表示
pkcs11-tool --module ./cockpitPKCS11client.so --list-token-slots
サポートされているメカニズムの一覧表示
pkcs11-tool --module ./cockpitPKCS11client.so --list-mechanisms
オブジェクトと鍵の一覧表示
すべてのオブジェクトの一覧表示
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so --list-objects
ラベルによる特定の鍵の一覧表示
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--list-objects \
--label "test-key-RSA-2048"
鍵タイプによるフィルタリング
# List public keys only
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--list-objects \
--type pubkey
# List by key type (e.g., AES)
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--list-objects \
--key-type "AES"
注意
--key-type フィルタは pkcs11-tool バージョン 0.26 では壊れています(機能しません)。公開鍵のエクスポート
エクスポートできるのは公開鍵のみです。秘密鍵は Cockpit バックエンド内で保護されたままになります。
RSA 公開鍵のエクスポート
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--read-object \
--type pubkey \
--label "test-key-RSA-2048" \
--output-file test-key-RSA-2048.pubkey
ECC 公開鍵のエクスポート
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--read-object \
--type pubkey \
--label "test-key-ECC-256" \
--output-file test-key-ECC-256.pubkey
暗号化と復号
重要
暗号化/復号操作の場合、pkcs11-tool は ID による鍵の検索のみをサポートします(ラベルによる検索はサポートしません)。上記の
--list-objects コマンドを使用して、使用する鍵 ID を確認してください。RSA 暗号化 / 復号
# Encrypt
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.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 ./cockpitPKCS11client.so \
--decrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file encrypted.txt \
--output-file plaintext-2.txt
AES-GCM 暗号化 / 復号
# Encrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.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 ./cockpitPKCS11client.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
AES-CBC-PAD 暗号化 / 復号
# Encrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.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 ./cockpitPKCS11client.so \
--decrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes-cbc.txt \
--output-file plaintext-2-aes-cbc.txt
オブジェクト管理
オブジェクトの作成、読み取り、削除
# Create an object
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--write-object test-data.txt \
--label 'test-data-1' \
--type data
# Read back the object
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--read-object \
--label 'test-data-1' \
--type data
# Delete the object
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--delete-object \
--label 'test-data-1' \
--type data
鍵生成
RSA 鍵ペアの生成
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--keypairgen \
--label 'test-pkcs11-generated-key-rsa' \
--key-type RSA:2048
AES 鍵の生成
pkcs11-tool -l --pin 1234 --module ./cockpitPKCS11client.so \
--keygen \
--label 'test-pkcs11-generated-key-aes-1' \
--key-type AES:256
pkcs11-tool に関する現在の制限
| 操作 | ステータス |
|---|---|
| 署名 / 検証 | 基盤となる SDK ではサポートされていない |
| ラップ / アンラップ | まだ実装されていない |