如何辨别我的图书馆是否在Clojars上签名?

时间:2013-03-01 23:19:56

标签: clojure code-signing

我最近在Clojars上部署了一个库,并试图确保它已经签名,但是看不到任何证据表明这种方式。

以下是我遵循的步骤:

我已经安装了gpg(Linux系统),运行gpg-agent并生成了公钥/私钥对。我在注册时还将我的GPG公钥添加到了Clojars。

我创建了〜/ .lein / credentials.clj:

{#"https://clojars.org/repo"
  {:username "midpeter444" :password "passw0rd"}} 
然后我跑了:

gpg --default-recipient-self -e ~/.lein/credentials.clj > ~/.lein/credentials.clj.gpg

然后删除〜/ .lein / credentials.clj

在我的lein项目目录中,我跑了:

lein deploy clojars

它提示我两次(通过gpg-agent)输入我的密码,我做了,然后将jar上传到Clojars。

所以看起来它有用了,但是当我从Clojars网站上看到我的图书馆或者在我从Clojars下载它之后在图书馆看到我的图书馆时,我看不到任何证据表明它已签名或是否失败。

我是否还需要做其他事情,比如在project.clj中添加一个注释以便以某种方式签名?

2 个答案:

答案 0 :(得分:2)

  • 登录clojars
  • 在仪表板上,单击相关库
  • 查看促销部分

如果jar没有签名,您会看到如下消息:

  
      
  • /home/clojars/repo/blah/blah/0.0.1/blah-0.0.1.jar   未签名。
  •   

答案 1 :(得分:1)

在对其进行研究之后,如果您已将PGP公钥添加到Clojars帐户,则lein 2将自动签署您的罐子。如果您运行lein deps :verify,它会告诉您该库是否已签名。

因此,您可以创建一个使用已发布库的项目并运行此命令。

示例输出:

$ lein deps :verify
:signed [criterium "0.3.1"]
:unsigned [enlive "1.0.1"]
:signed [org.clojure/tools.macro "0.1.1"]
:signed [org.clojure/clojure "1.5.0"]
:bad-signature [thornydev/go-lightly "0.4.0"]

我看到我的(轻微地)标记为签名不好,所以现在我需要找出原因。 Clojars网站没有告诉我这个(或者至少我不知道在哪里寻找它),所以我认为使用lein deps :verify是更好的答案。

[更新]:错误的签名是因为我尝试在之后重新部署了一个库(相同版本)我已经提升了它,发现了Clojars中的一个错误系统(目前正在修复)。

如果你得到一个:bad-signature,你需要重新部署到Clojars(在Clojars之后删除了坏lib)。然后要检查签名是否正确,请确保从本地〜/ .m2仓库中删除该库,以便下载新库并检查其是否有效签名。