$ cd posts/

$ cat wkd-zbase32.md

WKDのz-base-32形式のSHA1ハッシュ生成

WKDのz-base-32形式のSHA1ハッシュを生成する方法について説明します。

PGP公開鍵をWeb Key Directoryで公開する際に、ユーザーIDのSHA1ハッシュをz-base-32形式で生成する必要がある。 以下のように発行する必要があるらしい。

Web Key DirectoryでPGPの公開鍵を配布する

  1. 小文字にする(Joe.Doe → joe.doe)
  2. sha1でハッシュをとる(joe.doe → a83ee94be89c48a11ed25ab44cfdc848833c8b6e)
  3. ハッシュした値(バイナリ)を、Z-Base32でエンコードする(a83ee94be89c48a11ed25ab44cfdc848833c8b6e → iy9q119eutrkn8s1mk4r39qejnbu3n5q)

CLIで実行する場合は、以下のようできた。 z-base-32 Crate が助かる。

$ cargo install --features cli z-base-32
$ zbase32 <(echo -n joe.doe | sha1sum | awk '{printf $1}' | xxd -r -p)
iy9q119eutrkn8s1mk4r39qejnbu3n5q

もしもキー自体を持っている場合は、以下のようにして確認もできる。

$ gpg --with-wkd-hash -k name@address

この記事を検証

$ gpg --locate-keys [email protected]

$ curl -sLO blog.gr3.ie/ja/posts/wkd-zbase32.md -O blog.gr3.ie/ja/posts/wkd-zbase32.md.asc

$ gpg --verify wkd-zbase32.md.asc wkd-zbase32.md

gpg: Good signature from "Yasuhiro Yamada <[email protected]>"