EdDSA アルゴリズム署名をサポートするツール
はじめに
EdDSA アルゴリズムは、市販のコードサイニングツールではあまり広くサポートされていません。ここでは、以下のコマンドで動作することが確認されているツールについて説明します。
EdDSA をサポートするツール
表 1. EdDSA をサポートするツール
Windows | Linux |
---|---|
pkcs11-tool | p11importcert |
p11req | |
p11tool |
WindowsとLinuxのコマンド
Windows
鍵ペアを生成する
コマンド:
pkcs11-tool --module <path to smpkcs11.dll> --keypairgen --key-type="<key type>" --label <alias>
コマンドの例
pkcs11-tool --module C:\Users\Name\Desktop\smctl\smpkcs11.dll --keypairgen --key-type="EC:edwards25519" --label eddsa-key-19101
鍵ペアを使用して署名する
コマンド:
pkcs11-tool --module <path to smpkcs11.dll> --sign --id <PKCS11 key ID> --mechanism EDDSA --input-file <unsigned file name> --output-file <signature file name>
コマンドの例:
pkcs11-tool --module C:\Users\Name\Desktop\smctl\smpkcs11.dll --sign --id 35396437316330372d303639362d346335642d626566632d616563376463343865386466 --mechanism EDDSA --input-file client_sign_config.json --output-file client_sign_config_signed.json
証明書をインポートする
コマンド:
pkcs11-tool --module <path to smpkcs11.dll> --write-object <path to certificate> --type cert --id <certificate alias>
コマンドの例:
pkcs11-tool --module C:\Users\Name\Desktop\smctl\smpkcs11.dll --write-object C:\Users\Name\Desktop\smctl\linux\eddsa-18209-cert.crt --type cert --id eddsa-key-18209
Linux
Pkcs11-tool を使用して鍵ペアを生成する
コマンド:
pkcs11-tool --module <path to smpkcs11.so> --keypairgen --key-type="<key algorithm and curve>" --label <keypair alias>
コマンドの例:
pkcs11-tool --module /mnt/c/Users/Name/Desktop/smctl/linux/smpkcs11.so --keypairgen --key-type="EC:edwards25519" --label eddsa-key-19101
P11tool を使用して鍵ペアを生成する
コマンド:
p11tool --provider <path to smpkcs11.so> --generate-privkey=<algorithm and curve> --label=<keypair alias>
コマンドの例:
p11tool --provider /mnt/c/Users/Name/Desktop/smctl/linux/smpkcs11.so --generate-privkey=ed25519 --label=eddsa-key-18204
CSRを生成する
コマンド:
p11req -l <path to smpkcs11.so> -i <keypair alias> -d '/CN=<common name of certificate>/OU=<organizational unit of certificate>/C=<country code>' -H <hash algorithm type>
コマンドの例:
p11req -l /mnt/c/Users/Name/Desktop/smctl/linux/smpkcs11.so -i eddsa-key1 -d '/CN=test/OU=my dept/C=BE' -H sha512
pkcs11-tool で鍵ペアを使用して署名する
コマンド:
pkcs11-tool --module <path to smpkcs11.dll> --sign --id <PKCS11 key ID> --mechanism EDDSA --input-file <unsigned file name> --output-file <signature file name>
コマンドの例:
pkcs11-tool --module /mnt/c/Users/Name/Desktop/smctl/linux/smpkcs11.so --sign --id 35396437316330372d303639362d346335642d626566632d616563376463343865386466 --mechanism EDDSA --input-file client_sign_config.json --output-file client_sign_config_signed.json
証明書をインポートする
コマンド:
p11importcert -l <path to smpkcs11.so> -i <keypair alias> -f <path to certificate> -s 0
コマンドの例:
p11importcert -l /mnt/c/Users/Name/Desktop/smctl/linux/smpkcs11.so -i eddsa-key-18209 -f /mnt/c/Users/Name/Desktop/smctl/linux/eddsa-18209-cert.crt -s 0
鍵ペアをインポートする
コマンド:
p11tool --login --write --load-privkey <path to private key> --label "<keypair alias>" --provider <path to smpkcs11.so>
コマンドの例:
p11tool --login --write --load-privkey /mnt/c/Users/Name/Desktop/smctl/linux/privatekey.pem --label "eddsa-key-imported1" --provider /mnt/c/Users/Name/Desktop/smctl/linux/smpkcs11.so
ヒント
To locate PKCS11 key ID:
実行する:
pkcs11-tool --module <path to pkcs11.dll or pkcs11.so> --list-objects
鍵ペアのIDフィールドを特定します。これはPKCS11の鍵IDです。