gpgpdump v0.8.0 をリリースした
貴方は3年前に書いた自分のコードにウンザリしたことはありませんか。 私はあります。
というわけで,全面書き直し第2弾(笑) OpenPGP パケットの内容を可視化する gpgpdump の v0.8.0 をリリースした。
使い方は以下を参照のこと。
本当はもう少しテストケースを揃えてからリリースしたかったんだけど,バグを見つけちゃったので,とりあえず出しとこうかと。
具体的な変更点は
- コマンドライン・ツールとして提供することを前提に構成を変更
- TOML 形式の出力を廃止
の2つ。
サブパッケージのディレクトリ構成変更が主なので,元のコードの9割くらいは流用できてるんじゃないのかな。 「コマンドライン・ツールとして提供」と書いたが,一応のレイヤ設計はしているので,他の Go コードに組み込むことは可能である。
たとえばこんな感じ。
package main
import (
"fmt"
"os"
"strings"
"github.com/spiegel-im-spiegel/gpgpdump/parse"
"github.com/spiegel-im-spiegel/gpgpdump/parse/context"
)
const openpgpStr = `
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iF4EARMIAAYFAlTDCN8ACgkQMfv9qV+7+hg2HwEA6h2iFFuCBv3VrsSf2BREQaT1
T1ZprZqwRPOjiLJg9AwA/ArTwCPz7c2vmxlv7sRlRLUI6CdsOqhuO1KfYXrq7idI
=ZOTN
-----END PGP SIGNATURE-----
`
func main() {
p, err := parse.New(
strings.NewReader(openpgpStr),
context.New(
context.Set(context.ARMOR, true),
context.Set(context.UTC, true),
),
)
if err != nil {
fmt.Fprintf(os.Stderr, "%+v", err)
return
}
res, err := p.Parse()
if err != nil {
fmt.Fprintf(os.Stderr, "%+v", err)
return
}
fmt.Println(res)
}
これを実行すると
$ go run sample.go
Signature Packet (tag 2) (94 bytes)
Version: 4 (current)
Signiture Type: Signature of a canonical text document (0x01)
Public-key Algorithm: ECDSA public key algorithm (pub 19)
Hash Algorithm: SHA2-256 (hash 8)
Hashed Subpacket (6 bytes)
Signature Creation Time (sub 2): 2015-01-24T02:52:15Z
Unhashed Subpacket (10 bytes)
Issuer (sub 16): 0x31fbfda95fbbfa18
Hash left 2 bytes
36 1f
ECDSA value r (256 bits)
ECDSA value s (252 bits)
となる。
TOML 出力は最初の頃に勢いで組み込んだんだけど,考えてみたら YAML や TOML とかってデータ交換用のフォーマットとしては向いてないよね。
というわけで --toml
オプションを削除した。
ブックマーク
参考図書
- 暗号化 プライバシーを救った反乱者たち
- スティーブン・レビー (著), 斉藤 隆央 (翻訳)
- 紀伊國屋書店 2002-02-16
- 単行本
- 4314009071 (ASIN), 9784314009072 (EAN), 4314009071 (ISBN)
- 評価
20世紀末,暗号技術の世界で何があったのか。知りたかったらこちらを読むべし!
- 暗号技術入門 第3版 秘密の国のアリス
- 結城 浩 (著)
- SBクリエイティブ 2015-08-25 (Release 2015-09-17)
- Kindle版
- B015643CPE (ASIN)
- 評価
SHA-3 や Bitcoin/Blockchain など新しい知見や技術要素を大幅追加。暗号技術を使うだけならこれ1冊でとりあえず無問題。