| <!-- |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| --> |
| |
| # Setting up `gpg` |
| |
| - [Creating a PGP key for Releases](#creating-a-pgp-key-for-releases) |
| * [Installation](#installation) |
| * [Create a key](#create-a-key) |
| * [Get Key ID](#get-key-id) |
| * [Publish Key](#publish-key) |
| - [Importing PMC Members' PGP keys](#importing-pmc-members-pgp-keys) |
| |
| ## Creating a PGP key for Releases |
| |
| - You need a PGP key to sign releases for Apache Cordova. |
| - [GnuPG, short `gpg`](http://www.apache.org/dev/openpgp.html#gnupg) is the Apache recommended client to create and manage these keys. |
| - PGP, GPG, GnuPG, OpenPGP can be confusing - [read about the background](https://www.goanywhere.com/blog/2013/07/18/openpgp-pgp-gpg-difference) |
| |
| ### Installation |
| |
| On a Mac: |
| |
| brew install gpg |
| |
| On Windows: |
| |
| Download and install [gpg4win](https://www.gpg4win.org/) |
| |
| ### Create a key |
| |
| Create a new key with |
| |
| * email = you@apache.org |
| * description = "CODE SIGNING KEY" |
| |
| Use this command |
| |
| gpg --gen-key |
| |
| (more elaborate instructions at http://www.apache.org/dev/openpgp.html#generate-key + http://www.apache.org/dev/openpgp.html#generation-final-steps) |
| |
| ### Get Key ID |
| |
| Look at your keyring: |
| |
| gpg --list-sigs --fingerprint |
| |
| Example Output: |
| |
| pub 4096R/8A496450 2014-02-27 |
| Key fingerprint = B998 A96C 4DAA 821A 9C3A FA5C E28E 332A 8A49 6450 |
| uid Andrew Grieve (CODE SIGNING KEY) <agrieve@apache.org> |
| sig 3 8A496450 2014-02-27 Andrew Grieve (CODE SIGNING KEY) <agrieve@apache.org> |
| sub 4096R/A59029E7 2014-02-27 |
| sig 8A496450 2014-02-27 Andrew Grieve (CODE SIGNING KEY) <agrieve@apache.org> |
| |
| In this example, `8A496450` is your key ID. Set it to a environment variable: |
| |
| KEY_ID=8A496450 |
| |
| (Or on Windows: `set KEY_ID=8A496450`. Everywhere you see `$KEY_ID` from now on, use `%KEY_ID%` instead) |
| |
| ### Publish Key |
| |
| Publish to `dist/KEYS`: |
| |
| # Clone `cordova-dist` if you don't have it already: |
| coho repo-clone -r dist |
| |
| # Append your key to the KEYS file |
| gpg --armor --export $KEY_ID >> cordova-dist/KEYS |
| |
| # Make sure that's the only change to the file |
| ( cd cordova-dist && svn diff ) |
| |
| # Commit |
| ( cd cordova-dist && svn commit -m "Added my signing PGP key to KEYS" ) |
| |
| See [committer subversion access](https://www.apache.org/dev/version-control.html#https-svn) for information how to access SVN (TLDR: add `--username=...` to the `svn commit` command if needed). |
| |
| Publish to `keys.gnupg.net` |
| |
| gpg --keyserver hkp://keys.gnupg.net --send-keys $KEY_ID |
| |
| Visit http://pgp.mit.edu/ and paste in result of: |
| |
| // Mac |
| gpg --armor --export $KEY_ID | pbcopy |
| // Windows |
| gpg --armor --export $KEY_ID | clip |
| |
| Copy to your Apache homedir: |
| |
| gpg --armor --export $KEY_ID > $KEY_ID.asc |
| scp $KEY_ID.asc people.apache.org: |
| |
| #### Optional |
| |
| Sign into: https://id.apache.org/ and add your fingerprint (not your KEY_ID). This will cause emails from Apache to you to be encrypted. |
| |
| ## Importing PMC Members' PGP keys |
| |
| curl "https://people.apache.org/keys/group/cordova.asc" | gpg --import |
| |
| Import any extra committer's keys via: |
| |
| curl "https://dist.apache.org/repos/dist/release/cordova/KEYS" | gpg --import |
| |
| ## Further reading |
| |
| * https://www.apache.org/dev/new-committers-guide.html#set-up-security-and-pgp-keys |