Guitar
Guitar copied to clipboard
proposal: Support GPG
commit時にgpg署名できたりtree viewで署名の検証結果が見られる機能
だいたいできたかなと思います。 Windowsでは確認していません。 Ubuntu 16.04 の gpg 1.4 では動いていますが、gpg 2.x でおかしいかも
gpg -k
/home/celluloce/.gnupg/pubring.kbx
----------------------------------
pub rsa2048 2016-04-07 [SC]
27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2
uid [ 不明 ] Daniel Stenberg <[email protected]>
sub rsa2048 2016-04-07 [E]
pub rsa2048 2018-02-14 [SC] [有効期限: 2020-02-14]
6335C4DCECFD34590AA8DAB268C24A7D4E34A380
uid [ 究極 ] celluloce <[email protected]>
sub rsa2048 2018-02-14 [E] [有効期限: 2020-02-14]
pub rsa4096 2012-05-06 [SCA] [有効期限: 2022-05-06]
91BD8815FE0040FA7FF5D68754C28F4FF5A1A949
uid [ 充分 ] David Runge <[email protected]>
uid [ 充分 ] David Runge <[email protected]>
uid [ 充分 ] David Runge <[email protected]>
uid [ 充分 ] David Runge <[email protected]>
sub rsa4096 2012-05-06 [E] [有効期限: 2022-05-06]
pub rsa4096 2015-07-17 [SC]
14F26682D0916CDD81E37B6D61B7B526D98F0353
uid [ 不明 ] Mozilla Software Releases <[email protected]>
sub rsa4096 2017-06-22 [S] [有効期限: 2019-06-22]
pub rsa4096 2012-11-17 [SC]
45DFF2D5205FE8CD74C2EE6C63B81599BC0B0D65
uid [ 不明 ] Kevin Cernekee <[email protected]>
sub rsa4096 2012-11-17 [E]
git config user.signingkey
6335C4DCECFD34590AA8DAB268C24A7D4E34A380
だめですね・・・
Arch Linux x64 gpg (GnuPG) 2.2.6 libgcrypt 1.8.2
git config user.signingkey
に手動で渡せば上手く行きますがあのダイアログの意味がない・・・
gpg 1.4 の出力フォーマットに依存してるんですよねぇ。。。 そのうち対応します。
Gpg4win(gpg 2.2.7)対応しました。
だめですね・・・
Ubuntu 16.04LTS
$gpg --version
gpg (GnuPG) 1.4.20
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
サポートしているアルゴリズム:
公開鍵: RSA, RSA-E, RSA-S, ELG-E, DSA
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2
$gpg2 --version
gpg (GnuPG) 2.1.11
libgcrypt 1.6.5
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
サポートしているアルゴリズム:
公開鍵: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
暗号方式: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256,
TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256
ハッシュ: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
圧縮: 無圧縮, ZIP, ZLIB, BZIP2
$LANG=C gpg --list-keys --keyid-format LONG --fingerprint
/home/yumetodo/.gnupg/pubring.gpg
---------------------------------
pub 4096R/5A7F9772AE9BC059 2014-06-16 [revoked: 2016-08-16]
Key fingerprint = 33F0 5E28 CA68 8A44 8507 24A6 5A7F 9772 AE9B C059
uid Sa�l Ibarra Corretg� (saghul) <[email protected]>
pub 4096R/410E5553AE9BC059 2012-07-24
Key fingerprint = FDF5 1936 4458 319F A823 3DC9 410E 5553 AE9B C059
uid Sa�l Ibarra Corretg� (saghul) <[email protected]>
sub 4096R/EBC53FD49C1C9B09 2012-07-24
pub 4096R/0FC3042E345AD05D 2015-01-20 [expired: 2018-01-19]
Key fingerprint = B6C8 F982 82B9 44E3 B0D5 C253 0FC3 042E 345A D05D
uid Hans Wennborg <[email protected]>
pub 2048R/7548859895CAA77D 2016-11-10
Key fingerprint = 2158 85B4 929B 2E2D A70F 416B 7548 8598 95CA A77D
uid Pacman Keyring Master Key <pacman@localhost>
pub 4096R/DF45E107FE05ED49 2017-03-23 [expires: 2019-03-23]
Key fingerprint = E965 2A11 EF95 0408 060C E0EE DF45 E107 FE05 ED49
uid yumetodo <[email protected]>
sub 4096R/894C4304830A7319 2017-03-23 [expires: 2019-03-23]
pub 2048R/B02C46DF417A0893 2014-10-08
Key fingerprint = 52E1 6F86 FEE0 4B97 9B07 E28D B02C 46DF 417A 0893
uid MS Open Tech <[email protected]>
sub 2048R/AA40C284FF1249BC 2014-10-08
pub 4096R/9A00B0C1DC1BE6A7 2017-04-25 [expires: 2019-04-25]
Key fingerprint = 71C1 4449 77E9 4BC1 9EE0 8EC2 9A00 B0C1 DC1B E6A7
uid NishiCell <[email protected]>
sub 4096R/97C5CB3920905A45 2017-04-25 [expires: 2019-04-25]
pub 2048R/4AEE18F83AFDEB23 2017-08-16
Key fingerprint = 5DE3 E050 9C47 EA3C F04A 42D3 4AEE 18F8 3AFD EB23
uid GitHub (web-flow commit signing) <[email protected]>
$LANG=C gpg2 --list-keys --keyid-format LONG --fingerprint
/home/yumetodo/.gnupg/pubring.gpg
---------------------------------
pub rsa4096/5A7F9772AE9BC059 2014-06-16 [SCEA] [revoked: 2016-08-16]
Key fingerprint = 33F0 5E28 CA68 8A44 8507 24A6 5A7F 9772 AE9B C059
uid [ revoked] Sa�l Ibarra Corretg� (saghul) <[email protected]>
pub rsa4096/410E5553AE9BC059 2012-07-24 [SC]
Key fingerprint = FDF5 1936 4458 319F A823 3DC9 410E 5553 AE9B C059
uid [ unknown] Sa�l Ibarra Corretg� (saghul) <[email protected]>
sub rsa4096/EBC53FD49C1C9B09 2012-07-24 [E]
pub rsa4096/0FC3042E345AD05D 2015-01-20 [SC] [expired: 2018-01-19]
Key fingerprint = B6C8 F982 82B9 44E3 B0D5 C253 0FC3 042E 345A D05D
uid [ expired] Hans Wennborg <[email protected]>
pub rsa2048/7548859895CAA77D 2016-11-10 [SC]
Key fingerprint = 2158 85B4 929B 2E2D A70F 416B 7548 8598 95CA A77D
uid [ultimate] Pacman Keyring Master Key <pacman@localhost>
pub rsa4096/DF45E107FE05ED49 2017-03-23 [SCEA] [expires: 2019-03-23]
Key fingerprint = E965 2A11 EF95 0408 060C E0EE DF45 E107 FE05 ED49
uid [ultimate] yumetodo <[email protected]>
sub rsa4096/894C4304830A7319 2017-03-23 [SEA] [expires: 2019-03-23]
pub rsa2048/B02C46DF417A0893 2014-10-08 [SC]
Key fingerprint = 52E1 6F86 FEE0 4B97 9B07 E28D B02C 46DF 417A 0893
uid [ unknown] MS Open Tech <[email protected]>
sub rsa2048/AA40C284FF1249BC 2014-10-08 [E]
pub rsa4096/9A00B0C1DC1BE6A7 2017-04-25 [SC] [expires: 2019-04-25]
Key fingerprint = 71C1 4449 77E9 4BC1 9EE0 8EC2 9A00 B0C1 DC1B E6A7
uid [ full ] NishiCell <[email protected]>
sub rsa4096/97C5CB3920905A45 2017-04-25 [E] [expires: 2019-04-25]
pub rsa2048/4AEE18F83AFDEB23 2017-08-16 [SC]
Key fingerprint = 5DE3 E050 9C47 EA3C F04A 42D3 4AEE 18F8 3AFD EB23
uid [ full ] GitHub (web-flow commit signing) <[email protected]>
$git config --global gpg.program
/usr/bin/gpg2
使ったことないけどQtにもunit testあったはずなのでこのへんぶち込みたい思い
もしくはgpgmeを使うか(だるい
gpgmeはいいんだけどWindowsでビルドが面倒
貼ってもらった gpg2 --list-keys --keyid-format LONG --fingerprint
の結果をテキストファイルにして食わせたら、一応パースはできてるみたいです。
ひとつ試していただけますか?
$ gpg2 --list-keys --keyid-format LONG --fingerprint >keys.txt
さっきコミットしたGuitarをビルドして、Ctrl+Tを押すとファイルを開くダイアログが出ますので、上記 keys.txt を読み込ませて、キー選択ダイアログに表示されるかどうか、試してみてください。
ダメだったら keys.txt を [email protected] に送ってください。解析します。
さっきコミットしたGuitarをビルドして、Ctrl+Tを押すとファイルを開くダイアログが出ますので
pullしてビルドしましたが出てこないです。なぜ・・・
しかもgpg_command
が空っぽでもう意味がわからなくなったので
keys.txt おいておきます。メールじゃないといけないということでしたら返信ください。
[qmakeの 実行] をしてから [全てリビルド] をやってみてください。完成したら設定ダイアログの [Directories] のページで、[GPG command] の場所を設定しなおしてみてください。Ctrl+Tを押すと、MainWindow.cppの最後、void MainWindow::on_action_test_triggered()
に来るはずですので、ここにブレークポイントを置くといいです。 /usr/bin/gpg
と /usr/bin/gpg2
で、どちらも同じ結果になれば成功です。
余談ですが、GPGコマンドの設定が [Directories] ページにあるというのも、ちょっと気持ち悪いので、いずれ設定カテゴリの見直しします。
完成したら設定ダイアログの [Directories] のページで、[GPG command] の場所を設定しなおしてみてください。
うまく行きました。
LANG=C
しているせいですが、
Saúl Ibarra Corretgé
がバケバケになっちゃうのは辛さが・・・。
Add signoff, too. (Signed-off by: User Name [email protected])
Also see attached image:
Those keys have email addresses, Guitar is just querying/parsing them incorrectly inside: bool gpg::listKeys(QString const &gpg_command, QList<gpg::Data> *keys)
.
Example output from gpg2 --list-keys --keyid-format LONG --fingerprint
:
pub rsa4096/0000000000000000 2022-12-26 [SC]
Key fingerprint = 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
uid [ unknown] User Name <[email protected]>
uid [ unknown] [jpeg image of size 18925]
sub rsa4096/0000000000000000 2022-12-26 [E]