Skip to main content

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:

  1. 実行する:

    pkcs11-tool --module <path to pkcs11.dll or pkcs11.so> --list-objects
  2. 鍵ペアのIDフィールドを特定します。これはPKCS11の鍵IDです。