問題タブ [gpgme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - ストリームからの GPG 復号化チャンク
S3 から gnupg へ、いくつかの大きな対称的に暗号化された .csv.gpg (それぞれ 40GB 以上) ファイルを出力ストリームにストリーミングしようとしています。
暗号化/復号化されたファイル全体をディスクまたはメモリにダウンロードする必要がないように、ストリームを使用してファイルをチャンクで処理したいと思います。
Ruby 2.5.0 とruby-gpgme gemを使用して、AWS Ruby S3 SDKを使用してオブジェクトのチャンクをダウンロードし、復号化のために gnupg に渡す例を次に示します。
これを実行すると、最初のチャンクの最後で失敗するまで、有効な復号化された CSV データが STDOUT に表示されます (良い!)。
~/.rvm/gems/ruby-2.5.0/gems/gpgme-2.0.14/lib/gpgme/ctx.rb:435:in `decrypt_verify': 復号化に失敗しました (GPGME::Error::DecryptFailed)
これは私が立ち往生しているところです。
- gnupg は一度にチャンクを復号化できますか、それとも出力を書き込む前にファイル全体を読み取る必要がありますか?
- チャンクは特定のサイズにする必要がありますか、および/または何らかの方法で区切る必要がありますか?
どんなフィードバックでも大歓迎です。
haskell - Haskell GPGME の署名は GPG よりもはるかに遅い
私のプログラムでは、ファイルの署名に GPG を使用しています。Haskell でGPGMEを使用していますが、コマンド ラインから GPG を使用するよりも約 16 倍遅いという問題があります。次に例を示します。
Haskell コード:
10MBのジャンクファイルを生成します
コマンドラインから GPG で署名します。
そして得る
私のHaskellプログラムで署名します
そして得る
プロファイリングをオンにしてHaskellコードを再度実行しようとしたところ、次の結果が得られました。
時間が費やされているnewCtx関数を調べましたが、何がそれほどコストがかかっているのかわかりません。