====== PGP ======
===== GnuPG로 Key 생성하기 =====
* https://www.gnupg.org/
* [[https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven|PGP Signatures with Maven]]
==== Key 생성 ====
# key 생성
gpg --gen-key
* 질문에 대답하고 가능하면 passphrase도 지정해줄것.
* ''~/.gnupg'' 디렉토리에 ''pubring.gpg'', ''secring.gpg''로 생성됨.
==== Key 목록 보기 ====
# 공개키 보기
gpg --list-keys
# 비밀키 보기
gpg --list-sceret-keys
==== Sign a file ====
gpg -ab somefile.txt
# somefile.txt.asc 파일 생성됨
* ''-a'' : ASCII output
* ''-b'' : 별도 Signature 파일 생성
==== 사인 된 파일 검증 ====
gpg --verify somefile.txt.asc
* Maven 저장소에 artifact를 올릴 때는 Primary Key만 사용할 것.
==== subkey 삭제 ====
일부 PGP 툴은 subkey를 사용해 사인을 하는데 Maven은 이를 인식하지 못한다. 그래서 subkey를 삭제해 버리고 사인할 것.
gpg --list-keys # 여기서 pub key의 ID를 가지고 아래에서 사용
gpg --edit-key [KEYID] # 예 A6BAB25C
# 아래와 같은 화면이 나왔다고 할 때
gpg (GnuPG/MacGPG2) 2.0.17; Copyright (C) 2011 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Secret key is available.
pub 2048R/A6BAB25C created: 2011-08-31 expires: 2012-06-26 usage: SC
trust: ultimate validity: ultimate
sub 2048R/DD289F64 created: 2011-08-31 expired: 2011-09-30 usage: E
sub 2048R/8738EC86 created: 2011-12-19 expires: 2012-06-16 usage: S
[ultimate] (1). Juven Xu (for testing)
* 여기서 ''usage: E''로 된 것은 Encryption에만 사용, **''usage: S''**가 사이닝할 때사용된다. 따라서 ''S''가 지정된 subkey를 삭제하면 된다(여기서는 8738EC86).
* ''key 2'' 명령으로 해당 키 선택(출력 순서대로 0 기반)
* ''delkey'' : 선택된 키 삭제
* ''save'' : 저장
==== PGP Public Key 업로드 ====
* PGP key Servers 중에 하나 선택해서 올리기
* [[https://sks-keyservers.net/|sks-keyservers]] : ''hkp://pool.sks-keyservers.net''
* [[https://keyserver.pgp.com/|keyserver.pgp.com]]
* 올리기
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys [KEYID]
* 남이 올린 키 받아서 import
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys [KEYID]