Qithub-BOT / QiiCipher

✅ GitHub の SSH 公開鍵でファイルを暗号化およびローカルの秘密鍵で復号・署名・検証するスクリプトのリポジトリです。
https://qiita.com/KEINOS/items/2abce1e5b15d799ac6d7
Creative Commons Attribution Share Alike 4.0 International
4 stars 3 forks source link

sign コマンドで失敗時に `*.sig` ファイルを削除する #41

Closed yoshi389111 closed 3 years ago

yoshi389111 commented 3 years ago

現象

sign コマンドで失敗した場合にも *.sig ファイルが作成されてしまう (終了ステータスコードは正しく失敗扱いとなっている)

参考:

調査と対策方法

現状のソースでは、署名ファイルを標準出力に出力し、リダイレクトでファイルに保存している。 リダイレクトしているため必ずファイルが生成されている可能性があると思われるため、別の方法を検証する。 具体的には -out 署名ファイル で実行して署名失敗した場合に、署名ファイルが出力されるか確認する。

$ echo test > test
$ openssl dgst -sha1 -sign dummy-private-key -out test.sig test
Can't open dummy-private-key for reading, No such file or directory
140161001227584:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:69:fopen('dummy-private-key','r')
140161001227584:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:76:
unable to load key file
$ ls
test  test.sig
$ 

調査の結果、出力先を -out 署名ファイル で指定して署名に失敗した場合でも、リダイレクトの場合と同様に署名ファイルが出力されることがわかった。 そのため署名ファイルの出力方法は現状通り(リダイレクト)で、署名失敗時にファイルを削除する方法で対策をする。

手順

KEINOS commented 3 years ago

ファイルよ!あばよ! nhk_lgtm