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&trade;</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
-      &lt;n&gt;  = key expires in n days
-      &lt;n&gt;w = key expires in n weeks
-      &lt;n&gt;m = key expires in n months
-      &lt;n&gt;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) &lt;heinrichh@duesseldorf.de&gt;"
+    <!--
+        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:&#x78;&#120;&#120;&#64;&#97;&#x70;&#97;&#99;&#104;&#x65;&#46;&#111;&#x72;&#103;">&#x78;&#120;&#120;&#64;&#97;&#x70;&#97;&#99;&#104;&#x65;&#46;&#111;&#x72;&#103;</a>
-Comment: CODE SIGNING KEY
-You selected this USER-ID:
- "Xxx Xxxxxxxxx (CODE SIGNING KEY) <a href="mailto:&#x78;&#x78;&#x78;&#x40;&#97;&#x70;&#97;&#99;h&#101;&#x2e;&#x6f;r&#x67;">&#x78;&#x78;&#x78;&#x40;&#97;&#x70;&#97;&#99;h&#101;&#x2e;&#x6f;r&#x67;</a>"</p>
-</div>
-<div class="paragraph">
-<p>Change (N)ame, &#169;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 &lt;xxx@apache.org&gt;
-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&#8217;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
-&gt;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&gt; showpref
-[ultimate] (1). Xxx Xxxxxxxx (CODE SIGNING KEY) &lt;xxx@apache.org&gt;
-     Cipher: AES256, AES192, AES, CAST5, 3DES
-     Digest: SHA512, SHA384, SHA256, SHA224, SHA1
-     Compression: ZLIB, BZIP2, ZIP, Uncompressed
-     Features: MDC, Keyserver no-modify
-
-gpg&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The Digest line should list SHA-512 first and SHA-1 last. If it doesn&#8217;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&#8217;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&#8217;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&gt;</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&gt; addkey
-Key is protected.
-[enter your secret passphrase]
-
-You need a passphrase to unlock the secret key for
-user: "Dan Haywood (CODE SIGNING KEY) &lt;danhaywood@apache.org&gt;"
-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&#8217;ign usage; see this discussion on a mailing list and this issue on Sonatype&#8217;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
-      &lt;n&gt;  = key expires in n days
-      &lt;n&gt;w = key expires in n weeks
-      &lt;n&gt;m = key expires in n months
-      &lt;n&gt;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) &lt;danhaywood@apache.org&gt;
-
-gpg&gt;</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&#8217;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) &lt;xx@apache.org&gt;
-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>&gt; Generic certificate to revoke key, generated at time of key creation.
-&gt;
-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) &lt;xxx@apache.org&gt;"
-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:
-&lt;/pre&gt;
 
-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">
 
-&lt;pre&gt;
-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&#8217;ll need the "armored" &quot; (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 &gt; 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&#8217;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&amp;op=vindex" class="bare">http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&amp;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&trade;</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
+      &lt;n&gt;  = key expires in n days
+      &lt;n&gt;w = key expires in n weeks
+      &lt;n&gt;m = key expires in n months
+      &lt;n&gt;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) &lt;heinrichh@duesseldorf.de&gt;"
+
+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:&#x78;&#120;&#120;&#64;&#97;&#x70;&#97;&#99;&#104;&#x65;&#46;&#111;&#x72;&#103;">&#x78;&#120;&#120;&#64;&#97;&#x70;&#97;&#99;&#104;&#x65;&#46;&#111;&#x72;&#103;</a>
+Comment: CODE SIGNING KEY
+You selected this USER-ID:
+ "Xxx Xxxxxxxxx (CODE SIGNING KEY) <a href="mailto:&#x78;&#x78;&#x78;&#x40;&#97;&#x70;&#97;&#99;h&#101;&#x2e;&#x6f;r&#x67;">&#x78;&#x78;&#x78;&#x40;&#97;&#x70;&#97;&#99;h&#101;&#x2e;&#x6f;r&#x67;</a>"</p>
+</div>
+<div class="paragraph">
+<p>Change (N)ame, &#169;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 &lt;xxx@apache.org&gt;
+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&#8217;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
+&gt;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&gt; showpref
+[ultimate] (1). Xxx Xxxxxxxx (CODE SIGNING KEY) &lt;xxx@apache.org&gt;
+     Cipher: AES256, AES192, AES, CAST5, 3DES
+     Digest: SHA512, SHA384, SHA256, SHA224, SHA1
+     Compression: ZLIB, BZIP2, ZIP, Uncompressed
+     Features: MDC, Keyserver no-modify
+
+gpg&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The Digest line should list SHA-512 first and SHA-1 last. If it doesn&#8217;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&#8217;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&#8217;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&gt;</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&gt; addkey
+Key is protected.
+[enter your secret passphrase]
+
+You need a passphrase to unlock the secret key for
+user: "Dan Haywood (CODE SIGNING KEY) &lt;danhaywood@apache.org&gt;"
+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&#8217;ign usage; see this discussion on a mailing list and this issue on Sonatype&#8217;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
+      &lt;n&gt;  = key expires in n days
+      &lt;n&gt;w = key expires in n weeks
+      &lt;n&gt;m = key expires in n months
+      &lt;n&gt;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) &lt;danhaywood@apache.org&gt;
+
+gpg&gt;</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&#8217;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) &lt;xx@apache.org&gt;
+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>&gt; Generic certificate to revoke key, generated at time of key creation.
+&gt;
+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) &lt;xxx@apache.org&gt;"
+4096-bit RSA key, ID nnnnnnnn, created yyyy-mm-dd
+
+Enter passphrase:
+&lt;/pre&gt;
+
+Enter a passphrase:
+
+&lt;pre&gt;
+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&#8217;ll need the "armored" &quot; (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 &gt; 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&#8217;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&amp;op=vindex" class="bare">http://pgp.mit.edu:11371/pks/lookup?search=0xnnnnnnnnn&amp;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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="tag">&lt;rdf:RDF</span>
+      <span class="attribute-name">xmlns:rdf</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:rdfs</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2000/01/rdf-schema#</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:foaf</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.com/foaf/0.1/</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:geo</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2003/01/geo/wgs84_pos#</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:pm</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.web-semantics.org/ns/pm#</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:wot</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.com/wot/0.1/</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:rss</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://purl.org/rss/1.0/</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:dc</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://purl.org/dc/elements/1.1/</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:ical</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2002/12/cal/ical#</span><span class="delimiter">&quot;</span></span>
+      <span class="attribute-name">xmlns:doap</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://usefulinc.com/ns/doap#</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+  <span class="tag">&lt;foaf:Person</span> <span class="attribute-name">rdf:ID</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">danhaywood</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+    <span class="tag">&lt;foaf:name&gt;</span>Xxx Xxxxxxxx<span class="tag">&lt;/foaf:name&gt;</span>
+    <span class="tag">&lt;foaf:givenname&gt;</span>Xxx<span class="tag">&lt;/foaf:givenname&gt;</span>
+    <span class="tag">&lt;foaf:family_name&gt;</span>Xxxxxxxx<span class="tag">&lt;/foaf:family_name&gt;</span>
+    <span class="tag">&lt;wot:hasKey&gt;</span>
+      <span class="tag">&lt;wot:PubKey&gt;</span>
+        <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
+        <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
+      <span class="tag">&lt;/wot:PubKey&gt;</span>
+    <span class="tag">&lt;/wot:hasKey&gt;</span>
+  <span class="tag">&lt;/foaf:Person&gt;</span>
+<span class="tag">&lt;/rdf:RDF&gt;</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">&lt;wot:hasKey&gt;</span>
+  <span class="tag">&lt;wot:PubKey&gt;</span>
+    <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
+    <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
+  <span class="tag">&lt;/wot:PubKey&gt;</span>
+<span class="tag">&lt;/wot:hasKey&gt;</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, manually add in a <code>&lt;wot:pubkeyAddress&gt;</code> element within <code>&lt;wot:PubKey&gt;</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;wot:hasKey&gt;</span>
+  <span class="tag">&lt;wot:PubKey&gt;</span>
+    <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
+    <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
+    <span class="tag">&lt;wot:pubkeyAddress</span> <span class="attribute-name">rdf:resource</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://people.apache.org/~username/nnnnnnnn.asc/</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
+  <span class="tag">&lt;/wot:PubKey&gt;</span>
+<span class="tag">&lt;/wot:hasKey&gt;</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 &gt;&gt;KEYS
+gpg --armor --export nnnnnnnn &gt;&gt;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">&lt;settings&gt;</span>
+  ...
+  <span class="tag">&lt;profiles&gt;</span>
+    <span class="tag">&lt;profile&gt;</span>
+      <span class="tag">&lt;id&gt;</span>apache-release<span class="tag">&lt;/id&gt;</span>
+      <span class="tag">&lt;properties&gt;</span>
+        <span class="tag">&lt;gpg.passphrase&gt;</span>xxx xxx xxx xxx xxx xxx xxx<span class="tag">&lt;/gpg.passphrase&gt;</span>
+      <span class="tag">&lt;/properties&gt;</span>
+    <span class="tag">&lt;/profile&gt;</span>
+  <span class="tag">&lt;/profiles&gt;</span>
+<span class="tag">&lt;/settings&gt;</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">&lt;settings&gt;</span>
+  ...
+  <span class="tag">&lt;servers&gt;</span>
+    ...
+    <span class="tag">&lt;server&gt;</span>
+      <span class="tag">&lt;id&gt;</span>apache.releases.https<span class="tag">&lt;/id&gt;</span>
+      <span class="tag">&lt;username&gt;</span>xxxx<span class="tag">&lt;/username&gt;</span>
+      <span class="tag">&lt;password&gt;</span>xxxx<span class="tag">&lt;/password&gt;</span>
+    <span class="tag">&lt;/server&gt;</span>
+  <span class="tag">&lt;/servers&gt;</span>
+<span class="tag">&lt;/settings&gt;</span></code></pre>
+</div>
+</div>
+</div>
+</div>
+        </div>
+
+        <footer>
+          <hr>
+          <p class="small">
+          Copyright &copy; 2010~2015 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0.
+          <br/>
+          Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;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">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>
-<span class="tag">&lt;rdf:RDF</span>
-      <span class="attribute-name">xmlns:rdf</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/1999/02/22-rdf-syntax-ns#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:rdfs</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2000/01/rdf-schema#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:foaf</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.com/foaf/0.1/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:geo</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2003/01/geo/wgs84_pos#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:pm</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.web-semantics.org/ns/pm#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:wot</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://xmlns.com/wot/0.1/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:rss</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://purl.org/rss/1.0/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:dc</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://purl.org/dc/elements/1.1/</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:ical</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://www.w3.org/2002/12/cal/ical#</span><span class="delimiter">&quot;</span></span>
-      <span class="attribute-name">xmlns:doap</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://usefulinc.com/ns/doap#</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-  <span class="tag">&lt;foaf:Person</span> <span class="attribute-name">rdf:ID</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">danhaywood</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-    <span class="tag">&lt;foaf:name&gt;</span>Xxx Xxxxxxxx<span class="tag">&lt;/foaf:name&gt;</span>
-    <span class="tag">&lt;foaf:givenname&gt;</span>Xxx<span class="tag">&lt;/foaf:givenname&gt;</span>
-    <span class="tag">&lt;foaf:family_name&gt;</span>Xxxxxxxx<span class="tag">&lt;/foaf:family_name&gt;</span>
-    <span class="tag">&lt;wot:hasKey&gt;</span>
-      <span class="tag">&lt;wot:PubKey&gt;</span>
-        <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
-        <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
-      <span class="tag">&lt;/wot:PubKey&gt;</span>
-    <span class="tag">&lt;/wot:hasKey&gt;</span>
-  <span class="tag">&lt;/foaf:Person&gt;</span>
-<span class="tag">&lt;/rdf:RDF&gt;</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">&lt;wot:hasKey&gt;</span>
-  <span class="tag">&lt;wot:PubKey&gt;</span>
-    <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
-    <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
-  <span class="tag">&lt;/wot:PubKey&gt;</span>
-<span class="tag">&lt;/wot:hasKey&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, manually add in a <code>&lt;wot:pubkeyAddress&gt;</code> element within <code>&lt;wot:PubKey&gt;</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;wot:hasKey&gt;</span>
-  <span class="tag">&lt;wot:PubKey&gt;</span>
-    <span class="tag">&lt;wot:fingerprint&gt;</span>nnnn nnnn nnnn nnnn nnnn  nnnn nnnn nnnn nnnn nnnn<span class="tag">&lt;/wot:fingerprint&gt;</span>
-    <span class="tag">&lt;wot:hex_id&gt;</span>nnnnnnnn<span class="tag">&lt;/wot:hex_id&gt;</span>
-    <span class="tag">&lt;wot:pubkeyAddress</span> <span class="attribute-name">rdf:resource</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">http://people.apache.org/~username/nnnnnnnn.asc/</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
-  <span class="tag">&l

<TRUNCATED>