You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/06/17 09:50:40 UTC
[20/46] isis-site git commit: recreating using new scripts...
http://git-wip-us.apache.org/repos/asf/isis-site/blob/8372c492/content/key-generation.html
----------------------------------------------------------------------
diff --git a/content/key-generation.html b/content/key-generation.html
index d543ac2..85994ce 100644
--- a/content/key-generation.html
+++ b/content/key-generation.html
@@ -1,1475 +1,1475 @@
-<!doctype html>
-<html class="no-js" lang="en">
-<head>
- <meta charset="utf-8"/>
- <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-
- <title>Key Generation</title>
-
- <!--
- 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.
- -->
-
- <!-- No caching headers -->
- <meta http-equiv="cache-control" content="no-cache" />
- <meta http-equiv="pragma" content="no-cache" />
- <meta http-equiv="expires" content="-1" />
-
-
- <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line -->
- <link href="./css/foundation/5.5.1/foundation.css" rel="stylesheet" />
- <script src="./js/foundation/5.5.1/vendor/modernizr.js"></script>
- <link href="./css/asciidoctor/colony.css" rel="stylesheet">
- <link href="./css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
-
-
-
-
- <link href="./css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet" />
- <!--[if lt IE 9]>
- <link href="./css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.ie.css" rel="stylesheet" />
- <![endif]-->
-
-
- <style type="text/css">
- /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
-/*pre.CodeRay {background-color:#f7f7f8;}*/
-.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
-.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
-.CodeRay .line-numbers strong{font-weight: normal}
-table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
-table.CodeRay td{vertical-align: top}
-table.CodeRay td.line-numbers{text-align:right}
-table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
-table.CodeRay td.code{padding:0 0 0 .5em}
-table.CodeRay td.code>pre{padding:0}
-.CodeRay .debug{color:#fff !important;background:#000080 !important}
-.CodeRay .annotation{color:#007}
-.CodeRay .attribute-name{color:#000080}
-.CodeRay .attribute-value{color:#700}
-.CodeRay .binary{color:#509}
-.CodeRay .comment{color:#998;font-style:italic}
-.CodeRay .char{color:#04d}
-.CodeRay .char .content{color:#04d}
-.CodeRay .char .delimiter{color:#039}
-.CodeRay .class{color:#458;font-weight:bold}
-.CodeRay .complex{color:#a08}
-.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
-.CodeRay .color{color:#099}
-.CodeRay .class-variable{color:#369}
-.CodeRay .decorator{color:#b0b}
-.CodeRay .definition{color:#099}
-.CodeRay .delimiter{color:#000}
-.CodeRay .doc{color:#970}
-.CodeRay .doctype{color:#34b}
-.CodeRay .doc-string{color:#d42}
-.CodeRay .escape{color:#666}
-.CodeRay .entity{color:#800}
-.CodeRay .error{color:#808}
-.CodeRay .exception{color:inherit}
-.CodeRay .filename{color:#099}
-.CodeRay .function{color:#900;font-weight:bold}
-.CodeRay .global-variable{color:#008080}
-.CodeRay .hex{color:#058}
-.CodeRay .integer,.CodeRay .float{color:#099}
-.CodeRay .include{color:#555}
-.CodeRay .inline{color:#00}
-.CodeRay .inline .inline{background:#ccc}
-.CodeRay .inline .inline .inline{background:#bbb}
-.CodeRay .inline .inline-delimiter{color:#d14}
-.CodeRay .inline-delimiter{color:#d14}
-.CodeRay .important{color:#555;font-weight:bold}
-.CodeRay .interpreted{color:#b2b}
-.CodeRay .instance-variable{color:#008080}
-.CodeRay .label{color:#970}
-.CodeRay .local-variable{color:#963}
-.CodeRay .octal{color:#40e}
-.CodeRay .predefined{color:#369}
-.CodeRay .preprocessor{color:#579}
-.CodeRay .pseudo-class{color:#555}
-.CodeRay .directive{font-weight:bold}
-.CodeRay .type{font-weight:bold}
-.CodeRay .predefined-type{color:inherit}
-.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
-.CodeRay .key{color:#808}
-.CodeRay .key .delimiter{color:#606}
-.CodeRay .key .char{color:#80f}
-.CodeRay .value{color:#088}
-.CodeRay .regexp .delimiter{color:#808}
-.CodeRay .regexp .content{color:#808}
-.CodeRay .regexp .modifier{color:#808}
-.CodeRay .regexp .char{color:#d14}
-.CodeRay .regexp .function{color:#404;font-weight:bold}
-.CodeRay .string{color:#d20}
-.CodeRay .string .string .string{background:#ffd0d0}
-.CodeRay .string .content{color:#d14}
-.CodeRay .string .char{color:#d14}
-.CodeRay .string .delimiter{color:#d14}
-.CodeRay .shell{color:#d14}
-.CodeRay .shell .delimiter{color:#d14}
-.CodeRay .symbol{color:#990073}
-.CodeRay .symbol .content{color:#a60}
-.CodeRay .symbol .delimiter{color:#630}
-.CodeRay .tag{color:#008080}
-.CodeRay .tag-special{color:#d70}
-.CodeRay .variable{color:#036}
-.CodeRay .insert{background:#afa}
-.CodeRay .delete{background:#faa}
-.CodeRay .change{color:#aaf;background:#007}
-.CodeRay .head{color:#f8f;background:#505}
-.CodeRay .insert .insert{color:#080}
-.CodeRay .delete .delete{color:#800}
-.CodeRay .change .change{color:#66f}
-.CodeRay .head .head{color:#f4f}
-
- pre.CodeRay code {
- background-color: inherit;
- border-style: none;
- }
-
- pre.CodeRay code > span:first-child {
- margin-left: -5px;
- }
-
- .literalblock pre,
- .listingblock pre:not(.highlight),
- .listingblock pre[class="highlight"],
- .listingblock pre[class^="highlight "],
- .listingblock pre.CodeRay,
- .listingblock pre.prettyprint {
- background: rgb(253, 250, 246);
- }
- .sidebarblock .literalblock pre,
- .sidebarblock .listingblock pre:not(.highlight),
- .sidebarblock .listingblock pre[class="highlight"],
- .sidebarblock .listingblock pre[class^="highlight "],
- .sidebarblock .listingblock pre.CodeRay,
- .sidebarblock .listingblock pre.prettyprint {
- background: rgb(253, 250, 246);
- }
-
- <style>
-
- <style>
- .github-fork-ribbon-wrapper.right {
- position: fixed;
- }
- .github-fork-ribbon {
- background: #090;
- }
- .github-fork-ribbon a:hover {
- background:#0D0;
- color:#fff;
- font-size: 1.1em;
- }
- </style>
-
- <style>
- @media only screen and (min-width: 40.063em) {
- .top-bar {
- .contain-to-grid .top-bar {
- max-width: 80rem;
- }
- }
- }
- .row {
- max-width: 80rem;
- }
- </style>
-
- <style>
- .extended-quote,
- .extended-quote-first {
- margin-left: 40px;
- margin-right: 40px;
- font-style: italic;
- }
- .extended-quote-attribution {
- text-align: right;
- margin-right: 100px;
- color: #10B061;
- }
-
- .extended-quote-first:before {
- content: "\201c";
- float: left;
- font-size: 2.75em;
- font-weight: bold;
- line-height: 0.6em;
- margin-left: -0.6em;
- color: #003b6b;
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
- }
- </style>
-
- <style>
- body {
- position: relative;
- }
-
- *:not(pre) a > code {
- color: #210DDC;
- }
-
- *:not(pre) > code {
- background-color: inherit;
- border: none;
- font-weight: normal;
- }
-
- body div#toc li,
- body div#toc2 li {
- list-style-type: none;
- }
-
- div#doc-content {
- margin-top: 30px;
- }
-
- body div#toc li.active-region:before,
- body div#toc2 li.active-region:before {
- content: "\00BB \0020";
- margin-left: -12px;
- }
-
- body div#toc li a.active,
- body div#toc2 li a.active {
- color: red;
- }
-
- body div#toc.toc,
- body div#toc.toc2 {
- position: fixed;
- left: auto;
- padding-top: 60px;
- z-index: auto;
- background-color: white;
- border-left-color: #eee;
- border-left-style: solid;
- border-right: none;
- min-height: 2000px;
- }
-
- </style>
-
- <style>
-
- @media only screen and (min-width: 768px) {
- #toc.toc2 ul ul { margin-left: -10px; }
- }
-
-
- body div#toc .tocify-subheader ul {
- margin-bottom: 0px;
- }
-
- body div#toc .tocify-subheader li {
- font-size: 14px;
- }
- .tocify li.tocify-item, .tocify ul.tocify-item {
- line-height: 24px;
- }
-
- body div#toc li.tocify-item.active:before,
- body div#toc2 li.tocify-item.active:before {
- content: "\00BB \0020";
- margin-left: -12px;
- }
-
- body div#toc li.tocify-item.active a,
- body div#toc2 li.tocify-item.active a {
- color: red;
- }
- </style>
-
- <style>
- footer {
- margin-top: 1000px;
- }
- </style>
-
- <style>
- /* overriding colony.css stylesheet */
- .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] {
- /*padding: 1.25em 1.5625em 1.125em 1.5625em;*/
- padding: 0.3em 0.6em 0.25em 0.6em;
- }
- @media only screen and (min-width: 1280px)
- #toc.toc2 {
- /*width: 20em;*/
- width: 25em;
- }
-
- #doc-content a {
- color: #210DDC;
- }
-
- .top-bar h1 {
- border-bottom: inherit;
- }
-
- h2 {
- margin-top: 80px;
- }
- h3 {
- margin-top: 40px;
- }
- h4,h5 {
- margin-top: 30px;
- }
-
- .admonitionblock.tip > table td.content {
- color: #10B061;
- }
- .admonitionblock.note > table td.content {
- color: #B509AB;
- }
- .admonitionblock.important > table td.content {
- color: #D5810A;
- }
-
- .admonitionblock .title {
- font-size: larger;
- font-style: italic;
- }
-
- .imageblock img {
- margin-bottom: 10px;
- }
- </style>
-
- <style>
- /* from http://ben.balter.com/2014/03/13/pages-anchor-links/ */
- .header-link {
- position: absolute;
- left: -0.5em;
- opacity: 0;
-
- /*
- -webkit-transition: opacity 0.2s ease-in-out 0.1s;
- -moz-transition: opacity 0.2s ease-in-out 0.1s;
- -ms-transition: opacity 0.2s ease-in-out 0.1s;
- */
- }
-
- h2:hover .header-link,
- h3:hover .header-link,
- h4:hover .header-link,
- h5:hover .header-link,
- h6:hover .header-link {
- opacity: 1;
- }
- </style>
-
- <style>
- .top-bar
- {
- -webkit-transition-duration: .5s;
- transition-duration: .5s;
-
- -webkit-transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
- transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
-
- -webkit-transition-property: -webkit-transform;
- transition-property: transform;
- }
-
- /*
- http://osvaldas.info/auto-hide-sticky-header
- MIT license
- */
- .header--hidden
- {
- -webkit-transform: translateY( -100% );
- -ms-transform: translateY( -100% );
- transform: translateY( -100% );
-
- transition-duration: .5s;
- transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
- -webkit-transition-property: -webkit-transform;
- transition-property: transform;
- }
- </style>
-
- <style>
- #doc-content a.guide {
- color: white;
- }
- </style>
-
- <style>
- .tocify {
- margin-top: 80px;
- }
- </style>
-
-
-</script>
-
-</head>
-<body>
-
-<<div class="github-fork-ribbon-wrapper right" style="position: fixed;">
- <div class="github-fork-ribbon">
- <a href="https://github.com/apache/isis/fork">Fork me on GitHub</a>
- </div>
-</div>
-
-
-<div class="row">
-
- <div class="fixed contain-to-grid header">
- <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem">
- <ul class="title-area">
- <li class="name">
- <h1>
- <a href="/index.html">Apache Isis™</a>
- </h1>
- </li>
- <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
- <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
- </ul>
-
- <section class="top-bar-section">
- <ul class="right">
-
- <li class="has-form">
- <FORM class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
- <div class="row collapse">
- <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
- <INPUT type="hidden" name="cof" value="FORID:0">
- <INPUT class="form-control" name="q" type="text" placeholder="Search">
- </div>
- </FORM>
- </li>
-
- </ul>
-
- <!-- Left Nav Section -->
- <ul class="left">
-
- <li><a href="/documentation.html">Documentation</a></li>
- <li><a href="/downloads.html">Downloads</a></li>
- <li><a href="/help.html">Help</a></li>
- <li><a href="/asf.html">@ASF</a></li>
-
- </ul>
-
- </section>
- </nav>
- </div>
-</div>
-
-<div class="row">
-
- <div id="doc-content-left" class="large-9 medium-9 columns">
-
-
- <div id="doc-content">
- <div id="preamble">
-<div class="sectionbody">
-<div class="paragraph">
-<p><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>In order that a contributor can make a release it is necessary for them to have generated a key and had that key recognized by other members of the Apache Software Foundation.</p>
-</div>
-<div class="paragraph">
-<p>For further background information on this topic, see the <a href="http://www.apache.org/dev/release-signing.html">release signing page</a> and the <a href="http://www.apache.org/dev/openpgp.html#generate-key">openpgp page</a> on the Apache wiki.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_install_and_configure_gpg">Install and Configure gpg</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Download and install GnuPG (gpg), version 1.4.10 or higher.</p>
-</div>
-<div class="paragraph">
-<p>Then, edit <code>~/.gnupg/gpg.conf</code> (on Windows, the file to edit is <code>C:\Users\xxx\AppData\Roaming\gnupg\gpg.conf</code>) so that the default is to generate a strong key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">personal-digest-preferences SHA512
-cert-digest-algo SHA512
-default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_key_generation">Key Generation</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The Apache Software Foundation requires that keys are signed with a key (or subkey) based on RSA 4096 bits. To do this:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --gen-key
-gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
-
-Please select what kind of key you want:
- (1) RSA and RSA (default)
- (2) DSA and Elgamal
- (3) DSA (sign only)
- (4) RSA (sign only)
-Your selection?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify RSA key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Your selection? 1
+<!doctype html>
+<html class="no-js" lang="en">
+<head>
+ <meta charset="utf-8"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-RSA keys may be between 1024 and 4096 bits long.
-What keysize do you want? (2048)</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify key length as 4096 bits:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>What keysize do you want? (2048) 4096
-Requested keysize is 4096 bits
-
-Please specify how long the key should be valid.
- 0 = key does not expire
- <n> = key expires in n days
- <n>w = key expires in n weeks
- <n>m = key expires in n months
- <n>y = key expires in n years
-Key is valid for? (0)</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify key as non-expiring:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Key is valid for? (0) 0
-Key does not expire at all
-Is this correct? (y/N) y
+ <title>Key Generation</title>
-You need a user ID to identify your key; the software constructs the user ID
-from the Real Name, Comment and Email Address in this form:
- "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
+ <!--
+ 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
-Real name:</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Enter your name, email and comment:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>use your apache.org email</p>
-</li>
-<li>
-<p>the comment should be "CODE SIGNING KEY"</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Real name: Xxx Xxxxxxxxx
-Email address: <a href="mailto:xxx@apache.org">xxx@apache.org</a>
-Comment: CODE SIGNING KEY
-You selected this USER-ID:
- "Xxx Xxxxxxxxx (CODE SIGNING KEY) <a href="mailto:xxx@apache.org">xxx@apache.org</a>"</p>
-</div>
-<div class="paragraph">
-<p>Change (N)ame, ©omment, (E)mail or (O)kay/(Q)uit? O</p>
-</div>
-<div class="paragraph">
-<p>You need a Passphrase to protect your secret key.
-Enter passphrase:</p>
-</div>
-<div class="paragraph">
-<p>Provide a passphrase to secure your key.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Enter passphrase:
-Repeat passphrase:</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>GPG will goes on to generate your key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>We need to generate a lot of random bytes. It is a good idea to perform
-some other action (type on the keyboard, move the mouse, utilize the
-disks) during the prime generation; this gives the random number
-generator a better chance to gain enough entropy.
-...+++++
-.........................+++++
-We need to generate a lot of random bytes. It is a good idea to perform
-some other action (type on the keyboard, move the mouse, utilize the
-disks) during the prime generation; this gives the random number
-generator a better chance to gain enough entropy.
-....+++++
-...+++++
-gpg: key nnnnnnnn marked as ultimately trusted
-public and secret key created and signed.
-
-gpg: checking the trustdb
-gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
-gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
-pub 4096R/nnnnnnnn yyyy-mm-dd
- Key fingerprint = xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
-uid Xxx Xxxxxx <xxx@apache.org>
-sub 4096R/kkkkkkkk yyyy-mm-dd</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The public key with id nnnnnnnn should now be stored in <code>~/.gnupg/pubring.pgp</code> (on Windows 7, this is in <code>c:/Users/xxx/AppData/Roaming/gnupg/pubring.pgp</code>).</p>
-</div>
-<div class="paragraph">
-<p>To confirm the key has been generated, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --list-keys --fingerprint</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The key Id is the one true way to identify the key, and is also the last 8 digits of the fingerprint. The corresponding secret key for id <code>nnnnnnnn</code> is stored in <code>~/.gnupg/secring.pgp</code> (on Windows 7, this is in <code>c:/Users/xxx/AppData/Roaming/gnupg/secring.pgp</code>).</p>
-</div>
-<div class="paragraph">
-<p>It’s also worth confirming the key has the correct preference of algorithms (reflecting the initial configuration we did earlier). For this, enter the gpg shell for your new key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --edit-key nnnnnnnnn
->gpg</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>nnnnnnnn</code> is your key id. Now, use the 'showpref' subcommand to list details:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg> showpref
-[ultimate] (1). Xxx Xxxxxxxx (CODE SIGNING KEY) <xxx@apache.org>
- Cipher: AES256, AES192, AES, CAST5, 3DES
- Digest: SHA512, SHA384, SHA256, SHA224, SHA1
- Compression: ZLIB, BZIP2, ZIP, Uncompressed
- Features: MDC, Keyserver no-modify
-
-gpg></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The Digest line should list SHA-512 first and SHA-1 last. If it doesn’t, use the "setpref" command:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Finally, remember to take a backup of your key and the keyring (ie, backup the <code>.gnupg</code> directory and its contents).</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_subkey_generation">Subkey Generation</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It’s recommended to use a subkey with an expiry date to sign releases, rather than your main, non-expiring key. If a subkey is present, then gpg will use it for signing in preference to the main key.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>After (binary) release artifacts are created, they are deployed to the ASF’s Nexus staging repository. However, Nexus seems unable to retrieve a subkey from the public key server. Until we find a fix/workaround for this, all releases should be signed just with a regular non-expiring main key.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>To create a subkey Enter the gpg shell using (the identifier of) your main key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg --edit-key xxxxxxxx
-gpg></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Type 'addkey' to create a subkey, and enter your passphrase for the main key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>gpg> addkey
-Key is protected.
-[enter your secret passphrase]
-
-You need a passphrase to unlock the secret key for
-user: "Dan Haywood (CODE SIGNING KEY) <danhaywood@apache.org>"
-4096-bit RSA key, ID xxxxxxxx, created 2011-02-01
-
-Please select what kind of key you want:
- (3) DSA (sign only)
- (4) RSA (sign only)
- (5) Elgamal (encrypt only)
- (6) RSA (encrypt only)
-Your selection?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Select (6) to choose an RSA key for encryption:</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>It would seem that Nexus repository manager does not recognize RSA subkeys with an 'S’ign usage; see this discussion on a mailing list and this issue on Sonatype’s JIRA</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Your selection? 6
-
-RSA keys may be between 1024 and 4096 bits long.
-What keysize do you want? (2048) 4096
-
-Requested keysize is 4096 bits
-
-Please specify how long the key should be valid.
- 0 = key does not expire
- <n> = key expires in n days
- <n>w = key expires in n weeks
- <n>m = key expires in n months
- <n>y = key expires in n years
-Key is valid for?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify that the key is valid for 1 year:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Key is valid for? (0) 1y
-
-Key expires at yy/MM/dd hh:mm:ss
-Is this correct? (y/N) y
-Really create? (y/N) y
-We need to generate a lot of random bytes. It is a good idea to perform
-some other action (type on the keyboard, move the mouse, utilize the
-disks) during the prime generation; this gives the random number
-generator a better chance to gain enough entropy.
-...+++++
-.+++++
-
-pub 4096R/xxxxxxxx created: yyyy-mm-dd expires: never usage: SC
- trust: ultimate validity: ultimate
-sub 4096R/xxxxxxxx created: yyyy-mm-dd expires: yyYY-mm-dd usage: E
-[ultimate] (1). Dan Haywood (CODE SIGNING KEY) <danhaywood@apache.org>
-
-gpg></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Quit the gpg shell; you now have a subkey.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_generate_a_revocation_certificate">Generate a Revocation Certificate</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It’s good practice to generate a number of revocation certificates so that the key can be revoked if it happens to be compromised. See the <a href="http://www.apache.org/dev/openpgp.html#revocation-certs">gpg page</a> on the Apache wiki for more background on this topic.</p>
-</div>
-<div class="paragraph">
-<p>First, generate a "no reason specified" key:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --output revoke-nnnnnnnn-0.asc --armor --gen-revoke nnnnnnnn
-
-sec 4096R/nnnnnnnn yyyy-mm-dd Xxx Xxxxxxx (CODE SIGNING KEY) <xx@apache.org>
-Create a revocation certificate for this key? (y/N) Y
-
-Please select the reason for the revocation:
- 0 = No reason specified
- 1 = Key has been compromised
- 2 = Key is superseded
- 3 = Key is no longer used
- Q = Cancel
-(Probably you want to select 1 here)
-Your decision?</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Select 0.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Your decision? 0
+ http://www.apache.org/licenses/LICENSE-2.0
-Enter an optional description; end it with an empty line:</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Provide a description:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>> Generic certificate to revoke key, generated at time of key creation.
->
-Reason for revocation: No reason specified
-Generic certificate to revoke key, generated at time of key creation.
-Is this okay? (y/N)</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm this is ok.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>Is this okay? y
+ 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.
+ -->
-You need a passphrase to unlock the secret key for
-user: "Xxx Xxxxxxx (CODE SIGNING KEY) <xxx@apache.org>"
-4096-bit RSA key, ID nnnnnnnn, created yyyy-mm-dd
+ <!-- No caching headers -->
+ <meta http-equiv="cache-control" content="no-cache" />
+ <meta http-equiv="pragma" content="no-cache" />
+ <meta http-equiv="expires" content="-1" />
-Enter passphrase:
-</pre>
-Enter a passphrase:
+ <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line -->
+ <link href="./css/foundation/5.5.1/foundation.css" rel="stylesheet" />
+ <script src="./js/foundation/5.5.1/vendor/modernizr.js"></script>
+ <link href="./css/asciidoctor/colony.css" rel="stylesheet">
+ <link href="./css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
-<pre>
-Enter passphrase:
-Revocation certificate created.
-Please move it to a medium which you can hide away; if Mallory gets
-access to this certificate he can use it to make your key unusable.
-It is smart to print this certificate and store it away, just in case
-your media become unreadable. But have some caution: The print system of
-your machine might store the data and make it available to others!</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The file <code>revoke-nnnnnnnn-0.asc</code> should be created: Then, backup this file.</p>
-</div>
-<div class="paragraph">
-<p>Now repeat the process to create two further revocation certificates:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">gpg --output revoke-nnnnnnnn-1.asc --armor --gen-revoke nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify reason as "1 = Key has been compromised"</p>
-</div>
-<div class="paragraph">
-<p>and:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">gpg --output revoke-nnnnnnnn-3.asc --armor --gen-revoke nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Specify reason as "3 = Key is no longer used"</p>
-</div>
-<div class="paragraph">
-<p>Backup these files also.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_publish_key">Publish Key</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>It is also necessary to publish your key. There are several places where this should be done. In most cases, you’ll need the "armored" " (ie ASCII) representation of your key. This can be generated using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --armor --export nnnnnnnn > nnnnnnnn.asc</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>nnnnnnnn</code> is the id of your public key.</p>
-</div>
-<div class="paragraph">
-<p>You’ll also need the fingerprint of your key. This can be generated using:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --fingerprint nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The output from this command includes a line beginning "Key fingerprint", followed by a (space delimited) 40 character hexadecimal fingerprint. The last 8 characters should be the same as the key id (<code>nnnnnnnn</code>).</p>
-</div>
-<div class="sect2">
-<h3 id="_publish_to_a_public_key_server">Publish to a public key server</h3>
-<div class="paragraph">
-<p>To a publish your key to a public key server (eg the MIT key server hosted at <a href="http://pgp.mit.edu">http://pgp.mit.edu</a>), use the procedure below. Public key servers synchronize with each other, so publishing to one key server should be sufficient. For background reading on this, see the <a href="http://www.apache.org/dev/release-signing.html#keyserver-upload">release signing page</a> on the Apache wiki, and the <a href="http://maven.apache.org/developers/release/pmc-gpg-keys.html">gpg key page</a> on the Maven wiki.</p>
-</div>
-<div class="paragraph">
-<p>To send the key up to the key server:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>$ gpg --send-keys --keyserver pgp.mit.edu nnnnnnnn</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>nnnnnnnn</code> is the key Id.</p>
-</div>
-<div class="paragraph">
-<p>Alternatively, you can browse to the <a href="http://pgp.mit.edu/">MIT key server</a> and paste in the armored representation of your key.</p>
-</div>
-<div class="paragraph">
-<p>Confirm the key has been added by browsing to submitting the following URL:</p>
-</div>
-<div class="paragraph">
-<p><code><a href="http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&op=vindex" class="bare">http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&op=vindex</a></code></p>
-</div>
-<div class="paragraph">
-<p>again, where <code>nnnnnnnn</code> is the key Id.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_publish_to_your_apache_home_directory">Publish to your Apache home directory</h3>
-<div class="paragraph">
-<p>The armored representation of your public key should be uploaded to your home directory on <code>people.apache.org</code>, and renamed as <code>.pgpkey</code>. Make sure this is readable by all.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_publish_to_your_apache_html_home_directory">Publish to your Apache HTML home directory</h3>
-<div class="paragraph">
-<p>The armored representation of your public key should be uploaded to your <code>public_html</code> home directory on <code>people.apache.org</code>, named <code>nnnnnnnn.asc</code>. Make sure this is readable by all.</p>
-</div>
-<div class="paragraph">
-<p>Check the file is accessible by browsing to:</p>
-</div>
-<div class="paragraph">
-<p><code><a href="http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc" class="bare">http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc</a></code></p>
-</div>
-<div class="paragraph">
-<p>where</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>xxxxxxxx</code> is your apache LDAP user name</p>
-</li>
-<li>
-<p><code>nnnnnnnn</code> is your public key id.</p>
-</li>
-</ul>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_foaf">FOAF</h3>
-<div class="paragraph">
-<p>First, check out the committers/info directory:</p>
+
+
+ <link href="./css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet" />
+ <!--[if lt IE 9]>
+ <link href="./css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.ie.css" rel="stylesheet" />
+ <![endif]-->
+
+
+ <style type="text/css">
+ /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
+/*pre.CodeRay {background-color:#f7f7f8;}*/
+.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
+.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
+.CodeRay .line-numbers strong{font-weight: normal}
+table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
+table.CodeRay td{vertical-align: top}
+table.CodeRay td.line-numbers{text-align:right}
+table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
+table.CodeRay td.code{padding:0 0 0 .5em}
+table.CodeRay td.code>pre{padding:0}
+.CodeRay .debug{color:#fff !important;background:#000080 !important}
+.CodeRay .annotation{color:#007}
+.CodeRay .attribute-name{color:#000080}
+.CodeRay .attribute-value{color:#700}
+.CodeRay .binary{color:#509}
+.CodeRay .comment{color:#998;font-style:italic}
+.CodeRay .char{color:#04d}
+.CodeRay .char .content{color:#04d}
+.CodeRay .char .delimiter{color:#039}
+.CodeRay .class{color:#458;font-weight:bold}
+.CodeRay .complex{color:#a08}
+.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
+.CodeRay .color{color:#099}
+.CodeRay .class-variable{color:#369}
+.CodeRay .decorator{color:#b0b}
+.CodeRay .definition{color:#099}
+.CodeRay .delimiter{color:#000}
+.CodeRay .doc{color:#970}
+.CodeRay .doctype{color:#34b}
+.CodeRay .doc-string{color:#d42}
+.CodeRay .escape{color:#666}
+.CodeRay .entity{color:#800}
+.CodeRay .error{color:#808}
+.CodeRay .exception{color:inherit}
+.CodeRay .filename{color:#099}
+.CodeRay .function{color:#900;font-weight:bold}
+.CodeRay .global-variable{color:#008080}
+.CodeRay .hex{color:#058}
+.CodeRay .integer,.CodeRay .float{color:#099}
+.CodeRay .include{color:#555}
+.CodeRay .inline{color:#00}
+.CodeRay .inline .inline{background:#ccc}
+.CodeRay .inline .inline .inline{background:#bbb}
+.CodeRay .inline .inline-delimiter{color:#d14}
+.CodeRay .inline-delimiter{color:#d14}
+.CodeRay .important{color:#555;font-weight:bold}
+.CodeRay .interpreted{color:#b2b}
+.CodeRay .instance-variable{color:#008080}
+.CodeRay .label{color:#970}
+.CodeRay .local-variable{color:#963}
+.CodeRay .octal{color:#40e}
+.CodeRay .predefined{color:#369}
+.CodeRay .preprocessor{color:#579}
+.CodeRay .pseudo-class{color:#555}
+.CodeRay .directive{font-weight:bold}
+.CodeRay .type{font-weight:bold}
+.CodeRay .predefined-type{color:inherit}
+.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
+.CodeRay .key{color:#808}
+.CodeRay .key .delimiter{color:#606}
+.CodeRay .key .char{color:#80f}
+.CodeRay .value{color:#088}
+.CodeRay .regexp .delimiter{color:#808}
+.CodeRay .regexp .content{color:#808}
+.CodeRay .regexp .modifier{color:#808}
+.CodeRay .regexp .char{color:#d14}
+.CodeRay .regexp .function{color:#404;font-weight:bold}
+.CodeRay .string{color:#d20}
+.CodeRay .string .string .string{background:#ffd0d0}
+.CodeRay .string .content{color:#d14}
+.CodeRay .string .char{color:#d14}
+.CodeRay .string .delimiter{color:#d14}
+.CodeRay .shell{color:#d14}
+.CodeRay .shell .delimiter{color:#d14}
+.CodeRay .symbol{color:#990073}
+.CodeRay .symbol .content{color:#a60}
+.CodeRay .symbol .delimiter{color:#630}
+.CodeRay .tag{color:#008080}
+.CodeRay .tag-special{color:#d70}
+.CodeRay .variable{color:#036}
+.CodeRay .insert{background:#afa}
+.CodeRay .delete{background:#faa}
+.CodeRay .change{color:#aaf;background:#007}
+.CodeRay .head{color:#f8f;background:#505}
+.CodeRay .insert .insert{color:#080}
+.CodeRay .delete .delete{color:#800}
+.CodeRay .change .change{color:#66f}
+.CodeRay .head .head{color:#f4f}
+
+ pre.CodeRay code {
+ background-color: inherit;
+ border-style: none;
+ }
+
+ pre.CodeRay code > span:first-child {
+ margin-left: -5px;
+ }
+
+ .literalblock pre,
+ .listingblock pre:not(.highlight),
+ .listingblock pre[class="highlight"],
+ .listingblock pre[class^="highlight "],
+ .listingblock pre.CodeRay,
+ .listingblock pre.prettyprint {
+ background: rgb(253, 250, 246);
+ }
+ .sidebarblock .literalblock pre,
+ .sidebarblock .listingblock pre:not(.highlight),
+ .sidebarblock .listingblock pre[class="highlight"],
+ .sidebarblock .listingblock pre[class^="highlight "],
+ .sidebarblock .listingblock pre.CodeRay,
+ .sidebarblock .listingblock pre.prettyprint {
+ background: rgb(253, 250, 246);
+ }
+
+ <style>
+
+ <style>
+ .github-fork-ribbon-wrapper.right {
+ position: fixed;
+ }
+ .github-fork-ribbon {
+ background: #090;
+ }
+ .github-fork-ribbon a:hover {
+ background:#0D0;
+ color:#fff;
+ font-size: 1.1em;
+ }
+ </style>
+
+ <style>
+ @media only screen and (min-width: 40.063em) {
+ .top-bar {
+ .contain-to-grid .top-bar {
+ max-width: 80rem;
+ }
+ }
+ }
+ .row {
+ max-width: 80rem;
+ }
+ </style>
+
+ <style>
+ .extended-quote,
+ .extended-quote-first {
+ margin-left: 40px;
+ margin-right: 40px;
+ font-style: italic;
+ }
+ .extended-quote-attribution {
+ text-align: right;
+ margin-right: 100px;
+ color: #10B061;
+ }
+
+ .extended-quote-first:before {
+ content: "\201c";
+ float: left;
+ font-size: 2.75em;
+ font-weight: bold;
+ line-height: 0.6em;
+ margin-left: -0.6em;
+ color: #003b6b;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
+ }
+ </style>
+
+ <style>
+ body {
+ position: relative;
+ }
+
+ *:not(pre) a > code {
+ color: #210DDC;
+ }
+
+ *:not(pre) > code {
+ background-color: inherit;
+ border: none;
+ font-weight: normal;
+ }
+
+ body div#toc li,
+ body div#toc2 li {
+ list-style-type: none;
+ }
+
+ div#doc-content {
+ margin-top: 30px;
+ }
+
+ body div#toc li.active-region:before,
+ body div#toc2 li.active-region:before {
+ content: "\00BB \0020";
+ margin-left: -12px;
+ }
+
+ body div#toc li a.active,
+ body div#toc2 li a.active {
+ color: red;
+ }
+
+ body div#toc.toc,
+ body div#toc.toc2 {
+ position: fixed;
+ left: auto;
+ padding-top: 60px;
+ z-index: auto;
+ background-color: white;
+ border-left-color: #eee;
+ border-left-style: solid;
+ border-right: none;
+ min-height: 2000px;
+ }
+
+ </style>
+
+ <style>
+
+ @media only screen and (min-width: 768px) {
+ #toc.toc2 ul ul { margin-left: -10px; }
+ }
+
+
+ body div#toc .tocify-subheader ul {
+ margin-bottom: 0px;
+ }
+
+ body div#toc .tocify-subheader li {
+ font-size: 14px;
+ }
+ .tocify li.tocify-item, .tocify ul.tocify-item {
+ line-height: 24px;
+ }
+
+ body div#toc li.tocify-item.active:before,
+ body div#toc2 li.tocify-item.active:before {
+ content: "\00BB \0020";
+ margin-left: -12px;
+ }
+
+ body div#toc li.tocify-item.active a,
+ body div#toc2 li.tocify-item.active a {
+ color: red;
+ }
+ </style>
+
+ <style>
+ footer {
+ margin-top: 1000px;
+ }
+ </style>
+
+ <style>
+ /* overriding colony.css stylesheet */
+ .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] {
+ /*padding: 1.25em 1.5625em 1.125em 1.5625em;*/
+ padding: 0.3em 0.6em 0.25em 0.6em;
+ }
+ @media only screen and (min-width: 1280px)
+ #toc.toc2 {
+ /*width: 20em;*/
+ width: 25em;
+ }
+
+ #doc-content a {
+ color: #210DDC;
+ }
+
+ .top-bar h1 {
+ border-bottom: inherit;
+ }
+
+ h2 {
+ margin-top: 80px;
+ }
+ h3 {
+ margin-top: 40px;
+ }
+ h4,h5 {
+ margin-top: 30px;
+ }
+
+ .admonitionblock.tip > table td.content {
+ color: #10B061;
+ }
+ .admonitionblock.note > table td.content {
+ color: #B509AB;
+ }
+ .admonitionblock.important > table td.content {
+ color: #D5810A;
+ }
+
+ .admonitionblock .title {
+ font-size: larger;
+ font-style: italic;
+ }
+
+ .imageblock img {
+ margin-bottom: 10px;
+ }
+ </style>
+
+ <style>
+ /* from http://ben.balter.com/2014/03/13/pages-anchor-links/ */
+ .header-link {
+ position: absolute;
+ left: -0.5em;
+ opacity: 0;
+
+ /*
+ -webkit-transition: opacity 0.2s ease-in-out 0.1s;
+ -moz-transition: opacity 0.2s ease-in-out 0.1s;
+ -ms-transition: opacity 0.2s ease-in-out 0.1s;
+ */
+ }
+
+ h2:hover .header-link,
+ h3:hover .header-link,
+ h4:hover .header-link,
+ h5:hover .header-link,
+ h6:hover .header-link {
+ opacity: 1;
+ }
+ </style>
+
+ <style>
+ .top-bar
+ {
+ -webkit-transition-duration: .5s;
+ transition-duration: .5s;
+
+ -webkit-transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
+ transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
+
+ -webkit-transition-property: -webkit-transform;
+ transition-property: transform;
+ }
+
+ /*
+ http://osvaldas.info/auto-hide-sticky-header
+ MIT license
+ */
+ .header--hidden
+ {
+ -webkit-transform: translateY( -100% );
+ -ms-transform: translateY( -100% );
+ transform: translateY( -100% );
+
+ transition-duration: .5s;
+ transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
+ -webkit-transition-property: -webkit-transform;
+ transition-property: transform;
+ }
+ </style>
+
+ <style>
+ #doc-content a.guide {
+ color: white;
+ }
+ </style>
+
+ <style>
+ .tocify {
+ margin-top: 80px;
+ }
+ </style>
+
+
+</script>
+
+</head>
+<body>
+
+<<div class="github-fork-ribbon-wrapper right" style="position: fixed;">
+ <div class="github-fork-ribbon">
+ <a href="https://github.com/apache/isis/fork">Fork me on GitHub</a>
+ </div>
</div>
-<div class="paragraph">
-<p>Go to Apache <a href="http://people.apache.org/foaf/foafamatic.html">FOAF-a-matic</a> web page to generate the FOAF file text (we copy this text out in a minute):</p>
+
+
+<div class="row">
+
+ <div class="fixed contain-to-grid header">
+ <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem">
+ <ul class="title-area">
+ <li class="name">
+ <h1>
+ <a href="/index.html">Apache Isis™</a>
+ </h1>
+ </li>
+ <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
+ <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
+ </ul>
+
+ <section class="top-bar-section">
+ <ul class="right">
+
+ <li class="has-form">
+ <FORM class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
+ <div class="row collapse">
+ <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
+ <INPUT type="hidden" name="cof" value="FORID:0">
+ <INPUT class="form-control" name="q" type="text" placeholder="Search">
+ </div>
+ </FORM>
+ </li>
+
+ </ul>
+
+ <!-- Left Nav Section -->
+ <ul class="left">
+
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/downloads.html">Downloads</a></li>
+ <li><a href="/help.html">Help</a></li>
+ <li><a href="/asf.html">@ASF</a></li>
+
+ </ul>
+
+ </section>
+ </nav>
+ </div>
</div>
-<div class="ulist">
-<ul>
-<li>
-<p>enter ASF LDAP user name</p>
-</li>
-<li>
-<p>enter First name, Last name</p>
-</li>
-<li>
-<p>for PGP key fingerprints, add Key</p>
-</li>
-<li>
-<p>paste in the key id</p>
-</li>
-<li>
-<p>paste in the fingerprint</p>
-</li>
-<li>
-<p>press "Create"</p>
-</li>
+
+<div class="row">
+
+ <div id="doc-content-left" class="large-9 medium-9 columns">
+
+
+ <div id="doc-content">
+ <div id="preamble">
+<div class="sectionbody">
+<div class="paragraph">
+<p><br/><br/></p>
+</div>
+<div class="paragraph">
+<p>In order that a contributor can make a release it is necessary for them to have generated a key and had that key recognized by other members of the Apache Software Foundation.</p>
+</div>
+<div class="paragraph">
+<p>For further background information on this topic, see the <a href="http://www.apache.org/dev/release-signing.html">release signing page</a> and the <a href="http://www.apache.org/dev/openpgp.html#generate-key">openpgp page</a> on the Apache wiki.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_install_and_configure_gpg">Install and Configure gpg</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Download and install GnuPG (gpg), version 1.4.10 or higher.</p>
+</div>
+<div class="paragraph">
+<p>Then, edit <code>~/.gnupg/gpg.conf</code> (on Windows, the file to edit is <code>C:\Users\xxx\AppData\Roaming\gnupg\gpg.conf</code>) so that the default is to generate a strong key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">personal-digest-preferences SHA512
+cert-digest-algo SHA512
+default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_key_generation">Key Generation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Apache Software Foundation requires that keys are signed with a key (or subkey) based on RSA 4096 bits. To do this:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --gen-key
+gpg (GnuPG) 1.4.11; Copyright (C) 2010 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.
+
+Please select what kind of key you want:
+ (1) RSA and RSA (default)
+ (2) DSA and Elgamal
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+Your selection?</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Specify RSA key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Your selection? 1
+
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Specify key length as 4096 bits:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for? (0)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Specify key as non-expiring:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Key is valid for? (0) 0
+Key does not expire at all
+Is this correct? (y/N) y
+
+You need a user ID to identify your key; the software constructs the user ID
+from the Real Name, Comment and Email Address in this form:
+ "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
+
+Real name:</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Enter your name, email and comment:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>use your apache.org email</p>
+</li>
+<li>
+<p>the comment should be "CODE SIGNING KEY"</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Real name: Xxx Xxxxxxxxx
+Email address: <a href="mailto:xxx@apache.org">xxx@apache.org</a>
+Comment: CODE SIGNING KEY
+You selected this USER-ID:
+ "Xxx Xxxxxxxxx (CODE SIGNING KEY) <a href="mailto:xxx@apache.org">xxx@apache.org</a>"</p>
+</div>
+<div class="paragraph">
+<p>Change (N)ame, ©omment, (E)mail or (O)kay/(Q)uit? O</p>
+</div>
+<div class="paragraph">
+<p>You need a Passphrase to protect your secret key.
+Enter passphrase:</p>
+</div>
+<div class="paragraph">
+<p>Provide a passphrase to secure your key.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Enter passphrase:
+Repeat passphrase:</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>GPG will goes on to generate your key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+...+++++
+.........................+++++
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+....+++++
+...+++++
+gpg: key nnnnnnnn marked as ultimately trusted
+public and secret key created and signed.
+
+gpg: checking the trustdb
+gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
+gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
+pub 4096R/nnnnnnnn yyyy-mm-dd
+ Key fingerprint = xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
+uid Xxx Xxxxxx <xxx@apache.org>
+sub 4096R/kkkkkkkk yyyy-mm-dd</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The public key with id nnnnnnnn should now be stored in <code>~/.gnupg/pubring.pgp</code> (on Windows 7, this is in <code>c:/Users/xxx/AppData/Roaming/gnupg/pubring.pgp</code>).</p>
+</div>
+<div class="paragraph">
+<p>To confirm the key has been generated, use:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --list-keys --fingerprint</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The key Id is the one true way to identify the key, and is also the last 8 digits of the fingerprint. The corresponding secret key for id <code>nnnnnnnn</code> is stored in <code>~/.gnupg/secring.pgp</code> (on Windows 7, this is in <code>c:/Users/xxx/AppData/Roaming/gnupg/secring.pgp</code>).</p>
+</div>
+<div class="paragraph">
+<p>It’s also worth confirming the key has the correct preference of algorithms (reflecting the initial configuration we did earlier). For this, enter the gpg shell for your new key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --edit-key nnnnnnnnn
+>gpg</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where <code>nnnnnnnn</code> is your key id. Now, use the 'showpref' subcommand to list details:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>gpg> showpref
+[ultimate] (1). Xxx Xxxxxxxx (CODE SIGNING KEY) <xxx@apache.org>
+ Cipher: AES256, AES192, AES, CAST5, 3DES
+ Digest: SHA512, SHA384, SHA256, SHA224, SHA1
+ Compression: ZLIB, BZIP2, ZIP, Uncompressed
+ Features: MDC, Keyserver no-modify
+
+gpg></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The Digest line should list SHA-512 first and SHA-1 last. If it doesn’t, use the "setpref" command:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Finally, remember to take a backup of your key and the keyring (ie, backup the <code>.gnupg</code> directory and its contents).</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_subkey_generation">Subkey Generation</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>It’s recommended to use a subkey with an expiry date to sign releases, rather than your main, non-expiring key. If a subkey is present, then gpg will use it for signing in preference to the main key.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>After (binary) release artifacts are created, they are deployed to the ASF’s Nexus staging repository. However, Nexus seems unable to retrieve a subkey from the public key server. Until we find a fix/workaround for this, all releases should be signed just with a regular non-expiring main key.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To create a subkey Enter the gpg shell using (the identifier of) your main key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>gpg --edit-key xxxxxxxx
+gpg></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Type 'addkey' to create a subkey, and enter your passphrase for the main key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>gpg> addkey
+Key is protected.
+[enter your secret passphrase]
+
+You need a passphrase to unlock the secret key for
+user: "Dan Haywood (CODE SIGNING KEY) <danhaywood@apache.org>"
+4096-bit RSA key, ID xxxxxxxx, created 2011-02-01
+
+Please select what kind of key you want:
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+ (5) Elgamal (encrypt only)
+ (6) RSA (encrypt only)
+Your selection?</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Select (6) to choose an RSA key for encryption:</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>It would seem that Nexus repository manager does not recognize RSA subkeys with an 'S’ign usage; see this discussion on a mailing list and this issue on Sonatype’s JIRA</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Your selection? 6
+
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+
+Requested keysize is 4096 bits
+
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for?</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Specify that the key is valid for 1 year:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Key is valid for? (0) 1y
+
+Key expires at yy/MM/dd hh:mm:ss
+Is this correct? (y/N) y
+Really create? (y/N) y
+We need to generate a lot of random bytes. It is a good idea to perform
+some other action (type on the keyboard, move the mouse, utilize the
+disks) during the prime generation; this gives the random number
+generator a better chance to gain enough entropy.
+...+++++
+.+++++
+
+pub 4096R/xxxxxxxx created: yyyy-mm-dd expires: never usage: SC
+ trust: ultimate validity: ultimate
+sub 4096R/xxxxxxxx created: yyyy-mm-dd expires: yyYY-mm-dd usage: E
+[ultimate] (1). Dan Haywood (CODE SIGNING KEY) <danhaywood@apache.org>
+
+gpg></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Quit the gpg shell; you now have a subkey.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_generate_a_revocation_certificate">Generate a Revocation Certificate</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>It’s good practice to generate a number of revocation certificates so that the key can be revoked if it happens to be compromised. See the <a href="http://www.apache.org/dev/openpgp.html#revocation-certs">gpg page</a> on the Apache wiki for more background on this topic.</p>
+</div>
+<div class="paragraph">
+<p>First, generate a "no reason specified" key:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --output revoke-nnnnnnnn-0.asc --armor --gen-revoke nnnnnnnn
+
+sec 4096R/nnnnnnnn yyyy-mm-dd Xxx Xxxxxxx (CODE SIGNING KEY) <xx@apache.org>
+Create a revocation certificate for this key? (y/N) Y
+
+Please select the reason for the revocation:
+ 0 = No reason specified
+ 1 = Key has been compromised
+ 2 = Key is superseded
+ 3 = Key is no longer used
+ Q = Cancel
+(Probably you want to select 1 here)
+Your decision?</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Select 0.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Your decision? 0
+
+Enter an optional description; end it with an empty line:</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Provide a description:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>> Generic certificate to revoke key, generated at time of key creation.
+>
+Reason for revocation: No reason specified
+Generic certificate to revoke key, generated at time of key creation.
+Is this okay? (y/N)</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Confirm this is ok.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>Is this okay? y
+
+You need a passphrase to unlock the secret key for
+user: "Xxx Xxxxxxx (CODE SIGNING KEY) <xxx@apache.org>"
+4096-bit RSA key, ID nnnnnnnn, created yyyy-mm-dd
+
+Enter passphrase:
+</pre>
+
+Enter a passphrase:
+
+<pre>
+Enter passphrase:
+Revocation certificate created.
+
+Please move it to a medium which you can hide away; if Mallory gets
+access to this certificate he can use it to make your key unusable.
+It is smart to print this certificate and store it away, just in case
+your media become unreadable. But have some caution: The print system of
+your machine might store the data and make it available to others!</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The file <code>revoke-nnnnnnnn-0.asc</code> should be created: Then, backup this file.</p>
+</div>
+<div class="paragraph">
+<p>Now repeat the process to create two further revocation certificates:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">gpg --output revoke-nnnnnnnn-1.asc --armor --gen-revoke nnnnnnnn</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Specify reason as "1 = Key has been compromised"</p>
+</div>
+<div class="paragraph">
+<p>and:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="bash">gpg --output revoke-nnnnnnnn-3.asc --armor --gen-revoke nnnnnnnn</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Specify reason as "3 = Key is no longer used"</p>
+</div>
+<div class="paragraph">
+<p>Backup these files also.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_publish_key">Publish Key</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>It is also necessary to publish your key. There are several places where this should be done. In most cases, you’ll need the "armored" " (ie ASCII) representation of your key. This can be generated using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --armor --export nnnnnnnn > nnnnnnnn.asc</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where <code>nnnnnnnn</code> is the id of your public key.</p>
+</div>
+<div class="paragraph">
+<p>You’ll also need the fingerprint of your key. This can be generated using:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --fingerprint nnnnnnnn</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output from this command includes a line beginning "Key fingerprint", followed by a (space delimited) 40 character hexadecimal fingerprint. The last 8 characters should be the same as the key id (<code>nnnnnnnn</code>).</p>
+</div>
+<div class="sect2">
+<h3 id="_publish_to_a_public_key_server">Publish to a public key server</h3>
+<div class="paragraph">
+<p>To a publish your key to a public key server (eg the MIT key server hosted at <a href="http://pgp.mit.edu">http://pgp.mit.edu</a>), use the procedure below. Public key servers synchronize with each other, so publishing to one key server should be sufficient. For background reading on this, see the <a href="http://www.apache.org/dev/release-signing.html#keyserver-upload">release signing page</a> on the Apache wiki, and the <a href="http://maven.apache.org/developers/release/pmc-gpg-keys.html">gpg key page</a> on the Maven wiki.</p>
+</div>
+<div class="paragraph">
+<p>To send the key up to the key server:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>$ gpg --send-keys --keyserver pgp.mit.edu nnnnnnnn</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>where <code>nnnnnnnn</code> is the key Id.</p>
+</div>
+<div class="paragraph">
+<p>Alternatively, you can browse to the <a href="http://pgp.mit.edu/">MIT key server</a> and paste in the armored representation of your key.</p>
+</div>
+<div class="paragraph">
+<p>Confirm the key has been added by browsing to submitting the following URL:</p>
+</div>
+<div class="paragraph">
+<p><code><a href="http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&op=vindex" class="bare">http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&op=vindex</a></code></p>
+</div>
+<div class="paragraph">
+<p>again, where <code>nnnnnnnn</code> is the key Id.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_publish_to_your_apache_home_directory">Publish to your Apache home directory</h3>
+<div class="paragraph">
+<p>The armored representation of your public key should be uploaded to your home directory on <code>people.apache.org</code>, and renamed as <code>.pgpkey</code>. Make sure this is readable by all.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_publish_to_your_apache_html_home_directory">Publish to your Apache HTML home directory</h3>
+<div class="paragraph">
+<p>The armored representation of your public key should be uploaded to your <code>public_html</code> home directory on <code>people.apache.org</code>, named <code>nnnnnnnn.asc</code>. Make sure this is readable by all.</p>
+</div>
+<div class="paragraph">
+<p>Check the file is accessible by browsing to:</p>
+</div>
+<div class="paragraph">
+<p><code><a href="http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc" class="bare">http://people.apache.org/~xxxxxxxx/nnnnnnnn.asc</a></code></p>
+</div>
+<div class="paragraph">
+<p>where</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p><code>xxxxxxxx</code> is your apache LDAP user name</p>
+</li>
+<li>
+<p><code>nnnnnnnn</code> is your public key id.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_foaf">FOAF</h3>
+<div class="paragraph">
+<p>First, check out the committers/info directory:</p>
+</div>
+<div class="paragraph">
+<p>Go to Apache <a href="http://people.apache.org/foaf/foafamatic.html">FOAF-a-matic</a> web page to generate the FOAF file text (we copy this text out in a minute):</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>enter ASF LDAP user name</p>
+</li>
+<li>
+<p>enter First name, Last name</p>
+</li>
+<li>
+<p>for PGP key fingerprints, add Key</p>
+</li>
+<li>
+<p>paste in the key id</p>
+</li>
+<li>
+<p>paste in the fingerprint</p>
+</li>
+<li>
+<p>press "Create"</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>In the box below, you should have a FOAF file, something like:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor"><?xml version="1.0" encoding="UTF-8"?></span>
+<span class="tag"><rdf:RDF</span>
+ <span class="attribute-name">xmlns:rdf</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:rdfs</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2000/01/rdf-schema#</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:foaf</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://xmlns.com/foaf/0.1/</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:geo</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2003/01/geo/wgs84_pos#</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:pm</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.web-semantics.org/ns/pm#</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:wot</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://xmlns.com/wot/0.1/</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:rss</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://purl.org/rss/1.0/</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:dc</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://purl.org/dc/elements/1.1/</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:ical</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2002/12/cal/ical#</span><span class="delimiter">"</span></span>
+ <span class="attribute-name">xmlns:doap</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://usefulinc.com/ns/doap#</span><span class="delimiter">"</span></span><span class="tag">></span>
+ <span class="tag"><foaf:Person</span> <span class="attribute-name">rdf:ID</span>=<span class="string"><span class="delimiter">"</span><span class="content">danhaywood</span><span class="delimiter">"</span></span><span class="tag">></span>
+ <span class="tag"><foaf:name></span>Xxx Xxxxxxxx<span class="tag"></foaf:name></span>
+ <span class="tag"><foaf:givenname></span>Xxx<span class="tag"></foaf:givenname></span>
+ <span class="tag"><foaf:family_name></span>Xxxxxxxx<span class="tag"></foaf:family_name></span>
+ <span class="tag"><wot:hasKey></span>
+ <span class="tag"><wot:PubKey></span>
+ <span class="tag"><wot:fingerprint></span>nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn<span class="tag"></wot:fingerprint></span>
+ <span class="tag"><wot:hex_id></span>nnnnnnnn<span class="tag"></wot:hex_id></span>
+ <span class="tag"></wot:PubKey></span>
+ <span class="tag"></wot:hasKey></span>
+ <span class="tag"></foaf:Person></span>
+<span class="tag"></rdf:RDF></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>(If you are creating the FOAF file for the first time, you may want to add additional details).</p>
+</div>
+<div class="paragraph">
+<p>From this, copy out the <code>wot:key</code>, and paste into your FDF file in <code>committers/info</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><wot:hasKey></span>
+ <span class="tag"><wot:PubKey></span>
+ <span class="tag"><wot:fingerprint></span>nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn<span class="tag"></wot:fingerprint></span>
+ <span class="tag"><wot:hex_id></span>nnnnnnnn<span class="tag"></wot:hex_id></span>
+ <span class="tag"></wot:PubKey></span>
+<span class="tag"></wot:hasKey></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, manually add in a <code><wot:pubkeyAddress></code> element within <code><wot:PubKey></code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><wot:hasKey></span>
+ <span class="tag"><wot:PubKey></span>
+ <span class="tag"><wot:fingerprint></span>nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn<span class="tag"></wot:fingerprint></span>
+ <span class="tag"><wot:hex_id></span>nnnnnnnn<span class="tag"></wot:hex_id></span>
+ <span class="tag"><wot:pubkeyAddress</span> <span class="attribute-name">rdf:resource</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://people.apache.org/~username/nnnnnnnn.asc/</span><span class="delimiter">"</span></span><span class="tag">></span>
+ <span class="tag"></wot:PubKey></span>
+<span class="tag"></wot:hasKey></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>ie, referencing your publically exported public key</p>
+</div>
+<div class="paragraph">
+<p>Finally, commit your changes.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_save_to_code_keys_code">Save to <code>KEYS</code></h3>
+<div class="paragraph">
+<p>The armored representation of the public key should be saved to Isis' <code>KEYS</code> file, <a href="http://www.apache.org/dist/isis/KEYS">http://www.apache.org/dist/isis/KEYS</a> (that is, in the ASF distribution directory for Isis).</p>
+</div>
+<div class="paragraph">
+<p>First, in a new directory, checkout this file:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>svn -N co https://svn.apache.org/repos/asf/isis/ .</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>This should bring down the <code>KEYS</code> file.</p>
+</div>
+<div class="paragraph">
+<p>Then, export your signature and armored representation.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code>gpg --list-sigs nnnnnnnn >>KEYS
+gpg --armor --export nnnnnnnn >>KEYS</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then commit.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_id_apache_org">id.apache.org</h3>
+<div class="paragraph">
+<p>Log onto <code>id.apache.org</code> and ensure that the finger print of your public key is correct.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_attend_key_signing_party_apache_web_of_trust">Attend Key Signing Party (Apache web of trust)</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>It is strongly advised that the contributor attend a key signing party at an Apache event, in order that other Apache committers/members can in person verify their identity against the key. The process for this is described <a href="http://www.apache.org/dev/release-signing.html#key-signing-party">here</a> and <a href="http://wiki.apache.org/apachecon/PgpKeySigning">here</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_update_maven_settings_file_code_m2_settings_xml_code">Update Maven Settings file (<code>~/.m2/settings.xml</code>)</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The Maven release plugin will automatically sign the release, however it is necessary to update the <code>~/.m2/settings.xml</code> file with your GPG acronym passphrase in order that it can use your secret key. This is defined under a profile so that it is activated only when we perform a release (as defined by <code>[org,apache:apache]</code> parent POM.</p>
+</div>
+<div class="paragraph">
+<p>Therefore, make the following edits:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><settings></span>
+ ...
+ <span class="tag"><profiles></span>
+ <span class="tag"><profile></span>
+ <span class="tag"><id></span>apache-release<span class="tag"></id></span>
+ <span class="tag"><properties></span>
+ <span class="tag"><gpg.passphrase></span>xxx xxx xxx xxx xxx xxx xxx<span class="tag"></gpg.passphrase></span>
+ <span class="tag"></properties></span>
+ <span class="tag"></profile></span>
+ <span class="tag"></profiles></span>
+<span class="tag"></settings></span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>In addition, to allow the release plugin to tag SVN changes, you must either add in your LDAP username/password or configure <code>.ssh</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><settings></span>
+ ...
+ <span class="tag"><servers></span>
+ ...
+ <span class="tag"><server></span>
+ <span class="tag"><id></span>apache.releases.https<span class="tag"></id></span>
+ <span class="tag"><username></span>xxxx<span class="tag"></username></span>
+ <span class="tag"><password></span>xxxx<span class="tag"></password></span>
+ <span class="tag"></server></span>
+ <span class="tag"></servers></span>
+<span class="tag"></settings></span></code></pre>
+</div>
+</div>
+</div>
+</div>
+ </div>
+
+ <footer>
+ <hr>
+ <p class="small">
+ Copyright © 2010~2015 The Apache Software Foundation, licensed under the Apache License, v2.0.
+ <br/>
+ Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation.
+ </p>
+ </footer>
+
+ </div>
+
+ <div id="doc-content-right" class="large-3 medium-3 xcolumns">
+ <div id="toc" class="toc2">
+ <div class="fallback-toc">
+ <ul class="sectlevel1">
+<li><a href="#_install_and_configure_gpg">Install and Configure gpg</a></li>
+<li><a href="#_key_generation">Key Generation</a></li>
+<li><a href="#_subkey_generation">Subkey Generation</a></li>
+<li><a href="#_generate_a_revocation_certificate">Generate a Revocation Certificate</a></li>
+<li><a href="#_publish_key">Publish Key</a>
+<ul class="sectlevel2">
+<li><a href="#_publish_to_a_public_key_server">Publish to a public key server</a></li>
+<li><a href="#_publish_to_your_apache_home_directory">Publish to your Apache home directory</a></li>
+<li><a href="#_publish_to_your_apache_html_home_directory">Publish to your Apache HTML home directory</a></li>
+<li><a href="#_foaf">FOAF</a></li>
+<li><a href="#_save_to_code_keys_code">Save to <code>KEYS</code></a></li>
+<li><a href="#_id_apache_org">id.apache.org</a></li>
+</ul>
+</li>
+<li><a href="#_attend_key_signing_party_apache_web_of_trust">Attend Key Signing Party (Apache web of trust)</a></li>
+<li><a href="#_update_maven_settings_file_code_m2_settings_xml_code">Update Maven Settings file (<code>~/.m2/settings.xml</code>)</a></li>
</ul>
+ </div>
+ </div>
+ </div>
+
</div>
-<div class="paragraph">
-<p>In the box below, you should have a FOAF file, something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="preprocessor"><?xml version="1.0" encoding="UTF-8"?></span>
-<span class="tag"><rdf:RDF</span>
- <span class="attribute-name">xmlns:rdf</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:rdfs</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2000/01/rdf-schema#</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:foaf</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://xmlns.com/foaf/0.1/</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:geo</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2003/01/geo/wgs84_pos#</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:pm</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.web-semantics.org/ns/pm#</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:wot</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://xmlns.com/wot/0.1/</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:rss</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://purl.org/rss/1.0/</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:dc</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://purl.org/dc/elements/1.1/</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:ical</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://www.w3.org/2002/12/cal/ical#</span><span class="delimiter">"</span></span>
- <span class="attribute-name">xmlns:doap</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://usefulinc.com/ns/doap#</span><span class="delimiter">"</span></span><span class="tag">></span>
- <span class="tag"><foaf:Person</span> <span class="attribute-name">rdf:ID</span>=<span class="string"><span class="delimiter">"</span><span class="content">danhaywood</span><span class="delimiter">"</span></span><span class="tag">></span>
- <span class="tag"><foaf:name></span>Xxx Xxxxxxxx<span class="tag"></foaf:name></span>
- <span class="tag"><foaf:givenname></span>Xxx<span class="tag"></foaf:givenname></span>
- <span class="tag"><foaf:family_name></span>Xxxxxxxx<span class="tag"></foaf:family_name></span>
- <span class="tag"><wot:hasKey></span>
- <span class="tag"><wot:PubKey></span>
- <span class="tag"><wot:fingerprint></span>nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn<span class="tag"></wot:fingerprint></span>
- <span class="tag"><wot:hex_id></span>nnnnnnnn<span class="tag"></wot:hex_id></span>
- <span class="tag"></wot:PubKey></span>
- <span class="tag"></wot:hasKey></span>
- <span class="tag"></foaf:Person></span>
-<span class="tag"></rdf:RDF></span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>(If you are creating the FOAF file for the first time, you may want to add additional details).</p>
-</div>
-<div class="paragraph">
-<p>From this, copy out the <code>wot:key</code>, and paste into your FDF file in <code>committers/info</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><wot:hasKey></span>
- <span class="tag"><wot:PubKey></span>
- <span class="tag"><wot:fingerprint></span>nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn<span class="tag"></wot:fingerprint></span>
- <span class="tag"><wot:hex_id></span>nnnnnnnn<span class="tag"></wot:hex_id></span>
- <span class="tag"></wot:PubKey></span>
-<span class="tag"></wot:hasKey></span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, manually add in a <code><wot:pubkeyAddress></code> element within <code><wot:PubKey></code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag"><wot:hasKey></span>
- <span class="tag"><wot:PubKey></span>
- <span class="tag"><wot:fingerprint></span>nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn nnnn<span class="tag"></wot:fingerprint></span>
- <span class="tag"><wot:hex_id></span>nnnnnnnn<span class="tag"></wot:hex_id></span>
- <span class="tag"><wot:pubkeyAddress</span> <span class="attribute-name">rdf:resource</span>=<span class="string"><span class="delimiter">"</span><span class="content">http://people.apache.org/~username/nnnnnnnn.asc/</span><span class="delimiter">"</span></span><span class="tag">></span>
- <span class="tag">&l
<TRUNCATED>