Guitar icon indicating copy to clipboard operation
Guitar copied to clipboard

proposal: Support GPG

Open yumetodo opened this issue 7 years ago • 14 comments

commit時にgpg署名できたりtree viewで署名の検証結果が見られる機能

yumetodo avatar May 07 '17 01:05 yumetodo

だいたいできたかなと思います。 Windowsでは確認していません。 Ubuntu 16.04 の gpg 1.4 では動いていますが、gpg 2.x でおかしいかも

soramimi avatar May 12 '18 09:05 soramimi

screenshot from 2018-05-12 20-23-02

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

yumetodo avatar May 12 '18 11:05 yumetodo

git config user.signingkeyに手動で渡せば上手く行きますがあのダイアログの意味がない・・・

yumetodo avatar May 12 '18 11:05 yumetodo

gpg 1.4 の出力フォーマットに依存してるんですよねぇ。。。 そのうち対応します。

soramimi avatar May 12 '18 13:05 soramimi

Gpg4win(gpg 2.2.7)対応しました。

soramimi avatar May 26 '18 06:05 soramimi

image

だめですね・・・

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

yumetodo avatar May 27 '18 03:05 yumetodo

使ったことないけどQtにもunit testあったはずなのでこのへんぶち込みたい思い

yumetodo avatar May 27 '18 03:05 yumetodo

もしくはgpgmeを使うか(だるい

yumetodo avatar May 27 '18 04:05 yumetodo

gpgmeはいいんだけどWindowsでビルドが面倒

soramimi avatar May 27 '18 05:05 soramimi

貼ってもらった 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] に送ってください。解析します。

soramimi avatar May 27 '18 07:05 soramimi

さっきコミットしたGuitarをビルドして、Ctrl+Tを押すとファイルを開くダイアログが出ますので

pullしてビルドしましたが出てこないです。なぜ・・・

しかもgpg_commandが空っぽでもう意味がわからなくなったので screenshot from 2018-05-27 21-25-39

keys.txt おいておきます。メールじゃないといけないということでしたら返信ください。

yumetodo avatar May 27 '18 12:05 yumetodo

[qmakeの 実行] をしてから [全てリビルド] をやってみてください。完成したら設定ダイアログの [Directories] のページで、[GPG command] の場所を設定しなおしてみてください。Ctrl+Tを押すと、MainWindow.cppの最後、void MainWindow::on_action_test_triggered() に来るはずですので、ここにブレークポイントを置くといいです。 /usr/bin/gpg/usr/bin/gpg2 で、どちらも同じ結果になれば成功です。

余談ですが、GPGコマンドの設定が [Directories] ページにあるというのも、ちょっと気持ち悪いので、いずれ設定カテゴリの見直しします。

qmake

settings

run

soramimi avatar May 27 '18 14:05 soramimi

完成したら設定ダイアログの [Directories] のページで、[GPG command] の場所を設定しなおしてみてください。

image

うまく行きました。


LANG=Cしているせいですが、

Saúl Ibarra Corretgé

がバケバケになっちゃうのは辛さが・・・。

yumetodo avatar May 27 '18 15:05 yumetodo

Add signoff, too. (Signed-off by: User Name [email protected])

Also see attached image: Incorrect GPG Queries

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]

OdinVex avatar Dec 26 '22 16:12 OdinVex