gpg2 - 스크립트를 사용하여 지문 가져오기

gpg2 - 스크립트를 사용하여 지문 가져오기

GPG2 키에서 지문을 추출하려고 합니다. 그러면 pass init $GPG2_FINGERPRINT초기화를 위해 지문이 전달됩니다.

아래 예에서는 지문 값을 원합니다 0126E6FFD15E33B8BCE7B748E79142F98581FC60.

$ gpg2 --list-signatures
pub   rsa2048 2021-10-14 [SCEA]
      0126E6FFD15E33B8BCE7B748E79142F98581FC60
uid           [ unknown] User 1 (User 1) <[email protected]>
sig 3        E79142F98581FC60 2021-10-14  User 1 (User 1) <[email protected]>
sub   rsa2048 2021-10-14 [SEA]
sig          E79142F98581FC60 2021-10-14  User 1 (User 1) <[email protected]>

하위 키를 사용할 때도 지문이 반환됩니다 --with-colons. 하위 정보 없이 깨끗한 출력을 얻는 방법은 무엇입니까?

생략 --list-keys하고 사용 하면 --with-fingerprint매우 가까워집니다... 경고가 표시될 것으로 예상합니다 gpg: WARNING: no command supplied. Trying to guess what you mean. 깨끗한 출력을 얻기 위해 경고를 리디렉션할 수 있지만 올바른 명령을 사용하고 싶습니다.

이 작업을 수행할 수 있는 다른 방법이 있나요? 궁극적인 목표는 pass스크립트를 통해 GPG 키를 설정하는 것입니다(사용자 상호 작용 없음).

$ gpg2 --with-fingerprint --with-colons ./pubring.kbx
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
pub:-:2048:1:E79142F98581FC60:1634220843:::-:
fpr:::::::::0126E6FFD15E33B8BCE7B748E79142F98581FC60:
uid:::::::::User 1 (User 1) <[email protected]>:
sub:-:2048:1:213A9C4C15D3AAA9:1634220843::::

답변1

하위 키를 사용할 때도 지문이 반환됩니다 --with-colons.

이 옵션은 --with-colons기계가 구문 분석할 수 있는 형식으로 출력을 내보내므로 올바른 선택입니다.

하위 정보 없이 깨끗한 출력을 얻는 방법은 무엇입니까?

나는 이것을 에 파이핑하는 것을 제안합니다 awk. 출력 --with-colons은 정규화되고 각 행은 필드 1의 데이터 유형을 갖습니다. 데이터 유형이 있는 모든 행은 pub공개 키(하위 키와 반대)를 나타내고 후속 행(데이터 유형 fpr)에는 필드 10의 지문 문자열이 포함됩니다.

awk이를 통해 "pub:"으로 시작하는 라인을 스캔하고 후속 라인에서 필드 10의 지문을 처리함으로써 출력 구문 분석이 간단해집니다.

예를 들어 다음은 키링의 모든 공개 키 지문을 인쇄합니다.

gpg --with-colons -k | awk -F: '/^pub:.*/ { getline; print $10}'

관련 정보