%20%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E5%AE%89%E5%85%A8%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
実行してみると、出力は少し疑わしいものでした。
# add-apt-repository -y ppa:ansible/ansible
gpg: keyring `/tmp/tmp85zwje4_/secring.gpg' created
gpg: keyring `/tmp/tmp85zwje4_/pubring.gpg' created
gpg: requesting key 7BB9C367 from hkp server keyserver.ubuntu.com
gpg: /tmp/tmp85zwje4_/trustdb.gpg: trustdb created
gpg: key 7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
OK
このような短い文字列でキーを識別することは想定されていません。なぜなら、衝突するキーIDが生成される可能性があるからです。5秒未満。
答え1
この出力については心配しないでください。
GPG は古いキー ID を出力しますが、apt-add-repository は実際には 160 ビットのフィンガープリントを使用してキーを取得します。(フィンガープリントは HTTPS 経由で取得されるようです)。
def verify_keyid_is_v4(signing_key_fingerprint):
"""Verify that the keyid is a v4 fingerprint with at least 160bit"""
return len(signing_key_fingerprint) >= 160/8
class AddPPASigningKey(object):
" thread class for adding the signing key in the background "
GPG_DEFAULT_OPTIONS = ["gpg", "--no-default-keyring", "--no-options"]
def __init__(self, ppa_path, keyserver=None):
self.ppa_path = ppa_path
self.keyserver = (keyserver if keyserver is not None
else DEFAULT_KEYSERVER)
def _recv_key(self, keyring, secret_keyring, signing_key_fingerprint, keyring_dir):
try:
# double check that the signing key is a v4 fingerprint (160bit)
if not verify_keyid_is_v4(signing_key_fingerprint):
print("Error: signing key fingerprint '%s' too short" %
signing_key_fingerprint)
return False