Получите ключевые идентификаторы и отпечатки пальцев apt в машиночитаемом формате

11

Я пытаюсь исправить проблему в puppetlabs-apt, чтобы включить использование отпечатков клавиш в качестве идентификаторов, чтобы гарантировать наличие определенного ключа в его 40-значном отпечатке ключа.

У меня проблемы с проверкой наличия ключа, и мне нужна команда, которая выведет следующее:

  • 8-значный идентификатор ключа.
  • 16-значный идентификатор ключа.
  • 40-значный идентификатор ключа.

Есть ли apt-keyкоманда, которую я могу использовать для вывода этих значений, по одному на строку, чтобы я мог проанализировать вывод и проверить, присутствует ли ключ?

Нафтули Кей
источник

Ответы:

21

apt-key adv позволит вам напрямую передавать опции в GnuPG.

Таким образом, вы можете сделать что-то вроде этого, чтобы получить разборчивый ответ:

# apt-key adv --list-public-keys --with-fingerprint --with-colons 
⋮
fpr:::::::::126C0D24BD8A2942CC7DF8AC7638D0442B90D010:
pub:-:4096:1:9D6D8F6BC857C906:2014-11-21:2022-11-19::-:Debian Security Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>::scSC:
fpr:::::::::D21169141CECD440F2EB8DDA9D6D8F6BC857C906:
⋮

Поскольку вас интересует только отпечаток пальца (8-значные и 16-значные идентификаторы - это только конец отпечатка пальца), вам | grep ^fprмогут показаться линии, которые вам небезразличны.

derobert
источник
Итак, взятие fingerprint[-8:](Python) получило бы мне 8-значный идентификатор и fingerpint[-16:]16-значный идентификатор? Глупо мне думать, что это криптологически полученные короткие хеш-коды ...
Нафтули Кей
2
@NaftuliTzviKay Отпечаток пальца - это криптографически полученный хеш. Нет никакой пользы для безопасности в том, чтобы снова его хешировать, а просто урезать. Кроме того, 8-значные и, вероятно, 16-значные слишком короткие, чтобы быть в безопасности; Вы можете сгенерировать дубликат ключа грубой силой. Только полный хэш достаточно безопасен. Не могу прокомментировать, если ваш код Python работает так, как ожидалось, так как я не знаю Python ... Но я думаю, что да. Это только последние 8 или 16 шестнадцатеричных цифр.
Дероберт