私はバッチスクリプトの1つで発生したgpgエラーに対する変更を解釈する任務を引き受けました。現在指定されているファイルに対してgpg復号化を実行すると、2が返されます。問題は、フォームを検索するとファイルが正しく復号されたことを示していますが、エラーコードが原因でゼロが唯一の成功値であると仮定してスクリプトが停止することです。
gpg -o XXX --decrypt XXX.gpg
RETVAL=$?
if [ RETVAL -ne 0 ]; then
exit 1
fi
オンラインで検索してgpgのヘッダーリストを見つけました。エラー2を不明なパケットとして定義します。
表示される一般的なエラーテキストは[gpg:[不明]:無効なパケット(ctb = 14)]です。未知のパケットは正確に何を意味しますか?エラーコードの理解に関する文書を検索しようとしています。 [-vv]オプションを使用した後、すべての詳細を表示します。結果 gpg ファイルの復号化をゼロコードを返すファイルと比較しました。私が気づいた唯一のことは、キーのバイトが異なることです。
エラーのないgpg復号化には、次のログがあります。
:pubkey enc packet: version 3, algo 16, keyid <16-hexdigit>
data 1023 bits
data 1024 bits
gpgの復号化によりエラーが発生し、ログは次のようになります。
:pubkey enc packet: version 3, algo 16, keyid <16-hexdigit>
data 1022 bits
data 1022 bits
どういう意味ですか?キービットが同じでなくても、なぜ正しく復号化できますか? 2つのファイルを復号するために使用されるキーIDとパスワードは同じです。また、gpg.dllエラーを説明する詳細なリソースを知っている人はいますか?
ベストアンサー1
広く使用されているGPFコードには3つのタイプがあります。
- 0は成功を示します(他のすべての値は失敗を示します)。
- 2 は通常、予期しないエラーに使用されます。
- 1はBAD署名のようなものです。
--status-fd <file descriptor>
エラーを識別する正しい方法は、またはの出力を解釈することです--status-file <filename>
。
これで、作業中の特定の問題には2つの考えられる理由があります。
- GPGは、暗号化に署名されていない鍵を引き続き使用するかどうかを尋ねます。どのユーザーもYを入力できないため、エラーが発生します。
この問題を解決するには、次のスイッチを提供します。
--yes and --always-trust
- 権限の問題かもしれません。 gpgがアクセスできないディレクトリにアクセスしようとすると、致命的なエラーが発生して失敗します。 (エラーコード2)
homedirディレクティブとgpgが書き込むことができるディレクトリを指定することでこの問題を解決できます。このように:
$cmd = "/usr/bin/gpg -a --recipient $to -e -o $outfile $infile --homedir /path/to/dir";
man gpgの情報:
--homedir directory
Set the name of the home directory to directory
If this option is not used it defaults to "~/.gnupg". It does not make sense to use this in a options file. This also overrides the environment variable $GNUPGHOME.
これを使用することもできます協会これについて詳しく学んでください。