<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Relyea</id>
	<title>MozillaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Relyea"/>
	<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/Special:Contributions/Relyea"/>
	<updated>2026-04-16T18:03:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode16:Brainstorming&amp;diff=1120798</id>
		<title>Community:SummerOfCode16:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode16:Brainstorming&amp;diff=1120798"/>
		<updated>2016-03-08T21:10:32Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Firefox */ Not that the suggestion has already been added to the Community summerofcode16 page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2016 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode16|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 19th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a student looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode16|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Support OpenGL graphics acceleration on Linux&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=594876 bug 594876]&lt;br /&gt;
| C/C++&lt;br /&gt;
| marco&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| File Watcher&lt;br /&gt;
| This is the bug topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=958280 :: Bugzilla 958280]]. Using pipes, create a XPCOM component for Mac file watching (Window and GTK are done) or and complete the js-ctypes version. For XPCOM: Windows topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=992894 :: Bugzilla 992894]], this is the GTK topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=992895 :: Bugzilla 992895]], this is the Mac topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=992896 :: Bugzilla 992896]]. This is the preliminary js-ctypes file watcher, but it uses timeout instead of pipes to interrupt/cancel a watch: https://github.com/Noitidart/jscFileWatcher.&lt;br /&gt;
| C/C++/Javascript&lt;br /&gt;
| [[https://mozillians.org/en-US/u/Noitidart/ :: Noit]]&lt;br /&gt;
| Noit &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Modernize Library (Bookmarks, History, Downloads) UI and move its window to a tab&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=697359 bug 697359]&lt;br /&gt;
| Javascript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| RFC7512 URI support (PKCS #11 URI)&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=1162897 bug 1162897]&lt;br /&gt;
and &lt;br /&gt;
[https://bugzilla.mozilla.org/show_bug.cgi?id=248722 bug 248722]&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| rrelyea and dwmw2&lt;br /&gt;
| Already entered [[Community:SummerOfCode16]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Group MMS proper support&lt;br /&gt;
| See the [https://bugzilla.mozilla.org/show_bug.cgi?id=1106663 meta bug 1106663]&lt;br /&gt;
| CSS, JavaScript&lt;br /&gt;
|&lt;br /&gt;
| Julien Wajsberg&lt;br /&gt;
| For this feature, the mentoree will need to change mostly Gaia code, but also likely fix some Gecko code. All the code is in JavaScript. The mentoree will need a Firefox OS device (we can likely supply one though).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Update to mozmill 2.0&lt;br /&gt;
| We are currently using an older version of [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mozmill Mozmill], a framework for automated UI tests similar to Selenium. In order to stay future proof we need to update to the latest version, which requires some API changes. You will get hands on experience in creating automated tests and your debugging skills will certainly imprve. See [https://bugzilla.mozilla.org/show_bug.cgi?id=930732 bug 930732] for additional details.&lt;br /&gt;
| JS and python coding, debug mozmill tests&lt;br /&gt;
| aceman&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Finish remaining maildir features&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=845952 bug 845952]&lt;br /&gt;
| C++ coding, JS coding, some tests&lt;br /&gt;
| aceman&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add UI for creating boolean filter expressions in filter editor&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=297852 bug 297852]&lt;br /&gt;
| JS+XUL coding, some tests, maybe a bit of C++ coding&lt;br /&gt;
| aceman&lt;br /&gt;
|&lt;br /&gt;
| Supposedly this mostly needs creating the UI. The backend should be ready for such expressions. But it needs checking if it still works as it wasn&#039;t exercised so far.&lt;br /&gt;
|-&lt;br /&gt;
| Integrate pdf.js support&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=810815 bug 810815]&lt;br /&gt;
| JavaScript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Tabbed Composition&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=449299 bug 449299]&lt;br /&gt;
| JavaScript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Redesign libpurple integration&lt;br /&gt;
| Currently Thunderbird can have additional protocols added to them via libpurple. This is distributed separately because of licensing compatibilities. There is a shim later (called purplexpcom) which translates from Thunderbird&#039;s chat interfaces to libpurple&#039;s interfaces. Unfortunately this is:&lt;br /&gt;
&lt;br /&gt;
* Time consuming to maintain&lt;br /&gt;
* Difficult to compile&lt;br /&gt;
* Requires re-compilation for each Thunderbird version&lt;br /&gt;
* Is not binary compatible with system libpurples&lt;br /&gt;
&lt;br /&gt;
It is desirable to experiment with different ways to interact with libpurple to redesign this interface. Potential experiments include:&lt;br /&gt;
&lt;br /&gt;
* Using js-ctypes to interact with the libpurple binary component (instead of C++ XPCOM code)&lt;br /&gt;
* Spawn a separate sub-process and use IPC to communicate with libpurple&lt;br /&gt;
* Compile libpurple to JavaScript with emscripten&lt;br /&gt;
&lt;br /&gt;
Requires understanding of: C, C++, XPCOM, JavaScript&lt;br /&gt;
| C, C++, XPCOM, JavaScript&lt;br /&gt;
| Patrick Cloke&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| OTR (Off-the-Record) Integration&lt;br /&gt;
| [https://trac.torproject.org/projects/tor/wiki/doc/TorMessenger Tor Messenger], which is based on Instantbird, has support for end-to-end encrypted instant messaging using OTR ([https://github.com/arlolra/ctypes-otr via an extension]). The goal of this project would be to upstream these changes from Tor Messenger into Instantbird while incorporating UI changes designed by the Instantbird team.&lt;br /&gt;
| c-types, XPCOM, JavaScript, XUL&lt;br /&gt;
| arlolra&lt;br /&gt;
| Patrick Cloke [:clokep]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Port LibreOffice to the Web&lt;br /&gt;
| https://wiki.documentfoundation.org/Development/Emscripten&lt;br /&gt;
| C/C++/JavaScript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ZAP Bug tracker support&lt;br /&gt;
| https://github.com/zaproxy/zaproxy/issues/440&lt;br /&gt;
| Java &lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ZAP Auto login detection and configuration&lt;br /&gt;
| https://github.com/zaproxy/zaproxy/issues/2251&lt;br /&gt;
| Java &lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Zest text representation and parser&lt;br /&gt;
| https://github.com/mozilla/zest/issues/23&lt;br /&gt;
| Java &lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WADI ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Add Service Workers to forum&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/54&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Make Hatnote progressive&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/51&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Best of Planet stream&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/44&lt;br /&gt;
| HTML5, JavaScript, some server side technology&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Create a (broccoli/ember)-oghliner addon&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/43&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
| Salva&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Add SW functionalities to Phaser (or other HTML5 game engine)&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/32&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
| Salva &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Use a service worker with Firefox Accounts&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/30&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Implement Service Workers on the MDN&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/21&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
| David Walsh&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| App for watching air.mozilla video podcasts&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/11&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add offlining to Shower&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/3&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Webmaker ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MozVR ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Reporter&lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode16:Brainstorming&amp;diff=1120786</id>
		<title>Community:SummerOfCode16:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode16:Brainstorming&amp;diff=1120786"/>
		<updated>2016-03-08T20:54:48Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Firefox */  Add NSS Summer of code intern for PKCS #11 URI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2016 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode16|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 19th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a student looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode16|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Support OpenGL graphics acceleration on Linux&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=594876 bug 594876]&lt;br /&gt;
| C/C++&lt;br /&gt;
| marco&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| File Watcher&lt;br /&gt;
| This is the bug topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=958280 :: Bugzilla 958280]]. Using pipes, create a XPCOM component for Mac file watching (Window and GTK are done) or and complete the js-ctypes version. For XPCOM: Windows topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=992894 :: Bugzilla 992894]], this is the GTK topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=992895 :: Bugzilla 992895]], this is the Mac topic - [[https://bugzilla.mozilla.org/show_bug.cgi?id=992896 :: Bugzilla 992896]]. This is the preliminary js-ctypes file watcher, but it uses timeout instead of pipes to interrupt/cancel a watch: https://github.com/Noitidart/jscFileWatcher.&lt;br /&gt;
| C/C++/Javascript&lt;br /&gt;
| [[https://mozillians.org/en-US/u/Noitidart/ :: Noit]]&lt;br /&gt;
| Noit &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Modernize Library (Bookmarks, History, Downloads) UI and move its window to a tab&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=697359 bug 697359]&lt;br /&gt;
| Javascript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| RFC7512 URI support (PKCS #11 URI)&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=1162897 bug 1162897]&lt;br /&gt;
and &lt;br /&gt;
[https://bugzilla.mozilla.org/show_bug.cgi?id=248722 bug 248722]&lt;br /&gt;
| C&lt;br /&gt;
|&lt;br /&gt;
| rrelyea and dwmw2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Group MMS proper support&lt;br /&gt;
| See the [https://bugzilla.mozilla.org/show_bug.cgi?id=1106663 meta bug 1106663]&lt;br /&gt;
| CSS, JavaScript&lt;br /&gt;
|&lt;br /&gt;
| Julien Wajsberg&lt;br /&gt;
| For this feature, the mentoree will need to change mostly Gaia code, but also likely fix some Gecko code. All the code is in JavaScript. The mentoree will need a Firefox OS device (we can likely supply one though).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Update to mozmill 2.0&lt;br /&gt;
| We are currently using an older version of [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mozmill Mozmill], a framework for automated UI tests similar to Selenium. In order to stay future proof we need to update to the latest version, which requires some API changes. You will get hands on experience in creating automated tests and your debugging skills will certainly imprve. See [https://bugzilla.mozilla.org/show_bug.cgi?id=930732 bug 930732] for additional details.&lt;br /&gt;
| JS and python coding, debug mozmill tests&lt;br /&gt;
| aceman&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Finish remaining maildir features&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=845952 bug 845952]&lt;br /&gt;
| C++ coding, JS coding, some tests&lt;br /&gt;
| aceman&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add UI for creating boolean filter expressions in filter editor&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=297852 bug 297852]&lt;br /&gt;
| JS+XUL coding, some tests, maybe a bit of C++ coding&lt;br /&gt;
| aceman&lt;br /&gt;
|&lt;br /&gt;
| Supposedly this mostly needs creating the UI. The backend should be ready for such expressions. But it needs checking if it still works as it wasn&#039;t exercised so far.&lt;br /&gt;
|-&lt;br /&gt;
| Integrate pdf.js support&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=810815 bug 810815]&lt;br /&gt;
| JavaScript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Tabbed Composition&lt;br /&gt;
| [https://bugzilla.mozilla.org/show_bug.cgi?id=449299 bug 449299]&lt;br /&gt;
| JavaScript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Redesign libpurple integration&lt;br /&gt;
| Currently Thunderbird can have additional protocols added to them via libpurple. This is distributed separately because of licensing compatibilities. There is a shim later (called purplexpcom) which translates from Thunderbird&#039;s chat interfaces to libpurple&#039;s interfaces. Unfortunately this is:&lt;br /&gt;
&lt;br /&gt;
* Time consuming to maintain&lt;br /&gt;
* Difficult to compile&lt;br /&gt;
* Requires re-compilation for each Thunderbird version&lt;br /&gt;
* Is not binary compatible with system libpurples&lt;br /&gt;
&lt;br /&gt;
It is desirable to experiment with different ways to interact with libpurple to redesign this interface. Potential experiments include:&lt;br /&gt;
&lt;br /&gt;
* Using js-ctypes to interact with the libpurple binary component (instead of C++ XPCOM code)&lt;br /&gt;
* Spawn a separate sub-process and use IPC to communicate with libpurple&lt;br /&gt;
* Compile libpurple to JavaScript with emscripten&lt;br /&gt;
&lt;br /&gt;
Requires understanding of: C, C++, XPCOM, JavaScript&lt;br /&gt;
| C, C++, XPCOM, JavaScript&lt;br /&gt;
| Patrick Cloke&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| OTR (Off-the-Record) Integration&lt;br /&gt;
| [https://trac.torproject.org/projects/tor/wiki/doc/TorMessenger Tor Messenger], which is based on Instantbird, has support for end-to-end encrypted instant messaging using OTR ([https://github.com/arlolra/ctypes-otr via an extension]). The goal of this project would be to upstream these changes from Tor Messenger into Instantbird while incorporating UI changes designed by the Instantbird team.&lt;br /&gt;
| c-types, XPCOM, JavaScript, XUL&lt;br /&gt;
| arlolra&lt;br /&gt;
| Patrick Cloke [:clokep]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Port LibreOffice to the Web&lt;br /&gt;
| https://wiki.documentfoundation.org/Development/Emscripten&lt;br /&gt;
| C/C++/JavaScript&lt;br /&gt;
| marco&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| ZAP Bug tracker support&lt;br /&gt;
| https://github.com/zaproxy/zaproxy/issues/440&lt;br /&gt;
| Java &lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| ZAP Auto login detection and configuration&lt;br /&gt;
| https://github.com/zaproxy/zaproxy/issues/2251&lt;br /&gt;
| Java &lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Zest text representation and parser&lt;br /&gt;
| https://github.com/mozilla/zest/issues/23&lt;br /&gt;
| Java &lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| Simon Bennetts&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WADI ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Add Service Workers to forum&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/54&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Make Hatnote progressive&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/51&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Best of Planet stream&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/44&lt;br /&gt;
| HTML5, JavaScript, some server side technology&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Create a (broccoli/ember)-oghliner addon&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/43&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
| Salva&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Add SW functionalities to Phaser (or other HTML5 game engine)&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/32&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
| Salva &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Use a service worker with Firefox Accounts&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/30&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Implement Service Workers on the MDN&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/21&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
| David Walsh&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| App for watching air.mozilla video podcasts&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/11&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Add offlining to Shower&lt;br /&gt;
| https://github.com/mozilla/wadi/issues/3&lt;br /&gt;
| HTML5, JavaScript&lt;br /&gt;
| Salvador de la Puente&lt;br /&gt;
|  &lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Webmaker ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== MozVR ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Reporter&lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=454720</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=454720"/>
		<updated>2012-07-25T22:16:17Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Manual operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you&#039;ve made changes to the NSS tests or NSS itself.&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Customizations ==&lt;br /&gt;
=== Adjusting things to your environment ===&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the tests you run ===&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN). For example to just run the blapi TESTS:&lt;br /&gt;
&lt;br /&gt;
  make android_run_tests NSS_CYCLES=standard NSS_TESTS=cipher&lt;br /&gt;
&lt;br /&gt;
=== Manual operations ===&lt;br /&gt;
&lt;br /&gt;
You can run various tests and programs manually on your android. First you log in using SSH:&lt;br /&gt;
&lt;br /&gt;
 ssh -p 2222 $ANDROID_ADDR&lt;br /&gt;
&lt;br /&gt;
This will give you a busybox shell. I found the android system shell to be better, so you can type &#039;exit&#039; to drop into the real shell.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Manually running the tests&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To run the tests manually, you need to add the following to your environment:&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_DBG.OBJ &lt;br /&gt;
&lt;br /&gt;
or if you built with BUILD_OPT=1&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_OPT.OBJ&lt;br /&gt;
&lt;br /&gt;
There is no make on android, so it can&#039;t use the make system to find the value of OBJDIR. The make targets described above have access to these variables, and automatically sets them when they build android. Other variables which the build system gets from make are found in $HOME/nsstest/dist/$OBJDIR/platform.cfg.&lt;br /&gt;
&lt;br /&gt;
You can now cd into nsstest, where you&#039;ll find a dist tree, and a security tree, which looks just like the /mozilla directory in a normal NSS build system. You and run any of the tests just like you would on the host system by changing to the appropriate directory and running the test shell script. It&#039;s best to use the system shell (/system/bin/sh) to start these shell scripts, for example:&lt;br /&gt;
   cd system/nss/tests/ciphers&lt;br /&gt;
   /system/bin/sh ./ciphers.sh&lt;br /&gt;
Will run the blapi tests.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Manually running NSS commands&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To run NSS commands you would need to adjust the following environment variables:&lt;br /&gt;
&lt;br /&gt;
1. Add $HOME/nsstest/dist/$OBJDIR/bin to your path (NOTE this assumes you have set OBJDIR already as described in &amp;quot;Manually running the tests&amp;quot; above). For example:&lt;br /&gt;
   export PATH=$PATH:$HOME/nsstest/dist/$OBJDIR/bin&lt;br /&gt;
&lt;br /&gt;
2. Add $HOME/nsstest/dist/$OBJDIR/lib to your LD_LIBRARY_PATH. For example:&lt;br /&gt;
   export LD_LIBRARY_PATH=$HOME/nsstest/dist/$OBJDIR/lib&lt;br /&gt;
&lt;br /&gt;
You can now execute any nss commands in your android shell.&lt;br /&gt;
&lt;br /&gt;
=== Partial rebuilds ===&lt;br /&gt;
You can rebuild any part of the NSS tree just as you would normally, as long as you have the BUILD_ANROID and ANDROID_NDK environment variables set. You do, however, need to run make android_install to install the changes. make android_install will update all the binaries, not just the newly built one.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450270</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450270"/>
		<updated>2012-07-12T19:27:58Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Manual operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you&#039;ve made changes to the NSS tests or NSS itself.&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Customizations ==&lt;br /&gt;
=== Adjusting things to your environment ===&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the tests you run ===&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN). For example to just run the blapi TESTS:&lt;br /&gt;
&lt;br /&gt;
  make android_run_tests NSS_CYCLES=standard NSS_TESTS=cipher&lt;br /&gt;
&lt;br /&gt;
=== Manual operations ===&lt;br /&gt;
&lt;br /&gt;
You can run various tests and programs manually on your android. First you log in using SSH:&lt;br /&gt;
&lt;br /&gt;
 ssh -p 2222 $ANDROID_ADDR&lt;br /&gt;
&lt;br /&gt;
This will give you a busybox shell. I found the android system shell to be better, so you can type &#039;exit&#039; to drop into the real shell.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Manually running the tests&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To run the tests manually, you need to add the following to your environment:&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_DBG.OBJ &lt;br /&gt;
&lt;br /&gt;
or if you built with BUILD_OPT=1&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_OPT.OBJ&lt;br /&gt;
&lt;br /&gt;
There is no make on android, so it can&#039;t use the make system to find the value of OBJDIR. The make targets described above has access to these variables, and automatically sets them when they build android. Other variables which the build system gets from make are found in $HOME/nsstest/dist/$OBJDIR/platform.cfg.&lt;br /&gt;
&lt;br /&gt;
You can now cd into nsstest, where you&#039;ll find a dist tree, and a security tree, which looks just like the /mozilla directory in a normal NSS build system. You and run any of the tests just like you would on the host system by changing to the appropriate directory and running the test shell script. It&#039;s best to use the system shell (/system/bin/sh) to start these shell scripts, for example:&lt;br /&gt;
   cd system/nss/tests/ciphers&lt;br /&gt;
   /system/bin/sh ./ciphers.sh&lt;br /&gt;
Will run the blapi tests.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Manually running NSS commands&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To run NSS commands you would need to adjust the following environment variables:&lt;br /&gt;
&lt;br /&gt;
1. Add $HOME/nsstest/dist/$OBJDIR/bin to your path (NOTE this assumes you have set OBJDIR already as described in &amp;quot;Manually running the tests&amp;quot; above). For example:&lt;br /&gt;
   export PATH=$PATH:$HOME/nsstest/dist/$OBJDIR/bin&lt;br /&gt;
&lt;br /&gt;
2. Add $HOME/nsstest/dist/$OBJDIR/lib to your LD_LIBRARY_PATH. For example:&lt;br /&gt;
   export LD_LIBRARY_PATH=$HOME/nsstest/dist/$OBJDIR/lib&lt;br /&gt;
&lt;br /&gt;
You can now execute any nss commands in your android shell.&lt;br /&gt;
&lt;br /&gt;
=== Partial rebuilds ===&lt;br /&gt;
You can rebuild any part of the NSS tree just as you would normally, as long as you have the BUILD_ANROID and ANDROID_NDK environment variables set. You do, however, need to run make android_install to install the changes. make android_install will update all the binaries, not just the newly built one.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450269</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450269"/>
		<updated>2012-07-12T19:27:19Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Manual operations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you&#039;ve made changes to the NSS tests or NSS itself.&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Customizations ==&lt;br /&gt;
=== Adjusting things to your environment ===&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the tests you run ===&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN). For example to just run the blapi TESTS:&lt;br /&gt;
&lt;br /&gt;
  make android_run_tests NSS_CYCLES=standard NSS_TESTS=cipher&lt;br /&gt;
&lt;br /&gt;
=== Manual operations ===&lt;br /&gt;
&lt;br /&gt;
You can run various tests and programs manually on your android. First you log in using SSH:&lt;br /&gt;
&lt;br /&gt;
 ssh -p 2222 $ANDROID_ADDR&lt;br /&gt;
&lt;br /&gt;
This will give you a busybox shell. I found the android system shell to be better, so you can type &#039;exit&#039; to drop into the real shell.&lt;br /&gt;
&#039;Manually running the tests&#039;&lt;br /&gt;
To run the tests manually, you need to add the following to your environment:&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_DBG.OBJ &lt;br /&gt;
&lt;br /&gt;
or if you built with BUILD_OPT=1&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_OPT.OBJ&lt;br /&gt;
&lt;br /&gt;
There is no make on android, so it can&#039;t use the make system to find the value of OBJDIR. The make targets described above has access to these variables, and automatically sets them when they build android. Other variables which the build system gets from make are found in $HOME/nsstest/dist/$OBJDIR/platform.cfg.&lt;br /&gt;
&lt;br /&gt;
You can now cd into nsstest, where you&#039;ll find a dist tree, and a security tree, which looks just like the /mozilla directory in a normal NSS build system. You and run any of the tests just like you would on the host system by changing to the appropriate directory and running the test shell script. It&#039;s best to use the system shell (/system/bin/sh) to start these shell scripts, for example:&lt;br /&gt;
   cd system/nss/tests/ciphers&lt;br /&gt;
   /system/bin/sh ./ciphers.sh&lt;br /&gt;
Will run the blapi tests.&lt;br /&gt;
&lt;br /&gt;
&#039;Manually running NSS commands&#039;&lt;br /&gt;
&lt;br /&gt;
To run NSS commands you would need to adjust the following environment variables:&lt;br /&gt;
&lt;br /&gt;
1. Add $HOME/nsstest/dist/$OBJDIR/bin to your path (NOTE this assumes you have set OBJDIR already as described in &amp;quot;Manually running the tests&amp;quot; above). For example:&lt;br /&gt;
   export PATH=$PATH:$HOME/nsstest/dist/$OBJDIR/bin&lt;br /&gt;
&lt;br /&gt;
2. Add $HOME/nsstest/dist/$OBJDIR/lib to your LD_LIBRARY_PATH. For example:&lt;br /&gt;
   export LD_LIBRARY_PATH=$HOME/nsstest/dist/$OBJDIR/lib&lt;br /&gt;
&lt;br /&gt;
You can now execute any nss commands in your android shell.&lt;br /&gt;
&lt;br /&gt;
=== Partial rebuilds ===&lt;br /&gt;
You can rebuild any part of the NSS tree just as you would normally, as long as you have the BUILD_ANROID and ANDROID_NDK environment variables set. You do, however, need to run make android_install to install the changes. make android_install will update all the binaries, not just the newly built one.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450267</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450267"/>
		<updated>2012-07-12T19:24:05Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Customizations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you&#039;ve made changes to the NSS tests or NSS itself.&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Customizations ==&lt;br /&gt;
=== Adjusting things to your environment ===&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the tests you run ===&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN). For example to just run the blapi TESTS:&lt;br /&gt;
&lt;br /&gt;
  make android_run_tests NSS_CYCLES=standard NSS_TESTS=cipher&lt;br /&gt;
&lt;br /&gt;
=== Manual operations ===&lt;br /&gt;
&lt;br /&gt;
You can run various tests and programs manually on your android. First you log in using SSH:&lt;br /&gt;
&lt;br /&gt;
 ssh -p 2222 $ANDROID_ADDR&lt;br /&gt;
&lt;br /&gt;
This will give you a busybox shell. I found the android system shell to be better, so you can type &#039;exit&#039; to drop into the real shell.&lt;br /&gt;
==== Manually running the tests ====&lt;br /&gt;
To run the tests manually, you need to add the following to your environment:&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_DBG.OBJ &lt;br /&gt;
&lt;br /&gt;
or if you built with BUILD_OPT=1&lt;br /&gt;
&lt;br /&gt;
  export OBJDIR=Android_arm_OPT.OBJ&lt;br /&gt;
&lt;br /&gt;
There is no make on android, so it can&#039;t use the make system to find the value of OBJDIR. The make targets described above has access to these variables, and automatically sets them when they build android. Other variables which the build system gets from make are found in $HOME/nsstest/dist/$OBJDIR/platform.cfg.&lt;br /&gt;
&lt;br /&gt;
You can now cd into nsstest, where you&#039;ll find a dist tree, and a security tree, which looks just like the /mozilla directory in a normal NSS build system. You and run any of the tests just like you would on the host system by changing to the appropriate directory and running the test shell script. It&#039;s best to use the system shell (/system/bin/sh) to start these shell scripts, for example:&lt;br /&gt;
   cd system/nss/tests/ciphers&lt;br /&gt;
   /system/bin/sh ./ciphers.sh&lt;br /&gt;
Will run the blapi tests.&lt;br /&gt;
&lt;br /&gt;
==== Manually running NSS commands ====&lt;br /&gt;
&lt;br /&gt;
To run NSS commands you would need to adjust the following environment variables:&lt;br /&gt;
&lt;br /&gt;
1. Add $HOME/nsstest/dist/$OBJDIR/bin to your path (NOTE this assumes you have set OBJDIR already as described in &amp;quot;Manually running the tests&amp;quot; above). For example:&lt;br /&gt;
   export PATH=$PATH:$HOME/nsstest/dist/$OBJDIR/bin&lt;br /&gt;
&lt;br /&gt;
2. Add $HOME/nsstest/dist/$OBJDIR/lib to your LD_LIBRARY_PATH. For example:&lt;br /&gt;
   export LD_LIBRARY_PATH=$HOME/nsstest/dist/$OBJDIR/lib&lt;br /&gt;
&lt;br /&gt;
You can now execute any nss commands in your android shell.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450263</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450263"/>
		<updated>2012-07-12T19:06:41Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Adjusting things to your environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you&#039;ve made changes to the NSS tests or NSS itself.&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Customizations ==&lt;br /&gt;
=== Adjusting things to your environment ===&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the tests you run ===&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450262</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450262"/>
		<updated>2012-07-12T19:04:20Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Running the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed the NSS tests and binaries, you can run tests multiple times on those binaries. You only need to run make android_install again if you&#039;ve made changes to the NSS tests or NSS itself.&lt;br /&gt;
&lt;br /&gt;
You can control the NSS tests ran with the stand variables used by all.sh on the make command line (NSS_CYCLES, NSS_TESTS, NSS_SSL_TESTS, NSS_SSL_RUN).&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450260</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450260"/>
		<updated>2012-07-12T18:52:54Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Running the tests = */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the NSS built on the host and tests from the host to the android device.&lt;br /&gt;
The android_run_tests target logins into the android device and runs the tests.&lt;br /&gt;
The android_get_result target fetches the tests results directory from android to the host.&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450258</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450258"/>
		<updated>2012-07-12T18:50:52Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Running the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
= Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
 make android_get_result&lt;br /&gt;
&lt;br /&gt;
The android_install target copies the built NSS and tests to the android.&lt;br /&gt;
The android_run_tests &lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450175</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450175"/>
		<updated>2012-07-12T16:45:51Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Getting SSHDroid */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450164</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450164"/>
		<updated>2012-07-12T16:38:38Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Adjusting things to your environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450162</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450162"/>
		<updated>2012-07-12T16:38:11Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Adjusting things to your environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
*ANDROID_PORT* - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
*ANDROID_VERSION* - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450161</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450161"/>
		<updated>2012-07-12T16:37:31Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Running the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make android_install&lt;br /&gt;
 make android_run_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests fips tests do not run because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). For now these tests are disabled if you use the above instructions.&lt;br /&gt;
&lt;br /&gt;
NOTE: Many tests will fail if the test suite is ran on a FAT filesystem (like /sdcard). This is because we can&#039;t set the permissions on the files there.&lt;br /&gt;
&lt;br /&gt;
== Adjusting things to your environment ==&lt;br /&gt;
&lt;br /&gt;
There are other environment variables you can set to change some of the defaults:&lt;br /&gt;
&lt;br /&gt;
 ANDROID_PORT - By default this is 2222 in sshdroid. You can change it with the options menu. If you do you will need to set the ANDROID_PORT value.&lt;br /&gt;
 ANDROID_VERSION - By default this is 8. You can change the NDK version you build against by changing this value.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450158</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450158"/>
		<updated>2012-07-12T16:31:26Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here[https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450157</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450157"/>
		<updated>2012-07-12T16:30:58Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [here|https://bugzilla.mozilla.org/show_bug.cgi?id=772144].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450156</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450156"/>
		<updated>2012-07-12T16:30:36Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [https://bugzilla.mozilla.org/show_bug.cgi?id=772144|here].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450155</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450155"/>
		<updated>2012-07-12T16:29:17Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[https://bugzilla.mozilla.org/show_bug.cgi?id=772144|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android as you would normally:&lt;br /&gt;
&lt;br /&gt;
 make nss_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450150</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450150"/>
		<updated>2012-07-12T16:27:31Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host. (NOTE: you will be prompted for a password. The default is &#039;admin&#039;, which the server will tell you).&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450147</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450147"/>
		<updated>2012-07-12T16:26:35Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once you&#039;ve installed your certificate, you should also change your password on your android device. &lt;br /&gt;
&lt;br /&gt;
 select the menu&lt;br /&gt;
 select &amp;quot;Options&amp;quot;&lt;br /&gt;
 either select &amp;quot;Password: to change your password &lt;br /&gt;
  or unclick &amp;quot;Enable Password&amp;quot; to disable password login&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450143</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450143"/>
		<updated>2012-07-12T16:21:58Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Set up your environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK. Also, to tell the build to build android rather than native linux, you need to set BUILD_ANDROID to 1.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450141</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=450141"/>
		<updated>2012-07-12T16:21:18Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Set up your environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export BUILD_ANDROID=1&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448376</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448376"/>
		<updated>2012-07-07T00:54:28Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Running the tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;br /&gt;
UPDATE: The tests that are failing are the fips tests because PR_GetLibraryFilePathname() currently does not work on android. In android NDK versions before 8 dladdr wasn&#039;t support. In versions after 8, dladdr does not correctly return the full path to the library, which is what we are trying to get in PR_GetLibraryFilePathname(). At this point I&#039;m waiting util wtc gets back from vacation to talk about possible solutions.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448052</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448052"/>
		<updated>2012-07-05T23:27:45Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448051</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448051"/>
		<updated>2012-07-05T23:27:24Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [here|http://www.debian.org/devel/passwordlessssh] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448050</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448050"/>
		<updated>2012-07-05T23:26:53Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [http://www.debian.org/devel/passwordlessssh|here] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448049</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448049"/>
		<updated>2012-07-05T23:26:08Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[http://www.debian.org/devel/passwordlessssh|here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[File:Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448048</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448048"/>
		<updated>2012-07-05T23:25:43Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[http://www.debian.org/devel/passwordlessssh|here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[Nss-android.odp‎|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=File:Nss-android.odp&amp;diff=448047</id>
		<title>File:Nss-android.odp</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=File:Nss-android.odp&amp;diff=448047"/>
		<updated>2012-07-05T23:24:44Z</updated>

		<summary type="html">&lt;p&gt;Relyea: Patch to build NSS using Android tools and running test suite on an actual android device.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Patch to build NSS using Android tools and running test suite on an actual android device.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448042</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448042"/>
		<updated>2012-07-05T23:00:06Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[http://www.debian.org/devel/passwordlessssh|here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located [[NSS:Android:Patch|here]].&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448040</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448040"/>
		<updated>2012-07-05T22:59:09Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[http://www.debian.org/devel/passwordlessssh|here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub&lt;br /&gt;
  mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here.&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448037</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448037"/>
		<updated>2012-07-05T22:58:41Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[http://www.debian.org/devel/passwordlessssh|here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here.&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448035</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448035"/>
		<updated>2012-07-05T22:58:07Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Setting up certificates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[here|http://www.debian.org/devel/passwordlessssh]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here.&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448033</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448033"/>
		<updated>2012-07-05T22:55:18Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
== Setting up the Cross build environment ==&lt;br /&gt;
&lt;br /&gt;
=== Downloading the NDK ===&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
=== Getting the Runtime ===&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
=== Set up your environment ===&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
== Setting up your Android device ==&lt;br /&gt;
&lt;br /&gt;
=== Getting SSHDroid ===&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
=== Setting up certificates ===&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here.&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
== Running the tests ==&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;br /&gt;
&lt;br /&gt;
NOTE: The tests do yet pass.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448031</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448031"/>
		<updated>2012-07-05T22:53:43Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NSS Android build =&lt;br /&gt;
&lt;br /&gt;
= Setting up the Cross build environment =&lt;br /&gt;
&lt;br /&gt;
== Downloading the NDK ==&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
== Getting the Runtime ==&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
== Set up your environment ==&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
= Setting up your Android device =&lt;br /&gt;
&lt;br /&gt;
== Getting SSHDroid ==&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR on your Linux host:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the your actual values (not my examples).&lt;br /&gt;
&lt;br /&gt;
== Setting up certificates ==&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions [[here]] to set up a pair of SSH keys on your Linux host. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid. Start your SSHDroid App, then run the following on your Linux host.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App on your Android:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Building =&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here.&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
= Running the tests =&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448028</id>
		<title>NSS:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS:Android&amp;diff=448028"/>
		<updated>2012-07-05T22:47:39Z</updated>

		<summary type="html">&lt;p&gt;Relyea: Created page with &amp;quot;NSS Android build:  Setting up the Cross build environment.  Downloading the NDK  Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;NSS Android build:&lt;br /&gt;
&lt;br /&gt;
Setting up the Cross build environment.&lt;br /&gt;
&lt;br /&gt;
Downloading the NDK&lt;br /&gt;
&lt;br /&gt;
Download and extract the Android NDK. NDK rev 5 has been tested and are known to work. Builders currently use NDKr5c.&lt;br /&gt;
&lt;br /&gt;
 wget http://dl.google.com/android/ndk/android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
 tar -xjf android-ndk-r5c-linux-x86.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Getting the Runtime.&lt;br /&gt;
&lt;br /&gt;
If you are on Linux 32 bit, you are done. If  you are Linux 64 bit, you may need to get the following packages:&lt;br /&gt;
&lt;br /&gt;
 glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
On Fedora or RHEL you can get this with&lt;br /&gt;
&lt;br /&gt;
 yum install glibc.i686 zlib.i686 libstdc++.i686&lt;br /&gt;
&lt;br /&gt;
Set up your environment&lt;br /&gt;
&lt;br /&gt;
You must set the environment variable ANDROID_NDK to the path where you extracted the NDK.&lt;br /&gt;
&lt;br /&gt;
   export ANDROID_NDK={path to your ndk}&lt;br /&gt;
&lt;br /&gt;
Setting up your Android device. &lt;br /&gt;
&lt;br /&gt;
Getting SSHDroid&lt;br /&gt;
&lt;br /&gt;
The android test system uses sftp and ssh to talk to our android device In order to use these, you must first install SSHDroid. You can find SSHDroid in Google Play at https://play.google.com/store/apps/details?id=berserker.android.apps.sshdroid&amp;amp;hl=en . You can install it with Google Play.&lt;br /&gt;
&lt;br /&gt;
Once it&#039;s installed, lauch the app and note the filed marked &#039;Address&#039;. It will look something like:&lt;br /&gt;
&lt;br /&gt;
 sftp://root@10.23.45.123:2222&lt;br /&gt;
&lt;br /&gt;
The 2222 is the port, and root@10.23.45.123 is the address. You will want to set those environment as the environment variables ANDROID_PORT and ANDROID_ADDR:&lt;br /&gt;
&lt;br /&gt;
 export ANDROID_PORT=2222&lt;br /&gt;
 export ANDROID_ADDR=root@10.23.45.123&lt;br /&gt;
&lt;br /&gt;
Be sure to use the actual values.&lt;br /&gt;
&lt;br /&gt;
Setting up certificates.&lt;br /&gt;
&lt;br /&gt;
First you need to follow the instructions here to set up a pair of SSH keys. If you already have SSH keys set up, then you can skip this step.&lt;br /&gt;
&lt;br /&gt;
Now you need to install the ssh keys into your SSHDroid.&lt;br /&gt;
&lt;br /&gt;
 cd ~/.ssh&lt;br /&gt;
 sftp -o PORT=$ANDROID_PORT $ANDROID_ADDR&lt;br /&gt;
 put id_rsa.pub /sdcard&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Now in the SSHDroid App:&lt;br /&gt;
 select the menu, &lt;br /&gt;
 select &amp;quot;Manage keys&amp;quot;, &lt;br /&gt;
 select menu, &lt;br /&gt;
 select &amp;quot;Import key&amp;quot;, &lt;br /&gt;
 select &amp;quot;Browse&amp;quot;&lt;br /&gt;
 scroll down and select id_rsa.pub&lt;br /&gt;
 select &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Building&lt;br /&gt;
&lt;br /&gt;
Get your nss tree as normal. You&#039;ll need to get nss, nspr, and dbm. These instructions are for NSS 3.14. The easiest way to get and NSS tree is with cvs:&lt;br /&gt;
&lt;br /&gt;
 cvs checkout -d pserver:anonymous@cvs.mozilla.org:/cvsroot mozilla/nsprpub mozilla/dbm mozilla/security/coreconf mozilla/security/nss mozilla/security/dbm&lt;br /&gt;
&lt;br /&gt;
Apply the patch located here.&lt;br /&gt;
&lt;br /&gt;
Use the NSS Makefile to build android:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_build_all&lt;br /&gt;
&lt;br /&gt;
Running the tests&lt;br /&gt;
&lt;br /&gt;
Once NSS for Android has built, you can run the tests on your android device as follows:&lt;br /&gt;
&lt;br /&gt;
 make arm_android_install&lt;br /&gt;
 make arm_android_tests&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSS&amp;diff=448008</id>
		<title>NSS</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSS&amp;diff=448008"/>
		<updated>2012-07-05T22:16:55Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Network Security Services ==&lt;br /&gt;
&lt;br /&gt;
Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards. For detailed information on standards supported, see Overview of NSS.&lt;br /&gt;
&lt;br /&gt;
NSS is available under the Mozilla Public License, the GNU General Public License, and the GNU Lesser General Public License. For information on downloading NSS releases as tar files, see Download PKI Source. &lt;br /&gt;
&lt;br /&gt;
Developers looking for documentation on how to use NSS should try&lt;br /&gt;
[http://developer.mozilla.org/en/docs/NSS the NSS developer wiki].&lt;br /&gt;
&lt;br /&gt;
Mozilla NSS documentation can be found at [http://www.mozilla.org/projects/security/pki/nss/].&lt;br /&gt;
&lt;br /&gt;
Additional documentation is on the developer wiki at&lt;br /&gt;
[http://developer.mozilla.org/en/docs/NSS].&lt;br /&gt;
&lt;br /&gt;
Building and Testing NSS for Android can be found [[NSS:Android| here]]&lt;br /&gt;
&lt;br /&gt;
NSS Planning documentation is here, including:&lt;br /&gt;
*The fourth round of [[FIPS Validation]], which finished in August 2007.&lt;br /&gt;
*[[PSM:CertPrompt|PSM Certificate Prompting Scenarios]]&lt;br /&gt;
*Please visit our [[NSS:Roadmap|NSS Roadmap page here]]&lt;br /&gt;
*[[NSS:Branch_Status|NSS trunk and branch status]]&lt;br /&gt;
*[[NSS:Tags|NSS tags and branches history]]&lt;br /&gt;
*[[NSS:Root certs|NSS root certificates and policies]]&lt;br /&gt;
&lt;br /&gt;
[[Category:NSS]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_1:_Cryptographic_Module_Specification&amp;diff=370339</id>
		<title>NSSCryptoModuleSpec/Section 1: Cryptographic Module Specification</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_1:_Cryptographic_Module_Specification&amp;diff=370339"/>
		<updated>2011-11-16T19:42:21Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This is a draft document&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
Document Description&lt;br /&gt;
!&lt;br /&gt;
DTR &lt;br /&gt;
Section&lt;br /&gt;
!&lt;br /&gt;
Assessment&lt;br /&gt;
!&lt;br /&gt;
Status&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Approved mode of operation&#039;&#039;&#039; || &lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.03.01 VE.01.03.01 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.03.02 VE.01.03.02 ] &lt;br /&gt;
|| &lt;br /&gt;
[http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Security Policy Rule 15] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/FIPS_Module_Specification#Approved_Mode_of_Operation Approved Mode of Operation]&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Processor interfaces&#039;&#039;&#039;&lt;br /&gt;
| [http://wiki.mozilla.org/VE_01#VE.01.06.01 VE.01.06.01 ]&amp;lt;br&amp;gt; [http://wiki.mozilla.org/VE_01#VE.01.06.02 VE.01.06.02 ] &lt;br /&gt;
| (N/A) NSS is a software cryptographic module that runs on a general purpose computer. || Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Modules Components&#039;&#039;&#039;&lt;br /&gt;
| [http://wiki.mozilla.org/VE_01#VE.01.08.01 VE.01.08.01 ] &amp;lt;br&amp;gt; [http://wiki.mozilla.org/VE_01#VE.01.08.02 VE.01.08.02 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Module_Specification#Module_Components Module Components]|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Cryptographic Boundary&#039;&#039;&#039;|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.08.03 VE.01.08.03 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.08.04 VE.01.08.04 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.08.05 VE.01.08.05 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Module_Specification#The_Cryptographic_Boundary Cryptographic Boundary]|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Physical Description&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.08.06 VE.01.08.06 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.08.07 VE.01.08.07 ]&lt;br /&gt;
| (N/A) a general purpose computer || Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Excluded Components&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.09.01 VE.01.09.01 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.09.02 VE.01.09.02 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Module_Specification#Module_Components Module Components]|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Algorithm Certificates&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.12.01 VE.01.12.01 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.12.02 VE.01.12.02 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Validation#Algorithms Approved Algorithms]&lt;br /&gt;
Non-Approved algorithms may only be used in non-FIPS mode, unless an exception is noted:&lt;br /&gt;
* MD2&lt;br /&gt;
* MD5: may be used in the TLS pseudo-random function (PRF) in FIPS mode&lt;br /&gt;
* DES: may be used for interoperation with legacy systems in FIPS mode&lt;br /&gt;
* RC2&lt;br /&gt;
* RC4&lt;br /&gt;
* Camellia&lt;br /&gt;
* SEED&lt;br /&gt;
* JPAKE&lt;br /&gt;
* HKDF&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Hardware Diagrams&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.13.01 VE.01.13.01 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.13.02 VE.01.13.02 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.13.03 VE.01.13.03 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Module_Specification#Hardware_Diagram Hardware Diagram] || Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Block Diagram&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.13.04 VE.01.13.04 ]&lt;br /&gt;
| The physical cryptographic boundary of the NSS module surrounds all the components of the general purpose computer. The logical cryptographic boundary is shown in [http://wiki.mozilla.org/FIPS_Module_Specification#The_Cryptographic_Boundary Cryptographic Boundary]&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Design Specification&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.14.01 VE.01.14.01 ]&lt;br /&gt;
|The design of the software contained in the NSS module is specified in [http://wiki.mozilla.org/FIPS_Module_Specification#Design_Specification Design Specification] || Draft&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Security Policy&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.15.01 VE.01.15.01 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.16.01 VE.01.16.01 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Module_Specification#Security-Related_Information Security-Related Information] &amp;lt;br&amp;gt; [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Security Policy]&lt;br /&gt;
|| Draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Return to: [[NSSCryptoModuleSpec]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_C:_Cryptographic_Security_Policy&amp;diff=370337</id>
		<title>NSSCryptoModuleSpec/Section C: Cryptographic Security Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_C:_Cryptographic_Security_Policy&amp;diff=370337"/>
		<updated>2011-11-16T19:40:50Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This is a draft document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
Document Description&lt;br /&gt;
!&lt;br /&gt;
DTR &lt;br /&gt;
Section&lt;br /&gt;
!&lt;br /&gt;
Assessment&lt;br /&gt;
!&lt;br /&gt;
Status&lt;br /&gt;
|-&lt;br /&gt;
| Image of physical module.&lt;br /&gt;
| [http://wiki.mozilla.org/VE_14#VE14.01.01  VE14.01.01 ] || (N/A) || draft&lt;br /&gt;
|-&lt;br /&gt;
| Specification of Roles&lt;br /&gt;
| &lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.05.01 VE14.05.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.05.02 VE14.05.02 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.05.03 VE14.05.03 ]&lt;br /&gt;
| [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Specification of Roles]&amp;lt;br&amp;gt;[http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Strength of Authentication Mechanism ] || draft&lt;br /&gt;
|-&lt;br /&gt;
| (For Level 1 modules that do not support authentication mechanisms) Description of the roles and instructions for the operator to assume the roles&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/VE_03#VE.03.30.02 VE.03.30.02 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_03#VE.03.30.03 VE.03.30.03 ]&lt;br /&gt;
| [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Specification of Roles]&amp;lt;br&amp;gt;Instructions to assume roles are in the section [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Role-based Authentication]  || draft&lt;br /&gt;
|-&lt;br /&gt;
| Specification of Services&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.07.01 VE14.07.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.07.02 VE14.07.02 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.07.03 VE14.07.03 ]&lt;br /&gt;
| [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Specification of Services] || draft&lt;br /&gt;
|-&lt;br /&gt;
| Physical security&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.08.01 VE14.08.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.08.02 VE14.08.02 ]&lt;br /&gt;
| (N/A) || draft&lt;br /&gt;
|-&lt;br /&gt;
| Mitigation of other attacks&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.09.01 VE14.09.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_14#VE14.09.02 VE14.09.02 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_11#VE.11.01.01 VE.11.01.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_11#VE.11.01.02 VE.11.01.02 ]&lt;br /&gt;
| [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Mitigation of Other Attacks ] &lt;br /&gt;
|| draft&lt;br /&gt;
|-&lt;br /&gt;
| Approved mode of operation&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.03.01 VE.01.03.01 ] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_01#VE.01.03.02 VE.01.03.02 ] &lt;br /&gt;
| &lt;br /&gt;
[http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Security Policy Rule 15] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/FIPS_Module_Specification#Approved_Mode_of_Operation Approved Mode of Operation]&lt;br /&gt;
|| draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Return to: [[NSSCryptoModuleSpec]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_9:_Self_Tests&amp;diff=370336</id>
		<title>NSSCryptoModuleSpec/Section 9: Self Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_9:_Self_Tests&amp;diff=370336"/>
		<updated>2011-11-16T19:39:52Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Note: This is a draft - A work in progress! - Not official.&#039;&#039;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
Document Description&lt;br /&gt;
!&lt;br /&gt;
DTR &lt;br /&gt;
Section&lt;br /&gt;
!&lt;br /&gt;
Assessment&lt;br /&gt;
!&lt;br /&gt;
Status&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;List every error state &amp;amp; error indicator&#039;&#039;&#039; &lt;br /&gt;
- Document all error states associated with &lt;br /&gt;
each self-test, and indicate for each error &lt;br /&gt;
state the expected error indicator.&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.04.01 VE.09.04.01 ]    &lt;br /&gt;
|| &lt;br /&gt;
Failure of any of the power-up, conditional, or operator-initiated self-tests causes the cryptographic module to enter the Error state ([http://wiki.mozilla.org/FIPSFSM#States State 3 ]). If the pairwise consistency test fails, the &amp;lt;code&amp;gt;FC_GenerateKeyPair&amp;lt;/code&amp;gt; function returns the error code &amp;lt;code&amp;gt;CKR_GENERAL_ERROR&amp;lt;/code&amp;gt;. If any other self-test fails, the PKCS #11 function returns the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;. When the cryptographic module is in the Error state, most PKCS #11 functions (including all the functions that perform cryptographic operations) do nothing and return the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;. See also the [http://wiki.mozilla.org/Rolesandservices#Show_Status Show Status] service of the cryptographic module.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|- &lt;br /&gt;
|&#039;&#039;&#039;CKR_DEVICE_ERROR&#039;&#039;&#039; ||  Cryptographic module is in the Error state, or has entered the Error state because a self-test (other than the pairwise consistency test) fails.&lt;br /&gt;
|- &lt;br /&gt;
|&#039;&#039;&#039;CKR_GENERAL_ERROR&#039;&#039;&#039; ||  Cryptographic module has entered the Error state because the pairwise consistency test fails.&lt;br /&gt;
|}&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Module in Error State&#039;&#039;&#039;:&lt;br /&gt;
Ensure that cryptographic operations cannot&lt;br /&gt;
be performed and all data output via the data output interface is inhibited while the module is in the &lt;br /&gt;
error state. See VE02.06.01 for the vendor &lt;br /&gt;
design requirement.&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.05.01 VE.09.05.01 ]          [http://wiki.mozilla.org/VE_09#VE.09.06.01 VE.09.06.01 ]    &lt;br /&gt;
||&lt;br /&gt;
All the PKCS #11 functions that perform cryptographic operations or output data check the Boolean state variable &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; on entry. In the Error state (&amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; is true), no action besides returning the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt; is taken by those functions, which prevents cryptograhic operations and data output. (See also [http://wiki.mozilla.org/ModuleInterfaces#In_Error_State In Error State].)&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;List and describe the power-up &amp;amp; conditional self-tests &lt;br /&gt;
performed by the module&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.07.01 VE.09.07.01 ] [http://wiki.mozilla.org/VE_09#VE.09.13.01 VE.09.13.01 ] [http://wiki.mozilla.org/VE_09#VE.09.16.01 VE.09.16.01 ] [http://wiki.mozilla.org/VE_09#VE.09.18.01 VE.09.18.01 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.18.02 VE.09.18.02 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.19.01 VE.09.19.01 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.19.02 VE.09.19.02 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.20.01 VE.09.20.01 ] &lt;br /&gt;
|| &lt;br /&gt;
* [http://wiki.mozilla.org/Power_Up_Selftests Power-up tests ]&lt;br /&gt;
&lt;br /&gt;
* Conditional tests&lt;br /&gt;
** Pair-wise consistency test (for public and private keys): the module performs the pair-wise consistency test specified in FIPS 140-2 Section 4.9.2 when it generates RSA, DSA, and ECDSA key pairs.&lt;br /&gt;
** Continuous random number generator test: the module performs the continuous random number generator test specified in FIPS 140-2 Section 4.9.2 that tests for failure to a constant value.&lt;br /&gt;
** In addtion to power up, NSS also performs health checks on the random number generate at instantiate and reseed time.&lt;br /&gt;
** No other conditional tests are performed.&lt;br /&gt;
&lt;br /&gt;
These tests are mandatory for the FIPS 140-2 mode of&lt;br /&gt;
operation.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;For each error condition, document the &lt;br /&gt;
actions neccessary to clear the condition &lt;br /&gt;
and resume normal operation.&#039;&#039;&#039; &lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.07.02 VE.09.07.02 ]    &lt;br /&gt;
|| &lt;br /&gt;
The cryptographic module has only one Error state, which is entered when any self-test fails. The error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt; returned by cryptographic functions indicates that the module is in the Error state. For the fatal error condition &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;,&lt;br /&gt;
the only way to clear &lt;br /&gt;
the condition is to shut down and restart the module. Upon&lt;br /&gt;
restart the power-up tests will be &lt;br /&gt;
initiated automatically and do not require&lt;br /&gt;
operator intervention.  &lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Describe automatic initiation of power-up self-tests&#039;&#039;&#039;&lt;br /&gt;
requires that the running of power-up &lt;br /&gt;
self-tests not involve any inputs from &lt;br /&gt;
or actions by the operator.&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.09.01 VE.09.09.01 ]    &lt;br /&gt;
||&lt;br /&gt;
When the &amp;lt;code&amp;gt;FC_Initialize&amp;lt;/code&amp;gt; function is called, which initializes the PKCS #11 library of the NSS cryptographic module for the FIPS Approved mode of operation, the power-up self-tests are initiated automatically and don&#039;t require operator intervention.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Results of power-up self-tests&#039;&#039;&#039; successful completion indicator for the power-up self-tests.&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.10.01 VE.09.10.01 ]    &lt;br /&gt;
||&lt;br /&gt;
The &amp;lt;code&amp;gt;FC_Initialize&amp;lt;/code&amp;gt; function returns the code &amp;lt;code&amp;gt;CKR_OK&amp;lt;/code&amp;gt; upon successful completion of the power-up self-tests.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Procedure by which an operator can&lt;br /&gt;
initiate the power-up self-tests on demand&#039;&#039;&#039;&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.12.01 VE.09.12.01 ]    &lt;br /&gt;
||&lt;br /&gt;
The operator can initiate the power-up self-tests on demand by calling the &amp;lt;code&amp;gt;FC_Finalize&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;FC_Initialize&amp;lt;/code&amp;gt; functions to shut down and restart the module.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;specify the method used to compare the &lt;br /&gt;
calculated output with the known answer.&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.17.01 VE.09.17.01 ]    &lt;br /&gt;
|| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PORT_Memcmp&amp;lt;/code&amp;gt;, a synonym for &amp;lt;code&amp;gt;memcmp&amp;lt;/code&amp;gt;, is used to compare the calculated output with the known answer byte by byte. &lt;br /&gt;
[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/fipstest.c.dep.html                      sftk_fipsPowerUpSelfTest]&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Error State&#039;&#039;&#039; when two outputs are &lt;br /&gt;
not equal. &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.17.02 VE.09.17.02 ]    &lt;br /&gt;
|| &lt;br /&gt;
When the two outputs are not equal, the module enters the Error state (by setting the Boolean state variable &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true) and returns the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;. &lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Independant cryptographic algorithm implemenations&#039;&#039;&#039;  &lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.20.02 VE.09.20.02 ]   &lt;br /&gt;
||&lt;br /&gt;
(N/A) The NSS cryptographic module doesn&#039;t include two independent implementations of the same cryptographic algorithm.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Integrity test for software components&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.22.01 VE.09.22.01 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.22.02 VE.09.22.02 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.22.03 VE.09.22.03 ]    &lt;br /&gt;
|| &lt;br /&gt;
 &lt;br /&gt;
[http://wiki.mozilla.org/FIPS_Operational_Environment#Software_Integrity_Test Software Integrity Test]&lt;br /&gt;
&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EDC for software integrity&#039;&#039;&#039; &lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.24.01 VE.09.24.01 ] &lt;br /&gt;
|| (N/A) ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Critical functions test&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.27.01 VE.09.27.01 ] &lt;br /&gt;
||&lt;br /&gt;
The critical security functions of the cryptographic module are:&lt;br /&gt;
* Random number generation. Used for the generation of cryptographic keys used by Approved cryptographic algorithms. Tested by the random number generator health tests on power up, instantiate and reseed time and the conditional [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/freebl/prng_fips1861.c.dep.html#alg_fips186_2_cn_1 continuous random number generator test].&lt;br /&gt;
* Operation of the cryptographic algorithms. Used for encryption, decryption, and authentication. Tested by the power-up [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/fipstest.c.html cryptographic algorithm tests] and the conditional [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11c.c.dep.html#sftk_PairwiseConsistencyCheck pairwise consistency test] (when the module generates public and private keys).&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Key transport method&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.31.01 VE.09.31.01] &lt;br /&gt;
|| &lt;br /&gt;
RSA encryption (Key Wrapping using RSA keys) is the only key transport&lt;br /&gt;
method that VE.09.31.01 applies to. The pairwise consistency check, as defined in AS09.31, is implemented in the &amp;lt;code&amp;gt;[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11c.c.dep.html#sftk_PairwiseConsistencyCheck sftk_PairwiseConsistencyCheck]&amp;lt;/code&amp;gt; function. (See the source code under the comment &amp;quot;Pairwise Consistency Check of Encrypt/Decrypt.&amp;quot;) If the &amp;lt;code&amp;gt;sftk_PairwiseConsistencyCheck&amp;lt;/code&amp;gt; call fails, &amp;lt;code&amp;gt;FC_GenerateKeyPair&amp;lt;/code&amp;gt; sets &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true (to enter the Error state) and returns the error code &amp;lt;code&amp;gt;CKR_GENERAL_ERROR&amp;lt;/code&amp;gt;.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Digital signatures&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.33.01 VE.09.33.01 ] &lt;br /&gt;
||&lt;br /&gt;
The &amp;lt;code&amp;gt;[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11c.c.dep.html#sftk_PairwiseConsistencyCheck sftk_PairwiseConsistencyCheck]&amp;lt;/code&amp;gt; function of the module tests the pairwise consistency of the public and private keys used for digital signatures by the calculation and verification of a signature. If the signature cannot be verified, the test fails. (See the source code under the comment &amp;quot;Pairwise Consistency Check of Sign/Verify.&amp;quot;) If the &amp;lt;code&amp;gt;sftk_PairwiseConsistencyCheck&amp;lt;/code&amp;gt; call fails, &amp;lt;code&amp;gt;FC_GenerateKeyPair&amp;lt;/code&amp;gt; sets &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true (to enter the Error state) and returns the error code &amp;lt;code&amp;gt;CKR_GENERAL_ERROR&amp;lt;/code&amp;gt;.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Approved authentication technique used for the software/firmware load test&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.35.01 VE.09.35.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.35.02 VE.09.35.02 ] &lt;br /&gt;
||&lt;br /&gt;
N/A. No software or firmware components can be externally loaded into the cryptographic&lt;br /&gt;
module.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Manual Key Entry Test&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.40.01 VE.09.40.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.40.02 VE.09.40.02 ] &lt;br /&gt;
|| (N/A) The cryptographic module does not support manual key entry. ||&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Random number generator&#039;&#039;&#039; is implemented, document &lt;br /&gt;
the continuous RNG test performed &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.42.01 VE.09.42.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.43.01 VE.09.43.01 ] &lt;br /&gt;
|| &lt;br /&gt;
There is only one random number generator (RNG) used in the NSS cryptographic module. The RNG is an Approved RNG, implementing Algorithm Hash_DRBG of [http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf NIST SP 800-90].&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Bypass Test&#039;&#039;&#039;  || &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.45.01 VE.09.45.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.45.02 VE.09.45.02 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.46.01 VE.09.46.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.46.02 VE.09.46.02 ] &lt;br /&gt;
|| (N/A) NSS does not implement a bypass service. &lt;br /&gt;
|| Draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Return to: [[NSSCryptoModuleSpec]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Power_Up_Selftests&amp;diff=370331</id>
		<title>Power Up Selftests</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Power_Up_Selftests&amp;diff=370331"/>
		<updated>2011-11-16T19:35:35Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Cryptographic algorithm tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Power-Up Self-Tests=&lt;br /&gt;
&lt;br /&gt;
The module can perform the following power-up self-tests:&lt;br /&gt;
&lt;br /&gt;
==Cryptographic algorithm tests==&lt;br /&gt;
A known-answer test is conducted for all cryptographic functions (e.g., encryption, decryption, authentication, and random number generation) of each Approved cryptographic algorithm implemented by the cryptographic module. (See the [http://mxr.mozilla.org/security/source/security/nss/lib/softoken/fipstest.c power-up self-tests source code].)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
Algorithm&lt;br /&gt;
!&lt;br /&gt;
Tests&lt;br /&gt;
|-&lt;br /&gt;
| RC2||&lt;br /&gt;
RC2-ECB Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
RC2-ECB Single-Round Known Answer Decryption&amp;lt;br&amp;gt;&lt;br /&gt;
RC2-CBC Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
RC2-CBC Single-Round Known Answer Decryption&lt;br /&gt;
|-&lt;br /&gt;
| RC4||&lt;br /&gt;
Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Decryption&lt;br /&gt;
|-&lt;br /&gt;
| DES||&lt;br /&gt;
DES-ECB Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
DES-ECB Single-Round Known Answer Decryption&amp;lt;br&amp;gt;&lt;br /&gt;
DES-CBC Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
DES-CBC Single-Round Known Answer Decryption&lt;br /&gt;
|-&lt;br /&gt;
| Triple DES||&lt;br /&gt;
DES3-ECB Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
DES3-ECB Single-Round Known Answer Decryption&amp;lt;br&amp;gt;&lt;br /&gt;
DES3-CBC Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
DES3-CBC Single-Round Known Answer Decryption&lt;br /&gt;
|-&lt;br /&gt;
| AES-128, AES-192, AES-256||&lt;br /&gt;
AES-ECB Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
AES-ECB Single-Round Known Answer Decryption&amp;lt;br&amp;gt;&lt;br /&gt;
AES-CBC Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
AES-CBC Single-Round Known Answer Decryption&lt;br /&gt;
|-&lt;br /&gt;
| MD2||&lt;br /&gt;
Single-Round Known Answer Hashing&lt;br /&gt;
|-&lt;br /&gt;
| MD5||&lt;br /&gt;
Single-Round Known Answer Hashing&lt;br /&gt;
|-&lt;br /&gt;
| SHA-1, SHA-256, SHA-384, SHA-512||&lt;br /&gt;
Single-Round Known Answer Hashing&lt;br /&gt;
|-&lt;br /&gt;
| HMAC-SHA-1, HMAC-SHA-256, HMAC-SHA-384, HMAC-SHA-512||&lt;br /&gt;
Single-Round Known Answer HMAC&lt;br /&gt;
|-&lt;br /&gt;
| RSA||&lt;br /&gt;
Single-Round Known Answer Encryption&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Decryption&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Signature Test SHA-1&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Signature Test SHA-256&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Signature Test SHA-384&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Signature Test SHA-512&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DSA||&lt;br /&gt;
Single-Round Known Answer Signature&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Verification&lt;br /&gt;
|-&lt;br /&gt;
| RNG||&lt;br /&gt;
NIST SP 800-90 Hash_Drbg Known Answer Test&amp;lt;br&amp;gt;&lt;br /&gt;
NIST SP 800-90 Invalid input checks&amp;lt;br&amp;gt;&lt;br /&gt;
NIST SP 800-90 Automatic reseed checks&amp;lt;br&amp;gt;&lt;br /&gt;
[Collectively NIST SP 800-90 DRBG Health Checks]&lt;br /&gt;
|-&lt;br /&gt;
| ECDSA - NIST Curve P-256 (the Extended ECC version of the module also tests Curve K-283)||&lt;br /&gt;
Single-Round Known Answer Signature&amp;lt;br&amp;gt;&lt;br /&gt;
Single-Round Known Answer Verification&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=note&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Cryptographic algorithms whose outputs vary for a given set of inputs (DSA and ECDSA) are tested using a known-answer test. The message digest algorithms have independent known-answer tests.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Random number generator test==&lt;br /&gt;
&lt;br /&gt;
See the known-answer test for RNG above.&lt;br /&gt;
&lt;br /&gt;
==Software/firmware integrity test==&lt;br /&gt;
An integrity check is performed on the libraries that contain the NSS cryptographic module. If the check fails, the module immediately enters the Error state.&lt;br /&gt;
&lt;br /&gt;
==Critical functions test==&lt;br /&gt;
No other critical functions tests are performed on power-up.&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_9:_Self_Tests&amp;diff=370327</id>
		<title>NSSCryptoModuleSpec/Section 9: Self Tests</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_9:_Self_Tests&amp;diff=370327"/>
		<updated>2011-11-16T19:31:43Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;Note: This is a draft - A work in progress! - Not official.&#039;&#039;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
Document Description&lt;br /&gt;
!&lt;br /&gt;
DTR &lt;br /&gt;
Section&lt;br /&gt;
!&lt;br /&gt;
Assessment&lt;br /&gt;
!&lt;br /&gt;
Status&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;List every error state &amp;amp; error indicator&#039;&#039;&#039; &lt;br /&gt;
- Document all error states associated with &lt;br /&gt;
each self-test, and indicate for each error &lt;br /&gt;
state the expected error indicator.&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.04.01 VE.09.04.01 ]    &lt;br /&gt;
|| &lt;br /&gt;
Failure of any of the power-up, conditional, or operator-initiated self-tests causes the cryptographic module to enter the Error state ([http://wiki.mozilla.org/FIPSFSM#States State 3 ]). If the pairwise consistency test fails, the &amp;lt;code&amp;gt;FC_GenerateKeyPair&amp;lt;/code&amp;gt; function returns the error code &amp;lt;code&amp;gt;CKR_GENERAL_ERROR&amp;lt;/code&amp;gt;. If any other self-test fails, the PKCS #11 function returns the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;. When the cryptographic module is in the Error state, most PKCS #11 functions (including all the functions that perform cryptographic operations) do nothing and return the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;. See also the [http://wiki.mozilla.org/Rolesandservices#Show_Status Show Status] service of the cryptographic module.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|- &lt;br /&gt;
|&#039;&#039;&#039;CKR_DEVICE_ERROR&#039;&#039;&#039; ||  Cryptographic module is in the Error state, or has entered the Error state because a self-test (other than the pairwise consistency test) fails.&lt;br /&gt;
|- &lt;br /&gt;
|&#039;&#039;&#039;CKR_GENERAL_ERROR&#039;&#039;&#039; ||  Cryptographic module has entered the Error state because the pairwise consistency test fails.&lt;br /&gt;
|}&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Module in Error State&#039;&#039;&#039;:&lt;br /&gt;
Ensure that cryptographic operations cannot&lt;br /&gt;
be performed and all data output via the data output interface is inhibited while the module is in the &lt;br /&gt;
error state. See VE02.06.01 for the vendor &lt;br /&gt;
design requirement.&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.05.01 VE.09.05.01 ]          [http://wiki.mozilla.org/VE_09#VE.09.06.01 VE.09.06.01 ]    &lt;br /&gt;
||&lt;br /&gt;
All the PKCS #11 functions that perform cryptographic operations or output data check the Boolean state variable &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; on entry. In the Error state (&amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; is true), no action besides returning the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt; is taken by those functions, which prevents cryptograhic operations and data output. (See also [http://wiki.mozilla.org/ModuleInterfaces#In_Error_State In Error State].)&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;List and describe the power-up &amp;amp; conditional self-tests &lt;br /&gt;
performed by the module&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.07.01 VE.09.07.01 ] [http://wiki.mozilla.org/VE_09#VE.09.13.01 VE.09.13.01 ] [http://wiki.mozilla.org/VE_09#VE.09.16.01 VE.09.16.01 ] [http://wiki.mozilla.org/VE_09#VE.09.18.01 VE.09.18.01 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.18.02 VE.09.18.02 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.19.01 VE.09.19.01 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.19.02 VE.09.19.02 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.20.01 VE.09.20.01 ] &lt;br /&gt;
|| &lt;br /&gt;
* [http://wiki.mozilla.org/Power_Up_Selftests Power-up tests ]&lt;br /&gt;
&lt;br /&gt;
* Conditional tests&lt;br /&gt;
** Pair-wise consistency test (for public and private keys): the module performs the pair-wise consistency test specified in FIPS 140-2 Section 4.9.2 when it generates RSA, DSA, and ECDSA key pairs.&lt;br /&gt;
** Continuous random number generator test: the module performs the continuous random number generator test specified in FIPS 140-2 Section 4.9.2 that tests for failure to a constant value.&lt;br /&gt;
** In addtion to power up, NSS also performs health checks on the random number generate at instantiate and reseed time.&lt;br /&gt;
** No other conditional tests are performed.&lt;br /&gt;
&lt;br /&gt;
These tests are mandatory for the FIPS 140-2 mode of&lt;br /&gt;
operation.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;For each error condition, document the &lt;br /&gt;
actions neccessary to clear the condition &lt;br /&gt;
and resume normal operation.&#039;&#039;&#039; &lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.07.02 VE.09.07.02 ]    &lt;br /&gt;
|| &lt;br /&gt;
The cryptographic module has only one Error state, which is entered when any self-test fails. The error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt; returned by cryptographic functions indicates that the module is in the Error state. For the fatal error condition &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;,&lt;br /&gt;
the only way to clear &lt;br /&gt;
the condition is to shut down and restart the module. Upon&lt;br /&gt;
restart the power-up tests will be &lt;br /&gt;
initiated automatically and do not require&lt;br /&gt;
operator intervention.  &lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Describe automatic initiation of power-up self-tests&#039;&#039;&#039;&lt;br /&gt;
requires that the running of power-up &lt;br /&gt;
self-tests not involve any inputs from &lt;br /&gt;
or actions by the operator.&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.09.01 VE.09.09.01 ]    &lt;br /&gt;
||&lt;br /&gt;
When the &amp;lt;code&amp;gt;FC_Initialize&amp;lt;/code&amp;gt; function is called, which initializes the PKCS #11 library of the NSS cryptographic module for the FIPS Approved mode of operation, the power-up self-tests are initiated automatically and don&#039;t require operator intervention.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Results of power-up self-tests&#039;&#039;&#039; successful completion indicator for the power-up self-tests.&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.10.01 VE.09.10.01 ]    &lt;br /&gt;
||&lt;br /&gt;
The &amp;lt;code&amp;gt;FC_Initialize&amp;lt;/code&amp;gt; function returns the code &amp;lt;code&amp;gt;CKR_OK&amp;lt;/code&amp;gt; upon successful completion of the power-up self-tests.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Procedure by which an operator can&lt;br /&gt;
initiate the power-up self-tests on demand&#039;&#039;&#039;&lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.12.01 VE.09.12.01 ]    &lt;br /&gt;
||&lt;br /&gt;
The operator can initiate the power-up self-tests on demand by calling the &amp;lt;code&amp;gt;FC_Finalize&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;FC_Initialize&amp;lt;/code&amp;gt; functions to shut down and restart the module.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;specify the method used to compare the &lt;br /&gt;
calculated output with the known answer.&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.17.01 VE.09.17.01 ]    &lt;br /&gt;
|| &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;PORT_Memcmp&amp;lt;/code&amp;gt;, a synonym for &amp;lt;code&amp;gt;memcmp&amp;lt;/code&amp;gt;, is used to compare the calculated output with the known answer byte by byte. &lt;br /&gt;
[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/fipstest.c.dep.html                      sftk_fipsPowerUpSelfTest]&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Error State&#039;&#039;&#039; when two outputs are &lt;br /&gt;
not equal. &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.17.02 VE.09.17.02 ]    &lt;br /&gt;
|| &lt;br /&gt;
When the two outputs are not equal, the module enters the Error state (by setting the Boolean state variable &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true) and returns the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt;. &lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Independant cryptographic algorithm implemenations&#039;&#039;&#039;  &lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.20.02 VE.09.20.02 ]   &lt;br /&gt;
||&lt;br /&gt;
(N/A) The NSS cryptographic module doesn&#039;t include two independent implementations of the same cryptographic algorithm.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Integrity test for software components&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.22.01 VE.09.22.01 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.22.02 VE.09.22.02 ]    &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.22.03 VE.09.22.03 ]    &lt;br /&gt;
|| &lt;br /&gt;
 &lt;br /&gt;
[http://wiki.mozilla.org/FIPS_Operational_Environment#Software_Integrity_Test Software Integrity Test]&lt;br /&gt;
&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EDC for software integrity&#039;&#039;&#039; &lt;br /&gt;
|| [http://wiki.mozilla.org/VE_09#VE.09.24.01 VE.09.24.01 ] &lt;br /&gt;
|| (N/A) ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Critical functions test&#039;&#039;&#039; &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.27.01 VE.09.27.01 ] &lt;br /&gt;
||&lt;br /&gt;
The critical security functions of the cryptographic module are:&lt;br /&gt;
* Random number generation. Used for the generation of cryptographic keys used by Approved cryptographic algorithms. Tested by the power-up random number generator known-answer test and the conditional [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/freebl/prng_fips1861.c.dep.html#alg_fips186_2_cn_1 continuous random number generator test].&lt;br /&gt;
* Operation of the cryptographic algorithms. Used for encryption, decryption, and authentication. Tested by the power-up [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/fipstest.c.html cryptographic algorithm tests] and the conditional [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11c.c.dep.html#sftk_PairwiseConsistencyCheck pairwise consistency test] (when the module generates public and private keys).&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Key transport method&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.31.01 VE.09.31.01] &lt;br /&gt;
|| &lt;br /&gt;
RSA encryption (Key Wrapping using RSA keys) is the only key transport&lt;br /&gt;
method that VE.09.31.01 applies to. The pairwise consistency check, as defined in AS09.31, is implemented in the &amp;lt;code&amp;gt;[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11c.c.dep.html#sftk_PairwiseConsistencyCheck sftk_PairwiseConsistencyCheck]&amp;lt;/code&amp;gt; function. (See the source code under the comment &amp;quot;Pairwise Consistency Check of Encrypt/Decrypt.&amp;quot;) If the &amp;lt;code&amp;gt;sftk_PairwiseConsistencyCheck&amp;lt;/code&amp;gt; call fails, &amp;lt;code&amp;gt;FC_GenerateKeyPair&amp;lt;/code&amp;gt; sets &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true (to enter the Error state) and returns the error code &amp;lt;code&amp;gt;CKR_GENERAL_ERROR&amp;lt;/code&amp;gt;.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Digital signatures&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.33.01 VE.09.33.01 ] &lt;br /&gt;
||&lt;br /&gt;
The &amp;lt;code&amp;gt;[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11c.c.dep.html#sftk_PairwiseConsistencyCheck sftk_PairwiseConsistencyCheck]&amp;lt;/code&amp;gt; function of the module tests the pairwise consistency of the public and private keys used for digital signatures by the calculation and verification of a signature. If the signature cannot be verified, the test fails. (See the source code under the comment &amp;quot;Pairwise Consistency Check of Sign/Verify.&amp;quot;) If the &amp;lt;code&amp;gt;sftk_PairwiseConsistencyCheck&amp;lt;/code&amp;gt; call fails, &amp;lt;code&amp;gt;FC_GenerateKeyPair&amp;lt;/code&amp;gt; sets &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true (to enter the Error state) and returns the error code &amp;lt;code&amp;gt;CKR_GENERAL_ERROR&amp;lt;/code&amp;gt;.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Approved authentication technique used for the software/firmware load test&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.35.01 VE.09.35.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.35.02 VE.09.35.02 ] &lt;br /&gt;
||&lt;br /&gt;
N/A. No software or firmware components can be externally loaded into the cryptographic&lt;br /&gt;
module.&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Manual Key Entry Test&#039;&#039;&#039;&lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.40.01 VE.09.40.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.40.02 VE.09.40.02 ] &lt;br /&gt;
|| (N/A) The cryptographic module does not support manual key entry. ||&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&#039;&#039;&#039;Random number generator&#039;&#039;&#039; is implemented, document &lt;br /&gt;
the continuous RNG test performed &lt;br /&gt;
|| &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.42.01 VE.09.42.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.43.01 VE.09.43.01 ] &lt;br /&gt;
|| &lt;br /&gt;
There is only one random number generator (RNG) used in the NSS cryptographic module. The RNG is an Approved RNG, implementing Algorithm Hash_DRBG of [http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf NIST SP 800-90].&lt;br /&gt;
|| Draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Bypass Test&#039;&#039;&#039;  || &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.45.01 VE.09.45.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.45.02 VE.09.45.02 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.46.01 VE.09.46.01 ] &lt;br /&gt;
[http://wiki.mozilla.org/VE_09#VE.09.46.02 VE.09.46.02 ] &lt;br /&gt;
|| (N/A) NSS does not implement a bypass service. &lt;br /&gt;
|| Draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Return to: [[NSSCryptoModuleSpec]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_10:_Design_Assurance&amp;diff=370297</id>
		<title>NSSCryptoModuleSpec/Section 10: Design Assurance</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=NSSCryptoModuleSpec/Section_10:_Design_Assurance&amp;diff=370297"/>
		<updated>2011-11-16T19:08:51Z</updated>

		<summary type="html">&lt;p&gt;Relyea: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;This is a draft document.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
Document Description&lt;br /&gt;
!&lt;br /&gt;
DTR &lt;br /&gt;
Section&lt;br /&gt;
!&lt;br /&gt;
Assessment&lt;br /&gt;
!&lt;br /&gt;
Status&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Configuration Management&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.01.01 VE.10.01.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.02.01 VE.10.02.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.02.02 VE.10.02.02 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Design_Assurance#Configuration_Management Configuration Management]&lt;br /&gt;
Executable files for each platform are listed in [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Security Policy Rule 15].&lt;br /&gt;
| draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Installation, Initialization, and Start-up&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.03.01 VE.10.03.01 ]&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/FIPS_Design_Assurance#Installation Installation]&lt;br /&gt;
| draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Delivery&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.04.01 VE.10.04.01 ]&lt;br /&gt;
|&lt;br /&gt;
[http://wiki.mozilla.org/FIPS_Design_Assurance#Delivery Delivery]&lt;br /&gt;
| draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Module Components and Security Policy&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.06.01 VE.10.06.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.07.01 VE.10.07.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.07.02 VE.10.07.02 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.08.01 VE.10.08.01 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Design_Assurance#Components Components]&lt;br /&gt;
| draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Functional Specification&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.10.01 VE.10.10.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.10.02 VE.10.10.02 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Design_Assurance#Functional_Specification Functional Specification]&lt;br /&gt;
| draft&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Crypto Officer and User Guidance&#039;&#039;&#039;||&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.23.01 VE.10.23.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.23.02 VE.10.23.02 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.25.01 VE.10.25.01 ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://wiki.mozilla.org/VE_10#VE.10.25.02 VE.10.25.02 ]&lt;br /&gt;
| [http://wiki.mozilla.org/FIPS_Design_Assurance#Functions Functions]&lt;br /&gt;
|| draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Return to: [[NSSCryptoModuleSpec]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_Operational_Environment&amp;diff=370279</id>
		<title>FIPS Operational Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_Operational_Environment&amp;diff=370279"/>
		<updated>2011-11-16T18:59:26Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Software Integrity Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Operational Environment==&lt;br /&gt;
&lt;br /&gt;
The operational environment for the NSS cryptographic module is a general purpose, modifiable operational environment that uses one of the following commercially-available operating systems:&lt;br /&gt;
&lt;br /&gt;
* Security Level 1&lt;br /&gt;
** Red Hat Enterprise Linux Version 6 32 bit&lt;br /&gt;
** Red Hat Enterprise Linux Version 6 64 bit&lt;br /&gt;
&lt;br /&gt;
==Single Operator Mode of Operation==&lt;br /&gt;
&lt;br /&gt;
All the major general purpose operating systems today are multi-user OS. When the NSS cryptographic module is used at Security Level 1, only one user account should be created in the OS. The following explains how to configure each OS for single user. &lt;br /&gt;
&lt;br /&gt;
===Mac OS X Instructions===&lt;br /&gt;
&lt;br /&gt;
To delete other user accounts&lt;br /&gt;
# Log into your user account.&lt;br /&gt;
# From the &#039;&#039;&#039;Apple&#039;&#039;&#039; menu, choose &#039;&#039;&#039;System Preferences&#039;&#039;&#039;.&lt;br /&gt;
# From the &#039;&#039;&#039;View&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Accounts&#039;&#039;&#039;.&lt;br /&gt;
# All the user accounts are listed on the left hand side of the &#039;&#039;&#039;Accounts&#039;&#039;&#039; dialog. Your user account is listed under &#039;&#039;&#039;My Account&#039;&#039;&#039; and should have Admin privilege. If there is no user account under &#039;&#039;&#039;Other Accounts&#039;&#039;&#039;, stop here. Otherwise, follow the steps below to delete the other accounts.&lt;br /&gt;
# If the lock icon at the lower left corner of the &#039;&#039;&#039;Accounts&#039;&#039;&#039; dialog is locked, click the lock to make changes.&lt;br /&gt;
# Select a user account under &#039;&#039;&#039;Other Accounts&#039;&#039;&#039;.&lt;br /&gt;
# Click the minus sign (-) at the lower left corner of the &#039;&#039;&#039;Accounts&#039;&#039;&#039; dialog to delete the selected user account.&lt;br /&gt;
# Repeat the above two steps until there is no user account under &#039;&#039;&#039;Other Accounts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To turn off remote login and other services&lt;br /&gt;
# Log into your user account.&lt;br /&gt;
# From the &#039;&#039;&#039;Apple&#039;&#039;&#039; menu, choose &#039;&#039;&#039;System Preferences&#039;&#039;&#039;.&lt;br /&gt;
# From the &#039;&#039;&#039;View&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Sharing&#039;&#039;&#039;.&lt;br /&gt;
# In the &#039;&#039;&#039;Sharing&#039;&#039;&#039; dialog, select the &#039;&#039;&#039;Services&#039;&#039;&#039; tab. All the services are listed under the message &amp;quot;Select a service to change its settings.&amp;quot; If none of the checkboxes is checked, stop here. Otherwise, follow the steps below.&lt;br /&gt;
# If the lock icon at the lower left corner of the &#039;&#039;&#039;Sharing&#039;&#039;&#039; dialog is locked, click the lock to make changes.&lt;br /&gt;
# Unckeck all the checkboxes, including &#039;&#039;&#039;Remote Login&#039;&#039;&#039;, &#039;&#039;&#039;FTP Access&#039;&#039;&#039;, and &#039;&#039;&#039;Apple Remote Desktop&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* NSA, &#039;&#039;[http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml NSA Security Configuration Guide] &lt;br /&gt;
* [http://www.nsa.gov/applications/links/notices.cfm?address=http://images.apple.com/support/security/guides/docs/Leopard_Security_Config_2nd_Ed.pdf Mac OS X Security Configuration for Version 10.5 Leopard Second Edition]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Unix Instructions===&lt;br /&gt;
The general idea is the same across all Unix variants.&lt;br /&gt;
* Remove all login accounts except &amp;quot;root&amp;quot; (the superuser).&lt;br /&gt;
* Disable NIS and other name services for users and groups.&lt;br /&gt;
* Turn off all remote login, remote command execution, and file transfer daemons.&lt;br /&gt;
&lt;br /&gt;
The specific procedures for each of the UNIX variants are described below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Red Hat Enterprise Linux&#039;&#039;&#039;&lt;br /&gt;
# Log in as the &amp;quot;root&amp;quot; user.&lt;br /&gt;
# Edit the system files &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; and remove all the users except &amp;quot;root&amp;quot; and the pseudo-users. Make sure the password fields in &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; for the pseudo-users are either a star (*) or double exclamation mark (!!). This prevents login as the pseudo-users.&lt;br /&gt;
# Edit the system file &amp;lt;code&amp;gt;/etc/nsswitch.conf&amp;lt;/code&amp;gt; and make &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt; the only option for &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shadow&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;group&amp;lt;/code&amp;gt;. This disables NIS and other name services for users and groups.&lt;br /&gt;
# In the &amp;lt;code&amp;gt;/etc/xinetd.d&amp;lt;/code&amp;gt; directory, edit the files &amp;lt;code&amp;gt;eklogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gssftp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;klogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;krb5-telnet&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kshell&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rexec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rlogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;tftp&amp;lt;/code&amp;gt;, and set the value of &amp;lt;code&amp;gt;disable&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Reboot the system for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* NSA, &#039;&#039;[http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml NSA Security Configuration Guide] &lt;br /&gt;
* &#039;&#039;[http://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf&lt;br /&gt;
Guide to the Secure Configuration of Red Hat Enterprise Linux 5]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solaris&#039;&#039;&#039;&lt;br /&gt;
# Log in as the &amp;quot;root&amp;quot; user.&lt;br /&gt;
# Edit the system files &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; and remove all the users except &amp;quot;root&amp;quot; and the pseudo-users. Make sure the password fields in &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; for the pseudo-users are either a star (*) or NP. This prevents login as the pseudo-users.&lt;br /&gt;
# Edit the system file &amp;lt;code&amp;gt;/etc/nsswitch.conf&amp;lt;/code&amp;gt; and make &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt; the only option for &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shadow&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;group&amp;lt;/code&amp;gt;. This disables NIS and other name services for users and groups.&lt;br /&gt;
# In the &amp;lt;code&amp;gt;/etc/inetd.d&amp;lt;/code&amp;gt; directory, edit the files &amp;lt;code&amp;gt;eklogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gssftp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;klogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;krb5-telnet&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kshell&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rexec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rlogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;tftp&amp;lt;/code&amp;gt;, and set the value of &amp;lt;code&amp;gt;disable&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Reboot the system for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* NSA, &#039;&#039;[http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml NSA Security Configuration Guide] &lt;br /&gt;
* &#039;&#039;[http://www.nsa.gov/ia/_files/os/sunsol_10/s10-cis-appendix-v1.1.pdf &lt;br /&gt;
An Overview of Solaris 10 Operating System Security Controls ]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Windows XP Instructions===&lt;br /&gt;
&lt;br /&gt;
# Log on with your user account.&lt;br /&gt;
# Click &#039;&#039;&#039;Start &amp;gt; Control Panel &amp;gt; User Accounts&#039;&#039;&#039;.&lt;br /&gt;
# Make sure the &#039;&#039;&#039;Guest&#039;&#039;&#039; account is off. If the Guest account is on, click its icon and click &amp;quot;Turn off the guest account&amp;quot; to turn it off.&lt;br /&gt;
# Follow the steps below to delete the other accounts.  &amp;lt;div class=note&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; User Accounts may show some accounts that are used by programs. For example, &#039;&#039;&#039;ASP.NET Machine Account&#039;&#039;&#039; (shown as &#039;&#039;&#039;ASP.NET Machine A...&#039;&#039;&#039; in User Accounts) is used by Microsoft .NET Framework 1.1 for running the ASN.NET worker process (aspnet_wp.exe), and &#039;&#039;&#039;SQLDebugger&#039;&#039;&#039; is used by Microsoft Visual Studio .NET Debugger. Deleting such accounts could cripple the programs using these accounts. As a precaution, remove those programs before deleting these accounts.&amp;lt;/div&amp;gt;&lt;br /&gt;
# Click the icon of an account other than your own account and the &#039;&#039;&#039;Guest&#039;&#039;&#039; account.&lt;br /&gt;
# Click &amp;quot;Delete the account&amp;quot;.&lt;br /&gt;
# Repeat the above two steps until all the accounts other than your own account and the &#039;&#039;&#039;Guest&#039;&#039;&#039; account have been deleted.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [http://csrc.ncsl.nist.gov/publications/nistpubs/index.html#sp800-68 SP 800-68 Guidance for Securing Microsoft Windows XP Systems for IT Professionals: A NIST Security Configuration Checklist]. Section 6.5 &#039;&#039;System Services&#039;&#039; explains how to disable unnecessary services such as &#039;&#039;&#039;NetMeeting Remote Desktop Sharing&#039;&#039;&#039; and &#039;&#039;&#039;Telnet&#039;&#039;&#039; to reduce the number of attack vectors against the system. Section 7.2.1 &#039;&#039;Built-in Accounts&#039;&#039; explains how to disable default user accounts, which are often used in exploits against computer systems. Note that the recommendation in Section 7.2.3 &#039;&#039;Daily Use Accounts&#039;&#039; is at odds with the single operator mode of operation requirement of FIPS 140-2 Security Level 1.&lt;br /&gt;
* [http://csrc.ncsl.nist.gov/publications/nistpubs/index.html#sp800-69 Draft SP 800-69 Draft Special Publication 800-69, Guidance for Securing Microsoft Windows XP Home Edition: A NIST Security Configuration Checklist]. Read Appendix B.2 &#039;&#039;Disable Default User Accounts&#039;&#039; and Appendix B.5 &#039;&#039;Disable Unneeded Services&#039;&#039;. Note that Appendix A &#039;&#039;Essential Security Settings&#039;&#039;, Step 6: &#039;&#039;Set Up Limited User Accounts&#039;&#039; is at odds with the single operator mode of operation requirement of FIPS 140-2 Security Level 1.&lt;br /&gt;
* [http://www.nsa.gov/ia/_files/os/winxp/NSA_Windows_XP_Security_Guide_Addendum.pdf NSA Windows XP Security Guide Addendum]&lt;br /&gt;
* [http://www.nsa.gov/ia/_files/os/winxp/Windows_XP_Security_Guide_v2.2.zip Zipped Windows XP Security Configuration Guides]&lt;br /&gt;
&lt;br /&gt;
==Software Integrity Test==&lt;br /&gt;
&lt;br /&gt;
The [http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf Digital Signature Algorithm (DSA)] is used as the Approved authentication technique ([http://csrc.nist.gov/cryptval/dss/dsaval.htm#172 validation certificate# 172]) for the integrity test of the software components. [http://wiki.mozilla.org/FIPS_Module_Specification#Module_Components Software components ] protected using the digital signatures are the softoken (PKCS #11) and freebl libraries (e.g., libsoftokn3.so and libfreebl3.so). (See [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Security Policy Rule #15] for a list of module files by platform.) When the softoken and freebl libraries are built, a DSA public/private key pair with a 1024-bit prime modulus p is generated, the private key is used to generate a DSA signature of the library, and the public key and signature are stored in a file with the name &#039;&#039;libraryname&#039;&#039;.chk. When the self-test is initiated (e.g., at initialization for the FIPS mode), the module verifies the signatures (in the &#039;&#039;libraryname&#039;&#039;.chk files) of the softoken and freebl libraries. If the signature verification fails, the self-test fails.&lt;br /&gt;
&lt;br /&gt;
[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/fipstokn.c.dep.html#FC_Initialize     FC_Initialize] calls [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11.c.dep.html#nsc_CommonInitialize nsc_CommonInitialize] and then the DSA signature is verified before the library initialization is allowed to proceed. If the signature verification fails, FC_Initialize puts the module in the Error state by setting the Boolean state variable &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true. All the PKCS #11 functions that perform cryptographic operations or output data check &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; on entry. In the Error state (&amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; is true), no action besides returning the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt; is taken by those functions, which prevents cryptograhic operations and data output. (See also [http://wiki.mozilla.org/ModuleInterfaces#In_Error_State In Error State].)&lt;br /&gt;
&lt;br /&gt;
==Configuring Discretionary Access Control==&lt;br /&gt;
&lt;br /&gt;
On Unix (including Linux and Mac OS X), discretionary access control can be configured by setting the file mode bits of the files.&lt;br /&gt;
&lt;br /&gt;
Below we describe how to set the file mode bits to specify the set of roles that can access each component of the NSS cryptographic module.&lt;br /&gt;
&lt;br /&gt;
===Access to Stored Cryptographic Software and Cryptographic Programs===&lt;br /&gt;
When installing the NSS cryptographic module library files, the operator shall use the &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; utility to set the file mode bits of the library files to &#039;&#039;&#039;0755&#039;&#039;&#039; so that all users can execute the library files, but only the files&#039; owner can modify (i.e., write, replace, and delete) the files. For example,&lt;br /&gt;
  $ chmod 0755 libsoftokn3.so libfreebl*3.so libnssdbm3.so&lt;br /&gt;
The file mode bits can be verified with the &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; utility. For example,&lt;br /&gt;
  $ ls -l libsoftokn3.so libfreebl*3.so&lt;br /&gt;
  -rwxr-xr-x  1 wtchang wtchang  455411 Jun  8 17:07 libfreebl3.so&lt;br /&gt;
  -rwxr-xr-x  1 wtchang wtchang 1052734 Jun  8 17:07 libsoftokn3.so&lt;br /&gt;
  -rwxr-xr-x  1 wtchang wtchang  263540 Jun  8 17:07 libnssdbm3.so&lt;br /&gt;
&amp;lt;div class=note&amp;gt;On windows, replace the &amp;lt;code&amp;gt;.so&amp;lt;/code&amp;gt; suffix by &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt; in the above commands. On Mac OS X, replace the &amp;lt;code&amp;gt;.so&amp;lt;/code&amp;gt; suffix by &amp;lt;code&amp;gt;.dylib&amp;lt;/code&amp;gt; in the above commands.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Access to Cryptographic Keys, CSPs, and Plaintext Data===&lt;br /&gt;
&lt;br /&gt;
Cryptographic keys, CSPs, and plaintext data are stored in the NSS databases. The NSS cryptographic module creates its database files with the &#039;&#039;&#039;0600&#039;&#039;&#039; permission bits so that only the owner can read or modify the database files. (See the [http://mxr.mozilla.org/security/ident?i=dbsopen &amp;lt;code&amp;gt;dbsopen()&amp;lt;/code&amp;gt;] or [[http://mxr.mozilla.org/security/ident?i=dbopen &amp;lt;code&amp;gt;dbopen()&amp;lt;/code&amp;gt;] calls in the [http://mxr.mozilla.org/security/ident?i=nsslowcert_OpenPermCertDB &amp;lt;code&amp;gt;nsslowcert_OpenPermCertDB&amp;lt;/code&amp;gt;], [http://mxr.mozilla.org/security/ident?i=nsslowkey_OpenKeyDB &amp;lt;code&amp;gt;nsslowkey_OpenKeyDB&amp;lt;/code&amp;gt;], and [http://mxr.mozilla.org/security/ident?i=secmod_OpenDB &amp;lt;code&amp;gt;secmod_OpenDB&amp;lt;/code&amp;gt;] functions.) For example,&lt;br /&gt;
  $ ls -l *.db&lt;br /&gt;
  -rw-------  1 wtchang wtchang 65536 May 15 22:16 cert8.db&lt;br /&gt;
  -rw-------  1 wtchang wtchang 32768 May 15 22:16 key3.db&lt;br /&gt;
  -rw-------  1 wtchang wtchang 32768 May 15 22:15 secmod.db&lt;br /&gt;
  or&lt;br /&gt;
  $ls -l *.db &lt;br /&gt;
  -rw-------  1 gb  staff   9216 May  6 10:22 cert9.db&lt;br /&gt;
  -rw-------  1 gb  staff  11264 May  6 10:22 key4.db&lt;br /&gt;
&lt;br /&gt;
Since the cryptographic keys and CSPs are stored in encrypted form, the owner needs to assume the NSS User role by authenticating with the password to decrypt the cryptographic keys and CSPs stored in the private key database.&lt;br /&gt;
&lt;br /&gt;
===Access to Audit Data===&lt;br /&gt;
&lt;br /&gt;
The NSS cryptographic module may use the Unix &amp;lt;code&amp;gt;syslog()&amp;lt;/code&amp;gt; function and the audit mechanism provided by the operating system to audit events. (Auditing is not yet implemented on Windows.) Auditing is turned off by default.  To turn on the auditing capability, you need to set the environment variable NSS_ENABLE_AUDIT to 1. You also need to configure the operating system&#039;s audit mechanism. &lt;br /&gt;
&lt;br /&gt;
Access to the audit data is described in the next two subsections.&lt;br /&gt;
&lt;br /&gt;
====Access to syslog Log Files====&lt;br /&gt;
&lt;br /&gt;
On Unix (including Linux and Mac OS X), the NSS cryptographic module uses the &amp;lt;code&amp;gt;syslog()&amp;lt;/code&amp;gt; function to audit events, so the audit data are stored in the system log. Only the root user can modify the system log. On some platforms, only the root user can read the system log; on other platforms, all users can read the system log.&lt;br /&gt;
&lt;br /&gt;
The system log is usually under the &amp;lt;code&amp;gt;/var/adm&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; directory. The exact location of the system log is specified in the &amp;lt;code&amp;gt;/etc/syslog.conf&amp;lt;/code&amp;gt; file. The NSS cryptographic module uses the default &#039;&#039;&#039;user&#039;&#039;&#039; facility and the &#039;&#039;&#039;info&#039;&#039;&#039;, &#039;&#039;&#039;warning&#039;&#039;&#039;, and &#039;&#039;&#039;err&#039;&#039;&#039; severity levels for its log messages. We give two examples below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Red Hat Enterprise Linux 4&#039;&#039;&#039;: The &amp;lt;code&amp;gt;/etc/syslog.conf&amp;lt;/code&amp;gt; file on Red Hat Enterprise Linux 4 has:&lt;br /&gt;
  *.info;mail.none;authpriv.none;cron.none                /var/log/messages&lt;br /&gt;
which specifies that &amp;lt;code&amp;gt;/var/log/messages&amp;lt;/code&amp;gt; is the system log. The permission bits of the system log are:&lt;br /&gt;
  $ ls -l /var/log/messages&lt;br /&gt;
  -rw-------  1 root root 38054 Jun  9 10:18 /var/log/messages&lt;br /&gt;
so only the root user can read or modify the system log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solaris 10&#039;&#039;&#039;: The &amp;lt;code&amp;gt;/etc/syslog.conf&amp;lt;/code&amp;gt; file on Solaris 10 has:&lt;br /&gt;
  *.err;kern.debug;daemon.notice;mail.crit        /var/adm/messages&lt;br /&gt;
which specifies that &amp;lt;code&amp;gt;/var/adm/messages&amp;lt;/code&amp;gt; is the system log. The permission bits of the system log are:&lt;br /&gt;
  $ ls -l /var/adm/messages&lt;br /&gt;
  -rw-r--r--   1 root     root           0 Jun  7 03:10 /var/adm/messages&lt;br /&gt;
so all users can read the system log, but only the root user can modify it.&lt;br /&gt;
&lt;br /&gt;
====Access to System Audit Log====&lt;br /&gt;
&lt;br /&gt;
To meet the audit requirements of FIPS 140-2 at Security Level 2, on Red Hat Enterprise Linux 4 and Trusted Solaris, the NSS cryptographic module also uses the audit mechanism provided by the operating system to audit events. The audit data are stored in the system audit log. Only the root user can read or modify the system audit log.&lt;br /&gt;
&lt;br /&gt;
On Red Hat Enterprise Linux 4, the system audit log is in the &amp;lt;code&amp;gt;/var/log/audit&amp;lt;/code&amp;gt; directory. This directory and the log files in it have the following permission bits (the following commands were run as the root user; only the root user can run the second command):&lt;br /&gt;
  # ls -ld /var/log/audit&lt;br /&gt;
  drwxr-x---  2 root root 4096 Jun  1 19:50 /var/log/audit&lt;br /&gt;
  # ls -l /var/log/audit&lt;br /&gt;
  total 13460&lt;br /&gt;
  -rw-r-----  1 root root 3248038 Jun  8 17:50 audit.log&lt;br /&gt;
  -r--r-----  1 root root 5242886 Jun  1 19:50 audit.log.1&lt;br /&gt;
  -r--r-----  1 root root 5242936 May 20 18:01 audit.log.2&lt;br /&gt;
&lt;br /&gt;
On Solaris default audit records are stored in: /var/audit/.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configure the Solaris Auditing:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To configure the system audit mechanism on Solaris the following administration tasks need to be completed. Create the audit class &#039;fp&#039;,  then create the audit event &#039;AUE_FIPS_AUDIT &#039; and add the class &#039;fp&#039; to the audit_control file.&lt;br /&gt;
&lt;br /&gt;
Edit /etc/security/audit_class&lt;br /&gt;
add line:&lt;br /&gt;
0x99000000:fp:NSS FIPS Security Msgs&lt;br /&gt;
&lt;br /&gt;
Edit /etc/security/audit_event&lt;br /&gt;
add line:&lt;br /&gt;
34444:AUE_FIPS_AUDIT:fp&lt;br /&gt;
&lt;br /&gt;
Edit /etc/security/audit_control&lt;br /&gt;
add &#039;fp&#039; to the &amp;quot;flags:&amp;quot; as in:&lt;br /&gt;
flags:lo,ap,fp&lt;br /&gt;
&lt;br /&gt;
Turn on audit service:&lt;br /&gt;
&lt;br /&gt;
On Trusted Solaris 8, auditing is enabled by default; for non-trusted Solaris run: /etc/security/bsmconv (either as root or a user that has been given the Audit Control RBAC profile in Solaris 8)&lt;br /&gt;
and reboot your system.&lt;br /&gt;
After the system has rebooted, ensure auditd is running: ps -ecf | grep auditd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing the audit trail:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default the audit logs are stored in /var/audit. To view the active audit trail, ensure there is only one *not_terminated* audit files. If there are others, delete the older ones before executing this command.&lt;br /&gt;
&lt;br /&gt;
#cd /var/audit&lt;br /&gt;
#tail -0f *not_terminated* | praudit&lt;br /&gt;
&lt;br /&gt;
Note: On Trusted Solaris 8 you need to assume a role with the tail and praudit commands with the proc_audit_appl and proc_audit_tcb privileges.&lt;br /&gt;
&lt;br /&gt;
You can also view the existing audit files using auditreduce.&lt;br /&gt;
#cd /var/audit&lt;br /&gt;
#auditreduce -m 34444 *not_terminated* | praudit -l&lt;br /&gt;
&lt;br /&gt;
===Entry of Cryptographic Keys and CSPs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N/A&#039;&#039;&#039;. The NSS cryptographic module does not support manual entry of cryptographic keys and CSPs.&lt;br /&gt;
&lt;br /&gt;
==Auditable Events==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=note&amp;gt;Many auditable events required by FIPS 140-2 are related to the crypto officer role. In the NSS cryptographic module, the crypto officer role is only used to perform these functions:&lt;br /&gt;
* install the module,&lt;br /&gt;
* initialize or re-initialize the module, and&lt;br /&gt;
* initialize the NSS User&#039;s password.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every audit record contains the following information about the event:&lt;br /&gt;
* date and time of the event&lt;br /&gt;
* the string &amp;quot;NSS &#039;&#039;&amp;lt;softoken library name&amp;gt;&#039;&#039;&amp;quot;, which identifies the NSS cryptographic module. On Red Hat Enterprise Linux and Solaris, this string is &amp;quot;NSS libsoftokn3.so&amp;quot;&lt;br /&gt;
* process ID (pid) of the process using the NSS cryptographic module&lt;br /&gt;
* user ID (uid) of the user who owns the process&lt;br /&gt;
* the audit text message, which usually consists of&lt;br /&gt;
** the PKCS #11 function that generated the event. For example, &amp;lt;code&amp;gt;FC_Login&amp;lt;/code&amp;gt;.&lt;br /&gt;
** the arguments and return code (error code) of the function. Arguments that contain sensitive information such as passwords are omitted.&lt;br /&gt;
** (optional) an error message. For example, &amp;quot;power-up self-tests failed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===AS06.17===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AS06.17&#039;&#039;&#039; requires that the module record modifications, accesses, deletions, and additions of cryptographic data and CSPs. In our module, cryptographic data and CSPs are cryptographic keys, audit data, and authentication data. We address cryptographic keys in this section and audit data and authentication data in the next section.&lt;br /&gt;
&lt;br /&gt;
If a function has an object handle pointer argument (e.g., &#039;&#039;phKey&#039;&#039;), on a successful return we also record the object handle stored in the location pointed to by the argument (e.g., &amp;quot;&#039;&#039;*phKey = 0x01234567&#039;&#039;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Below we list the functions that we audit and specify the format of the audit messages. For brevity we omit the optional returned object handles in the audit message specification.&lt;br /&gt;
* Object management functions, when the object is a cryptographic key (object class &amp;lt;code&amp;gt;CKO_PUBLIC_KEY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CKO_PRIVATE_KEY&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CKO_SECRET_KEY&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_CreateObject FC_CreateObject]&amp;lt;/code&amp;gt;: addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_CreateObject(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phObject=&#039;&#039;&amp;lt;object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_CopyObject FC_CopyObject]&amp;lt;/code&amp;gt;: access and addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_CopyObject(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phNewObject=&#039;&#039;&amp;lt;object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DestroyObject FC_DestroyObject]&amp;lt;/code&amp;gt;: deletion of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DestroyObject(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GetObjectSize FC_GetObjectSize]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GetObjectSize(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pulSize=&#039;&#039;&amp;lt;size pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GetAttributeValue FC_GetAttributeValue]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GetAttributeValue(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_SetAttributeValue FC_SetAttributeValue]&amp;lt;/code&amp;gt;: modification of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_SetAttributeValue(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* Key management functions&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GenerateKey FC_GenerateKey]&amp;lt;/code&amp;gt;: addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GenerateKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GenerateKeyPair FC_GenerateKeyPair]&amp;lt;/code&amp;gt;: addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GenerateKeyPair(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, pPublicKeyTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulPublicKeyAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, pPrivateKeyTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulPrivateKeyAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phPublicKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;, phPrivateKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_WrapKey FC_WrapKey]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_WrapKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hWrappingKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, pWrappedKey=&#039;&#039;&amp;lt;buffer that receives the wrapped key&amp;gt;&#039;&#039;, pulWrappedKeyLen=&#039;&#039;&amp;lt;pointer to length&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_UnwrapKey FC_UnwrapKey]&amp;lt;/code&amp;gt;: access and addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_UnwrapKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hUnwrappingKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, pWrappedKey=&#039;&#039;&amp;lt;pointer to bytes&amp;gt;&#039;&#039;, ulWrappedKeyLen=&#039;&#039;&amp;lt;length&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DeriveKey FC_DeriveKey]&amp;lt;/code&amp;gt;: access and addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DeriveKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hBaseKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* Cipher &amp;quot;Init&amp;quot; functions&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_EncryptInit FC_EncryptInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_EncryptInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DecryptInit FC_DecryptInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DecryptInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_SignInit FC_SignInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_SignInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_SignRecoverInit FC_SignRecoverInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_SignRecoverInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_VerifyInit FC_VerifyInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_VerifyInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_VerifyRecoverInit FC_VerifyRecoverInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_VerifyRecoverInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DigestKey FC_DigestKey]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DigestKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===AS06.18 and AS06.19===&lt;br /&gt;
&lt;br /&gt;
In compliance with &#039;&#039;&#039;AS06.18&#039;&#039;&#039; and &#039;&#039;&#039;AS06.19&#039;&#039;&#039;, the following events are auditable by the NSS cryptographic module.&lt;br /&gt;
* attempts to provide invalid input for crypto officer functions: We log the use of all crypto officer functions with the return code. The return code tells us whether the operator attempted to provide invalid input.&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitToken(slotID, pPin, ulPinLen, pLabel)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** If &amp;lt;code&amp;gt;slotID&amp;lt;/code&amp;gt; is invalid, the return code is 0x00000003 (&amp;lt;code&amp;gt;CKR_SLOT_ID_INVALID&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** The other input arguments are ignored. (&amp;lt;code&amp;gt;pPin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ulPinLen&amp;lt;/code&amp;gt; specify the password of the PKCS #11 Security Officer, which is the empty string. Although the function doesn&#039;t verify the password, the empty string should be passed as the password.)&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitPIN(hSession, pPin, ulPinLen)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** If &amp;lt;code&amp;gt;hSession&amp;lt;/code&amp;gt; is invalid, the return code is 0x000000B3 (&amp;lt;code&amp;gt;CKR_SESSION_HANDLE_INVALID&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** If the password that &amp;lt;code&amp;gt;pPin&amp;lt;/code&amp;gt; points to has an invalid UTF-8 character, the return code is 0x000000A1 (&amp;lt;code&amp;gt;CKR_PIN_INVALID&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** If &amp;lt;code&amp;gt;ulPinLen&amp;lt;/code&amp;gt; is too short or too long, or the password that &amp;lt;code&amp;gt;pPin&amp;lt;/code&amp;gt; points to is too weak (doesn&#039;t have enough character types), the return code is 0x000000A2 (&amp;lt;code&amp;gt;CKR_PIN_LEN_RANGE&amp;lt;/code&amp;gt;).&lt;br /&gt;
* the addition or deletion of an operator to/from a crypto officer role: Since any authorized operator can assume the crypto officer role, this event is equivalent to the addition or deletion of a user account in the OS. These events are recorded by the audit mechanism of the OS.&lt;br /&gt;
** Red Hat Enterprise Linux 4&lt;br /&gt;
*** The programs &amp;lt;code&amp;gt;/usr/sbin/useradd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/usr/sbin/usermod&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/usr/sbin/userdel&amp;lt;/code&amp;gt; in the shadow-utils package audit the addition or deletion of user accounts. You can verify by doing &amp;lt;code&amp;gt;ldd&amp;lt;/code&amp;gt; against the programs and seeing that they are linked to &amp;lt;code&amp;gt;libaudit.so.0&amp;lt;/code&amp;gt;. The audit message types are &amp;lt;code&amp;gt;AUDIT_ADD_USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AUDIT_DEL_USER&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** FMT_MSA.1 &#039;&#039;All modifications of the values of security attributes&#039;&#039;, FMT_MTD.1 User Attributes &#039;&#039;All modifications to the values of TSF data&#039;&#039;, and FAU_SMR.1 &#039;&#039;Modifications to the group of users that are part of a role&#039;&#039; are auditable events. (See [http://www.commoncriteriaportal.org/public/files/epfiles/ST_VID10072-ST.pdf Security Target], Table 5-1, pages 31-32.)&lt;br /&gt;
** Trusted Solaris 8: Audit.5 &#039;&#039;The creation, deletion, disabling or enabling of user accounts is auditable&#039;&#039;. (See [http://www.commoncriteriaportal.org/public/files/epfiles/TSolaris8_Issue3.1.pdf Security Target], page 55.)&lt;br /&gt;
* operations to process audit data stored in the audit trail: these operations are recorded by the audit mechanism of the OS.&lt;br /&gt;
** Red Hat Enterprise Linux 4: FAU_SAR.1 &#039;&#039;Reading of information from the audit records&#039;&#039; and FAU_SAR.2 &#039;&#039;Unsuccessful attempts to read information from the audit records&#039;&#039; are auditable events. (See [http://www.commoncriteriaportal.org/public/files/epfiles/ST_VID10072-ST.pdf Security Target], Table 5-1, pages 29-30.)&lt;br /&gt;
** Trusted Solaris 8: Audit.2 &#039;&#039;Attempts to access to objects are auditable&#039;&#039;. (See [http://www.commoncriteriaportal.org/public/files/epfiles/TSolaris8_Issue3.1.pdf Security Target], page 54.)&lt;br /&gt;
* requests to use authentication data management mechanisms&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitPIN&amp;lt;/code&amp;gt; calls (which initialize the NSS User&#039;s password)&lt;br /&gt;
*** &amp;quot;C_InitPIN(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_SetPIN&amp;lt;/code&amp;gt; calls (which change the NSS User&#039;s password)&lt;br /&gt;
*** &amp;quot;C_SetPIN(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* use of a security-relevant crypto officer function&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitToken&amp;lt;/code&amp;gt; calls (which re-initialize the module)&lt;br /&gt;
*** &amp;quot;C_InitToken(slotID=&#039;&#039;&amp;lt;slot ID&amp;gt;&#039;&#039;, pLabel=&#039;&#039;&amp;quot;&amp;lt;token label&amp;gt;&amp;quot;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitPIN&amp;lt;/code&amp;gt; calls (which initialize the NSS User&#039;s password)&lt;br /&gt;
*** &amp;quot;C_InitPIN(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* requests to access authentication data associated with the cryptographic module&lt;br /&gt;
** N/A. The module doesn&#039;t give the operator access to the authentication data.&lt;br /&gt;
* use of an authentication mechanism (e.g., login) associated with the cryptographic module&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_Login&amp;lt;/code&amp;gt; calls&lt;br /&gt;
*** &amp;quot;C_Login(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, userType=&#039;&#039;&amp;lt;user type&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_Logout&amp;lt;/code&amp;gt; calls&lt;br /&gt;
*** &amp;quot;C_Logout(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* explicit requests to assume a crypto officer role&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_Login&amp;lt;/code&amp;gt; calls&lt;br /&gt;
*** &amp;quot;C_Login(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, userType=&#039;&#039;&amp;lt;user type&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* the allocation of a function to a crypto officer role&lt;br /&gt;
** N/A. The functions allocated to the crypto officer role are fixed.&lt;br /&gt;
* other auditable events&lt;br /&gt;
** Power-up self-test failure&lt;br /&gt;
*** &amp;quot;C_Initialize()=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039; power-up self-tests failed&amp;quot;&lt;br /&gt;
** Pair-wise consistency test failure&lt;br /&gt;
*** &amp;quot;C_GenerateKeyPair(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism-&amp;gt;mechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039; self-test: pair-wise consistency test failed&amp;quot;&lt;br /&gt;
** Continuous random number generator test failure&lt;br /&gt;
*** &amp;quot;C_GenerateRandom(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pRandomData=&#039;&#039;&amp;lt;pointer&amp;gt;&#039;&#039;, ulRandomLen=&#039;&#039;&amp;lt;length&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039; self-test: continuous RNG test failed&amp;quot;&lt;br /&gt;
** Switching between FIPS and non-FIPS modes&lt;br /&gt;
*** &amp;quot;enabled FIPS mode&amp;quot;&lt;br /&gt;
*** &amp;quot;disabled FIPS mode&amp;quot;&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_Operational_Environment&amp;diff=370269</id>
		<title>FIPS Operational Environment</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_Operational_Environment&amp;diff=370269"/>
		<updated>2011-11-16T18:56:27Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Operational Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Operational Environment==&lt;br /&gt;
&lt;br /&gt;
The operational environment for the NSS cryptographic module is a general purpose, modifiable operational environment that uses one of the following commercially-available operating systems:&lt;br /&gt;
&lt;br /&gt;
* Security Level 1&lt;br /&gt;
** Red Hat Enterprise Linux Version 6 32 bit&lt;br /&gt;
** Red Hat Enterprise Linux Version 6 64 bit&lt;br /&gt;
&lt;br /&gt;
==Single Operator Mode of Operation==&lt;br /&gt;
&lt;br /&gt;
All the major general purpose operating systems today are multi-user OS. When the NSS cryptographic module is used at Security Level 1, only one user account should be created in the OS. The following explains how to configure each OS for single user. &lt;br /&gt;
&lt;br /&gt;
===Mac OS X Instructions===&lt;br /&gt;
&lt;br /&gt;
To delete other user accounts&lt;br /&gt;
# Log into your user account.&lt;br /&gt;
# From the &#039;&#039;&#039;Apple&#039;&#039;&#039; menu, choose &#039;&#039;&#039;System Preferences&#039;&#039;&#039;.&lt;br /&gt;
# From the &#039;&#039;&#039;View&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Accounts&#039;&#039;&#039;.&lt;br /&gt;
# All the user accounts are listed on the left hand side of the &#039;&#039;&#039;Accounts&#039;&#039;&#039; dialog. Your user account is listed under &#039;&#039;&#039;My Account&#039;&#039;&#039; and should have Admin privilege. If there is no user account under &#039;&#039;&#039;Other Accounts&#039;&#039;&#039;, stop here. Otherwise, follow the steps below to delete the other accounts.&lt;br /&gt;
# If the lock icon at the lower left corner of the &#039;&#039;&#039;Accounts&#039;&#039;&#039; dialog is locked, click the lock to make changes.&lt;br /&gt;
# Select a user account under &#039;&#039;&#039;Other Accounts&#039;&#039;&#039;.&lt;br /&gt;
# Click the minus sign (-) at the lower left corner of the &#039;&#039;&#039;Accounts&#039;&#039;&#039; dialog to delete the selected user account.&lt;br /&gt;
# Repeat the above two steps until there is no user account under &#039;&#039;&#039;Other Accounts&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To turn off remote login and other services&lt;br /&gt;
# Log into your user account.&lt;br /&gt;
# From the &#039;&#039;&#039;Apple&#039;&#039;&#039; menu, choose &#039;&#039;&#039;System Preferences&#039;&#039;&#039;.&lt;br /&gt;
# From the &#039;&#039;&#039;View&#039;&#039;&#039; menu, choose &#039;&#039;&#039;Sharing&#039;&#039;&#039;.&lt;br /&gt;
# In the &#039;&#039;&#039;Sharing&#039;&#039;&#039; dialog, select the &#039;&#039;&#039;Services&#039;&#039;&#039; tab. All the services are listed under the message &amp;quot;Select a service to change its settings.&amp;quot; If none of the checkboxes is checked, stop here. Otherwise, follow the steps below.&lt;br /&gt;
# If the lock icon at the lower left corner of the &#039;&#039;&#039;Sharing&#039;&#039;&#039; dialog is locked, click the lock to make changes.&lt;br /&gt;
# Unckeck all the checkboxes, including &#039;&#039;&#039;Remote Login&#039;&#039;&#039;, &#039;&#039;&#039;FTP Access&#039;&#039;&#039;, and &#039;&#039;&#039;Apple Remote Desktop&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* NSA, &#039;&#039;[http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml NSA Security Configuration Guide] &lt;br /&gt;
* [http://www.nsa.gov/applications/links/notices.cfm?address=http://images.apple.com/support/security/guides/docs/Leopard_Security_Config_2nd_Ed.pdf Mac OS X Security Configuration for Version 10.5 Leopard Second Edition]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Unix Instructions===&lt;br /&gt;
The general idea is the same across all Unix variants.&lt;br /&gt;
* Remove all login accounts except &amp;quot;root&amp;quot; (the superuser).&lt;br /&gt;
* Disable NIS and other name services for users and groups.&lt;br /&gt;
* Turn off all remote login, remote command execution, and file transfer daemons.&lt;br /&gt;
&lt;br /&gt;
The specific procedures for each of the UNIX variants are described below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Red Hat Enterprise Linux&#039;&#039;&#039;&lt;br /&gt;
# Log in as the &amp;quot;root&amp;quot; user.&lt;br /&gt;
# Edit the system files &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; and remove all the users except &amp;quot;root&amp;quot; and the pseudo-users. Make sure the password fields in &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; for the pseudo-users are either a star (*) or double exclamation mark (!!). This prevents login as the pseudo-users.&lt;br /&gt;
# Edit the system file &amp;lt;code&amp;gt;/etc/nsswitch.conf&amp;lt;/code&amp;gt; and make &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt; the only option for &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shadow&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;group&amp;lt;/code&amp;gt;. This disables NIS and other name services for users and groups.&lt;br /&gt;
# In the &amp;lt;code&amp;gt;/etc/xinetd.d&amp;lt;/code&amp;gt; directory, edit the files &amp;lt;code&amp;gt;eklogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gssftp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;klogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;krb5-telnet&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kshell&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rexec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rlogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;tftp&amp;lt;/code&amp;gt;, and set the value of &amp;lt;code&amp;gt;disable&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Reboot the system for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* NSA, &#039;&#039;[http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml NSA Security Configuration Guide] &lt;br /&gt;
* &#039;&#039;[http://www.nsa.gov/ia/_files/os/redhat/rhel5-guide-i731.pdf&lt;br /&gt;
Guide to the Secure Configuration of Red Hat Enterprise Linux 5]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solaris&#039;&#039;&#039;&lt;br /&gt;
# Log in as the &amp;quot;root&amp;quot; user.&lt;br /&gt;
# Edit the system files &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; and remove all the users except &amp;quot;root&amp;quot; and the pseudo-users. Make sure the password fields in &amp;lt;code&amp;gt;/etc/shadow&amp;lt;/code&amp;gt; for the pseudo-users are either a star (*) or NP. This prevents login as the pseudo-users.&lt;br /&gt;
# Edit the system file &amp;lt;code&amp;gt;/etc/nsswitch.conf&amp;lt;/code&amp;gt; and make &amp;lt;code&amp;gt;files&amp;lt;/code&amp;gt; the only option for &amp;lt;code&amp;gt;passwd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;shadow&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;group&amp;lt;/code&amp;gt;. This disables NIS and other name services for users and groups.&lt;br /&gt;
# In the &amp;lt;code&amp;gt;/etc/inetd.d&amp;lt;/code&amp;gt; directory, edit the files &amp;lt;code&amp;gt;eklogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gssftp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;klogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;krb5-telnet&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;kshell&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rexec&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rlogin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsh&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rsync&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;tftp&amp;lt;/code&amp;gt;, and set the value of &amp;lt;code&amp;gt;disable&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Reboot the system for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* NSA, &#039;&#039;[http://www.nsa.gov/ia/guidance/security_configuration_guides/operating_systems.shtml NSA Security Configuration Guide] &lt;br /&gt;
* &#039;&#039;[http://www.nsa.gov/ia/_files/os/sunsol_10/s10-cis-appendix-v1.1.pdf &lt;br /&gt;
An Overview of Solaris 10 Operating System Security Controls ]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Windows XP Instructions===&lt;br /&gt;
&lt;br /&gt;
# Log on with your user account.&lt;br /&gt;
# Click &#039;&#039;&#039;Start &amp;gt; Control Panel &amp;gt; User Accounts&#039;&#039;&#039;.&lt;br /&gt;
# Make sure the &#039;&#039;&#039;Guest&#039;&#039;&#039; account is off. If the Guest account is on, click its icon and click &amp;quot;Turn off the guest account&amp;quot; to turn it off.&lt;br /&gt;
# Follow the steps below to delete the other accounts.  &amp;lt;div class=note&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; User Accounts may show some accounts that are used by programs. For example, &#039;&#039;&#039;ASP.NET Machine Account&#039;&#039;&#039; (shown as &#039;&#039;&#039;ASP.NET Machine A...&#039;&#039;&#039; in User Accounts) is used by Microsoft .NET Framework 1.1 for running the ASN.NET worker process (aspnet_wp.exe), and &#039;&#039;&#039;SQLDebugger&#039;&#039;&#039; is used by Microsoft Visual Studio .NET Debugger. Deleting such accounts could cripple the programs using these accounts. As a precaution, remove those programs before deleting these accounts.&amp;lt;/div&amp;gt;&lt;br /&gt;
# Click the icon of an account other than your own account and the &#039;&#039;&#039;Guest&#039;&#039;&#039; account.&lt;br /&gt;
# Click &amp;quot;Delete the account&amp;quot;.&lt;br /&gt;
# Repeat the above two steps until all the accounts other than your own account and the &#039;&#039;&#039;Guest&#039;&#039;&#039; account have been deleted.&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [http://csrc.ncsl.nist.gov/publications/nistpubs/index.html#sp800-68 SP 800-68 Guidance for Securing Microsoft Windows XP Systems for IT Professionals: A NIST Security Configuration Checklist]. Section 6.5 &#039;&#039;System Services&#039;&#039; explains how to disable unnecessary services such as &#039;&#039;&#039;NetMeeting Remote Desktop Sharing&#039;&#039;&#039; and &#039;&#039;&#039;Telnet&#039;&#039;&#039; to reduce the number of attack vectors against the system. Section 7.2.1 &#039;&#039;Built-in Accounts&#039;&#039; explains how to disable default user accounts, which are often used in exploits against computer systems. Note that the recommendation in Section 7.2.3 &#039;&#039;Daily Use Accounts&#039;&#039; is at odds with the single operator mode of operation requirement of FIPS 140-2 Security Level 1.&lt;br /&gt;
* [http://csrc.ncsl.nist.gov/publications/nistpubs/index.html#sp800-69 Draft SP 800-69 Draft Special Publication 800-69, Guidance for Securing Microsoft Windows XP Home Edition: A NIST Security Configuration Checklist]. Read Appendix B.2 &#039;&#039;Disable Default User Accounts&#039;&#039; and Appendix B.5 &#039;&#039;Disable Unneeded Services&#039;&#039;. Note that Appendix A &#039;&#039;Essential Security Settings&#039;&#039;, Step 6: &#039;&#039;Set Up Limited User Accounts&#039;&#039; is at odds with the single operator mode of operation requirement of FIPS 140-2 Security Level 1.&lt;br /&gt;
* [http://www.nsa.gov/ia/_files/os/winxp/NSA_Windows_XP_Security_Guide_Addendum.pdf NSA Windows XP Security Guide Addendum]&lt;br /&gt;
* [http://www.nsa.gov/ia/_files/os/winxp/Windows_XP_Security_Guide_v2.2.zip Zipped Windows XP Security Configuration Guides]&lt;br /&gt;
&lt;br /&gt;
==Software Integrity Test==&lt;br /&gt;
&lt;br /&gt;
The [http://csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf Digital Signature Algorithm (DSA)] is used as the Approved authentication technique ([http://csrc.nist.gov/cryptval/dss/dsaval.htm#172 validation certificate# 172]) for the integrity test of the software components. [http://wiki.mozilla.org/FIPS_Module_Specification#Module_Components Software components ] protected using the digital signatures are the softoken (PKCS #11) and freebl libraries (e.g., libsoftokn3.so and libfreebl3.so). (See [http://www.mozilla.org/projects/security/pki/nss/fips/secpolicy.pdf Security Policy Rule #33] for a list of module files by platform.) When the softoken and freebl libraries are built, a DSA public/private key pair with a 1024-bit prime modulus p is generated, the private key is used to generate a DSA signature of the library, and the public key and signature are stored in a file with the name &#039;&#039;libraryname&#039;&#039;.chk. When the self-test is initiated (e.g., at initialization for the FIPS mode), the module verifies the signatures (in the &#039;&#039;libraryname&#039;&#039;.chk files) of the softoken and freebl libraries. If the signature verification fails, the self-test fails.&lt;br /&gt;
&lt;br /&gt;
[http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/fipstokn.c.dep.html#FC_Initialize     FC_Initialize] calls [http://www.mozilla.org/projects/security/pki/nss/fips/nss-source/mozilla/security/nss/lib/softoken/pkcs11.c.dep.html#nsc_CommonInitialize nsc_CommonInitialize] and then the DSA signature is verified before the library initialization is allowed to proceed. If the signature verification fails, FC_Initialize puts the module in the Error state by setting the Boolean state variable &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; to true. All the PKCS #11 functions that perform cryptographic operations or output data check &amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; on entry. In the Error state (&amp;lt;code&amp;gt;sftk_fatalError&amp;lt;/code&amp;gt; is true), no action besides returning the error code &amp;lt;code&amp;gt;CKR_DEVICE_ERROR&amp;lt;/code&amp;gt; is taken by those functions, which prevents cryptograhic operations and data output. (See also [http://wiki.mozilla.org/ModuleInterfaces#In_Error_State In Error State].)&lt;br /&gt;
&lt;br /&gt;
==Configuring Discretionary Access Control==&lt;br /&gt;
&lt;br /&gt;
On Unix (including Linux and Mac OS X), discretionary access control can be configured by setting the file mode bits of the files.&lt;br /&gt;
&lt;br /&gt;
Below we describe how to set the file mode bits to specify the set of roles that can access each component of the NSS cryptographic module.&lt;br /&gt;
&lt;br /&gt;
===Access to Stored Cryptographic Software and Cryptographic Programs===&lt;br /&gt;
When installing the NSS cryptographic module library files, the operator shall use the &amp;lt;code&amp;gt;chmod&amp;lt;/code&amp;gt; utility to set the file mode bits of the library files to &#039;&#039;&#039;0755&#039;&#039;&#039; so that all users can execute the library files, but only the files&#039; owner can modify (i.e., write, replace, and delete) the files. For example,&lt;br /&gt;
  $ chmod 0755 libsoftokn3.so libfreebl*3.so libnssdbm3.so&lt;br /&gt;
The file mode bits can be verified with the &amp;lt;code&amp;gt;ls&amp;lt;/code&amp;gt; utility. For example,&lt;br /&gt;
  $ ls -l libsoftokn3.so libfreebl*3.so&lt;br /&gt;
  -rwxr-xr-x  1 wtchang wtchang  455411 Jun  8 17:07 libfreebl3.so&lt;br /&gt;
  -rwxr-xr-x  1 wtchang wtchang 1052734 Jun  8 17:07 libsoftokn3.so&lt;br /&gt;
  -rwxr-xr-x  1 wtchang wtchang  263540 Jun  8 17:07 libnssdbm3.so&lt;br /&gt;
&amp;lt;div class=note&amp;gt;On windows, replace the &amp;lt;code&amp;gt;.so&amp;lt;/code&amp;gt; suffix by &amp;lt;code&amp;gt;.dll&amp;lt;/code&amp;gt; in the above commands. On Mac OS X, replace the &amp;lt;code&amp;gt;.so&amp;lt;/code&amp;gt; suffix by &amp;lt;code&amp;gt;.dylib&amp;lt;/code&amp;gt; in the above commands.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Access to Cryptographic Keys, CSPs, and Plaintext Data===&lt;br /&gt;
&lt;br /&gt;
Cryptographic keys, CSPs, and plaintext data are stored in the NSS databases. The NSS cryptographic module creates its database files with the &#039;&#039;&#039;0600&#039;&#039;&#039; permission bits so that only the owner can read or modify the database files. (See the [http://mxr.mozilla.org/security/ident?i=dbsopen &amp;lt;code&amp;gt;dbsopen()&amp;lt;/code&amp;gt;] or [[http://mxr.mozilla.org/security/ident?i=dbopen &amp;lt;code&amp;gt;dbopen()&amp;lt;/code&amp;gt;] calls in the [http://mxr.mozilla.org/security/ident?i=nsslowcert_OpenPermCertDB &amp;lt;code&amp;gt;nsslowcert_OpenPermCertDB&amp;lt;/code&amp;gt;], [http://mxr.mozilla.org/security/ident?i=nsslowkey_OpenKeyDB &amp;lt;code&amp;gt;nsslowkey_OpenKeyDB&amp;lt;/code&amp;gt;], and [http://mxr.mozilla.org/security/ident?i=secmod_OpenDB &amp;lt;code&amp;gt;secmod_OpenDB&amp;lt;/code&amp;gt;] functions.) For example,&lt;br /&gt;
  $ ls -l *.db&lt;br /&gt;
  -rw-------  1 wtchang wtchang 65536 May 15 22:16 cert8.db&lt;br /&gt;
  -rw-------  1 wtchang wtchang 32768 May 15 22:16 key3.db&lt;br /&gt;
  -rw-------  1 wtchang wtchang 32768 May 15 22:15 secmod.db&lt;br /&gt;
  or&lt;br /&gt;
  $ls -l *.db &lt;br /&gt;
  -rw-------  1 gb  staff   9216 May  6 10:22 cert9.db&lt;br /&gt;
  -rw-------  1 gb  staff  11264 May  6 10:22 key4.db&lt;br /&gt;
&lt;br /&gt;
Since the cryptographic keys and CSPs are stored in encrypted form, the owner needs to assume the NSS User role by authenticating with the password to decrypt the cryptographic keys and CSPs stored in the private key database.&lt;br /&gt;
&lt;br /&gt;
===Access to Audit Data===&lt;br /&gt;
&lt;br /&gt;
The NSS cryptographic module may use the Unix &amp;lt;code&amp;gt;syslog()&amp;lt;/code&amp;gt; function and the audit mechanism provided by the operating system to audit events. (Auditing is not yet implemented on Windows.) Auditing is turned off by default.  To turn on the auditing capability, you need to set the environment variable NSS_ENABLE_AUDIT to 1. You also need to configure the operating system&#039;s audit mechanism. &lt;br /&gt;
&lt;br /&gt;
Access to the audit data is described in the next two subsections.&lt;br /&gt;
&lt;br /&gt;
====Access to syslog Log Files====&lt;br /&gt;
&lt;br /&gt;
On Unix (including Linux and Mac OS X), the NSS cryptographic module uses the &amp;lt;code&amp;gt;syslog()&amp;lt;/code&amp;gt; function to audit events, so the audit data are stored in the system log. Only the root user can modify the system log. On some platforms, only the root user can read the system log; on other platforms, all users can read the system log.&lt;br /&gt;
&lt;br /&gt;
The system log is usually under the &amp;lt;code&amp;gt;/var/adm&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/var/log&amp;lt;/code&amp;gt; directory. The exact location of the system log is specified in the &amp;lt;code&amp;gt;/etc/syslog.conf&amp;lt;/code&amp;gt; file. The NSS cryptographic module uses the default &#039;&#039;&#039;user&#039;&#039;&#039; facility and the &#039;&#039;&#039;info&#039;&#039;&#039;, &#039;&#039;&#039;warning&#039;&#039;&#039;, and &#039;&#039;&#039;err&#039;&#039;&#039; severity levels for its log messages. We give two examples below.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Red Hat Enterprise Linux 4&#039;&#039;&#039;: The &amp;lt;code&amp;gt;/etc/syslog.conf&amp;lt;/code&amp;gt; file on Red Hat Enterprise Linux 4 has:&lt;br /&gt;
  *.info;mail.none;authpriv.none;cron.none                /var/log/messages&lt;br /&gt;
which specifies that &amp;lt;code&amp;gt;/var/log/messages&amp;lt;/code&amp;gt; is the system log. The permission bits of the system log are:&lt;br /&gt;
  $ ls -l /var/log/messages&lt;br /&gt;
  -rw-------  1 root root 38054 Jun  9 10:18 /var/log/messages&lt;br /&gt;
so only the root user can read or modify the system log.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solaris 10&#039;&#039;&#039;: The &amp;lt;code&amp;gt;/etc/syslog.conf&amp;lt;/code&amp;gt; file on Solaris 10 has:&lt;br /&gt;
  *.err;kern.debug;daemon.notice;mail.crit        /var/adm/messages&lt;br /&gt;
which specifies that &amp;lt;code&amp;gt;/var/adm/messages&amp;lt;/code&amp;gt; is the system log. The permission bits of the system log are:&lt;br /&gt;
  $ ls -l /var/adm/messages&lt;br /&gt;
  -rw-r--r--   1 root     root           0 Jun  7 03:10 /var/adm/messages&lt;br /&gt;
so all users can read the system log, but only the root user can modify it.&lt;br /&gt;
&lt;br /&gt;
====Access to System Audit Log====&lt;br /&gt;
&lt;br /&gt;
To meet the audit requirements of FIPS 140-2 at Security Level 2, on Red Hat Enterprise Linux 4 and Trusted Solaris, the NSS cryptographic module also uses the audit mechanism provided by the operating system to audit events. The audit data are stored in the system audit log. Only the root user can read or modify the system audit log.&lt;br /&gt;
&lt;br /&gt;
On Red Hat Enterprise Linux 4, the system audit log is in the &amp;lt;code&amp;gt;/var/log/audit&amp;lt;/code&amp;gt; directory. This directory and the log files in it have the following permission bits (the following commands were run as the root user; only the root user can run the second command):&lt;br /&gt;
  # ls -ld /var/log/audit&lt;br /&gt;
  drwxr-x---  2 root root 4096 Jun  1 19:50 /var/log/audit&lt;br /&gt;
  # ls -l /var/log/audit&lt;br /&gt;
  total 13460&lt;br /&gt;
  -rw-r-----  1 root root 3248038 Jun  8 17:50 audit.log&lt;br /&gt;
  -r--r-----  1 root root 5242886 Jun  1 19:50 audit.log.1&lt;br /&gt;
  -r--r-----  1 root root 5242936 May 20 18:01 audit.log.2&lt;br /&gt;
&lt;br /&gt;
On Solaris default audit records are stored in: /var/audit/.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Configure the Solaris Auditing:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To configure the system audit mechanism on Solaris the following administration tasks need to be completed. Create the audit class &#039;fp&#039;,  then create the audit event &#039;AUE_FIPS_AUDIT &#039; and add the class &#039;fp&#039; to the audit_control file.&lt;br /&gt;
&lt;br /&gt;
Edit /etc/security/audit_class&lt;br /&gt;
add line:&lt;br /&gt;
0x99000000:fp:NSS FIPS Security Msgs&lt;br /&gt;
&lt;br /&gt;
Edit /etc/security/audit_event&lt;br /&gt;
add line:&lt;br /&gt;
34444:AUE_FIPS_AUDIT:fp&lt;br /&gt;
&lt;br /&gt;
Edit /etc/security/audit_control&lt;br /&gt;
add &#039;fp&#039; to the &amp;quot;flags:&amp;quot; as in:&lt;br /&gt;
flags:lo,ap,fp&lt;br /&gt;
&lt;br /&gt;
Turn on audit service:&lt;br /&gt;
&lt;br /&gt;
On Trusted Solaris 8, auditing is enabled by default; for non-trusted Solaris run: /etc/security/bsmconv (either as root or a user that has been given the Audit Control RBAC profile in Solaris 8)&lt;br /&gt;
and reboot your system.&lt;br /&gt;
After the system has rebooted, ensure auditd is running: ps -ecf | grep auditd&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing the audit trail:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
By default the audit logs are stored in /var/audit. To view the active audit trail, ensure there is only one *not_terminated* audit files. If there are others, delete the older ones before executing this command.&lt;br /&gt;
&lt;br /&gt;
#cd /var/audit&lt;br /&gt;
#tail -0f *not_terminated* | praudit&lt;br /&gt;
&lt;br /&gt;
Note: On Trusted Solaris 8 you need to assume a role with the tail and praudit commands with the proc_audit_appl and proc_audit_tcb privileges.&lt;br /&gt;
&lt;br /&gt;
You can also view the existing audit files using auditreduce.&lt;br /&gt;
#cd /var/audit&lt;br /&gt;
#auditreduce -m 34444 *not_terminated* | praudit -l&lt;br /&gt;
&lt;br /&gt;
===Entry of Cryptographic Keys and CSPs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;N/A&#039;&#039;&#039;. The NSS cryptographic module does not support manual entry of cryptographic keys and CSPs.&lt;br /&gt;
&lt;br /&gt;
==Auditable Events==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=note&amp;gt;Many auditable events required by FIPS 140-2 are related to the crypto officer role. In the NSS cryptographic module, the crypto officer role is only used to perform these functions:&lt;br /&gt;
* install the module,&lt;br /&gt;
* initialize or re-initialize the module, and&lt;br /&gt;
* initialize the NSS User&#039;s password.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every audit record contains the following information about the event:&lt;br /&gt;
* date and time of the event&lt;br /&gt;
* the string &amp;quot;NSS &#039;&#039;&amp;lt;softoken library name&amp;gt;&#039;&#039;&amp;quot;, which identifies the NSS cryptographic module. On Red Hat Enterprise Linux and Solaris, this string is &amp;quot;NSS libsoftokn3.so&amp;quot;&lt;br /&gt;
* process ID (pid) of the process using the NSS cryptographic module&lt;br /&gt;
* user ID (uid) of the user who owns the process&lt;br /&gt;
* the audit text message, which usually consists of&lt;br /&gt;
** the PKCS #11 function that generated the event. For example, &amp;lt;code&amp;gt;FC_Login&amp;lt;/code&amp;gt;.&lt;br /&gt;
** the arguments and return code (error code) of the function. Arguments that contain sensitive information such as passwords are omitted.&lt;br /&gt;
** (optional) an error message. For example, &amp;quot;power-up self-tests failed&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===AS06.17===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;AS06.17&#039;&#039;&#039; requires that the module record modifications, accesses, deletions, and additions of cryptographic data and CSPs. In our module, cryptographic data and CSPs are cryptographic keys, audit data, and authentication data. We address cryptographic keys in this section and audit data and authentication data in the next section.&lt;br /&gt;
&lt;br /&gt;
If a function has an object handle pointer argument (e.g., &#039;&#039;phKey&#039;&#039;), on a successful return we also record the object handle stored in the location pointed to by the argument (e.g., &amp;quot;&#039;&#039;*phKey = 0x01234567&#039;&#039;&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Below we list the functions that we audit and specify the format of the audit messages. For brevity we omit the optional returned object handles in the audit message specification.&lt;br /&gt;
* Object management functions, when the object is a cryptographic key (object class &amp;lt;code&amp;gt;CKO_PUBLIC_KEY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CKO_PRIVATE_KEY&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;CKO_SECRET_KEY&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_CreateObject FC_CreateObject]&amp;lt;/code&amp;gt;: addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_CreateObject(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phObject=&#039;&#039;&amp;lt;object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_CopyObject FC_CopyObject]&amp;lt;/code&amp;gt;: access and addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_CopyObject(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phNewObject=&#039;&#039;&amp;lt;object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DestroyObject FC_DestroyObject]&amp;lt;/code&amp;gt;: deletion of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DestroyObject(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GetObjectSize FC_GetObjectSize]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GetObjectSize(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pulSize=&#039;&#039;&amp;lt;size pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GetAttributeValue FC_GetAttributeValue]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GetAttributeValue(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_SetAttributeValue FC_SetAttributeValue]&amp;lt;/code&amp;gt;: modification of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_SetAttributeValue(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hObject=&#039;&#039;&amp;lt;object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* Key management functions&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GenerateKey FC_GenerateKey]&amp;lt;/code&amp;gt;: addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GenerateKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_GenerateKeyPair FC_GenerateKeyPair]&amp;lt;/code&amp;gt;: addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_GenerateKeyPair(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, pPublicKeyTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulPublicKeyAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, pPrivateKeyTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulPrivateKeyAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phPublicKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;, phPrivateKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_WrapKey FC_WrapKey]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_WrapKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hWrappingKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, pWrappedKey=&#039;&#039;&amp;lt;buffer that receives the wrapped key&amp;gt;&#039;&#039;, pulWrappedKeyLen=&#039;&#039;&amp;lt;pointer to length&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_UnwrapKey FC_UnwrapKey]&amp;lt;/code&amp;gt;: access and addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_UnwrapKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hUnwrappingKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, pWrappedKey=&#039;&#039;&amp;lt;pointer to bytes&amp;gt;&#039;&#039;, ulWrappedKeyLen=&#039;&#039;&amp;lt;length&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DeriveKey FC_DeriveKey]&amp;lt;/code&amp;gt;: access and addition of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DeriveKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hBaseKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;, pTemplate=&#039;&#039;&amp;lt;template pointer&amp;gt;&#039;&#039;, ulAttributeCount=&#039;&#039;&amp;lt;count&amp;gt;&#039;&#039;, phKey=&#039;&#039;&amp;lt;key object handle pointer&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* Cipher &amp;quot;Init&amp;quot; functions&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_EncryptInit FC_EncryptInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_EncryptInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DecryptInit FC_DecryptInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DecryptInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_SignInit FC_SignInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_SignInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_SignRecoverInit FC_SignRecoverInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_SignRecoverInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_VerifyInit FC_VerifyInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_VerifyInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_VerifyRecoverInit FC_VerifyRecoverInit]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_VerifyRecoverInit(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** &amp;lt;code&amp;gt;[http://developer.mozilla.org/en/docs/FC_DigestKey FC_DigestKey]&amp;lt;/code&amp;gt;: access of cryptographic keys&lt;br /&gt;
*** &amp;quot;C_DigestKey(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, hKey=&#039;&#039;&amp;lt;key object handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===AS06.18 and AS06.19===&lt;br /&gt;
&lt;br /&gt;
In compliance with &#039;&#039;&#039;AS06.18&#039;&#039;&#039; and &#039;&#039;&#039;AS06.19&#039;&#039;&#039;, the following events are auditable by the NSS cryptographic module.&lt;br /&gt;
* attempts to provide invalid input for crypto officer functions: We log the use of all crypto officer functions with the return code. The return code tells us whether the operator attempted to provide invalid input.&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitToken(slotID, pPin, ulPinLen, pLabel)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** If &amp;lt;code&amp;gt;slotID&amp;lt;/code&amp;gt; is invalid, the return code is 0x00000003 (&amp;lt;code&amp;gt;CKR_SLOT_ID_INVALID&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** The other input arguments are ignored. (&amp;lt;code&amp;gt;pPin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ulPinLen&amp;lt;/code&amp;gt; specify the password of the PKCS #11 Security Officer, which is the empty string. Although the function doesn&#039;t verify the password, the empty string should be passed as the password.)&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitPIN(hSession, pPin, ulPinLen)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** If &amp;lt;code&amp;gt;hSession&amp;lt;/code&amp;gt; is invalid, the return code is 0x000000B3 (&amp;lt;code&amp;gt;CKR_SESSION_HANDLE_INVALID&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** If the password that &amp;lt;code&amp;gt;pPin&amp;lt;/code&amp;gt; points to has an invalid UTF-8 character, the return code is 0x000000A1 (&amp;lt;code&amp;gt;CKR_PIN_INVALID&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** If &amp;lt;code&amp;gt;ulPinLen&amp;lt;/code&amp;gt; is too short or too long, or the password that &amp;lt;code&amp;gt;pPin&amp;lt;/code&amp;gt; points to is too weak (doesn&#039;t have enough character types), the return code is 0x000000A2 (&amp;lt;code&amp;gt;CKR_PIN_LEN_RANGE&amp;lt;/code&amp;gt;).&lt;br /&gt;
* the addition or deletion of an operator to/from a crypto officer role: Since any authorized operator can assume the crypto officer role, this event is equivalent to the addition or deletion of a user account in the OS. These events are recorded by the audit mechanism of the OS.&lt;br /&gt;
** Red Hat Enterprise Linux 4&lt;br /&gt;
*** The programs &amp;lt;code&amp;gt;/usr/sbin/useradd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/usr/sbin/usermod&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;/usr/sbin/userdel&amp;lt;/code&amp;gt; in the shadow-utils package audit the addition or deletion of user accounts. You can verify by doing &amp;lt;code&amp;gt;ldd&amp;lt;/code&amp;gt; against the programs and seeing that they are linked to &amp;lt;code&amp;gt;libaudit.so.0&amp;lt;/code&amp;gt;. The audit message types are &amp;lt;code&amp;gt;AUDIT_ADD_USER&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AUDIT_DEL_USER&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** FMT_MSA.1 &#039;&#039;All modifications of the values of security attributes&#039;&#039;, FMT_MTD.1 User Attributes &#039;&#039;All modifications to the values of TSF data&#039;&#039;, and FAU_SMR.1 &#039;&#039;Modifications to the group of users that are part of a role&#039;&#039; are auditable events. (See [http://www.commoncriteriaportal.org/public/files/epfiles/ST_VID10072-ST.pdf Security Target], Table 5-1, pages 31-32.)&lt;br /&gt;
** Trusted Solaris 8: Audit.5 &#039;&#039;The creation, deletion, disabling or enabling of user accounts is auditable&#039;&#039;. (See [http://www.commoncriteriaportal.org/public/files/epfiles/TSolaris8_Issue3.1.pdf Security Target], page 55.)&lt;br /&gt;
* operations to process audit data stored in the audit trail: these operations are recorded by the audit mechanism of the OS.&lt;br /&gt;
** Red Hat Enterprise Linux 4: FAU_SAR.1 &#039;&#039;Reading of information from the audit records&#039;&#039; and FAU_SAR.2 &#039;&#039;Unsuccessful attempts to read information from the audit records&#039;&#039; are auditable events. (See [http://www.commoncriteriaportal.org/public/files/epfiles/ST_VID10072-ST.pdf Security Target], Table 5-1, pages 29-30.)&lt;br /&gt;
** Trusted Solaris 8: Audit.2 &#039;&#039;Attempts to access to objects are auditable&#039;&#039;. (See [http://www.commoncriteriaportal.org/public/files/epfiles/TSolaris8_Issue3.1.pdf Security Target], page 54.)&lt;br /&gt;
* requests to use authentication data management mechanisms&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitPIN&amp;lt;/code&amp;gt; calls (which initialize the NSS User&#039;s password)&lt;br /&gt;
*** &amp;quot;C_InitPIN(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_SetPIN&amp;lt;/code&amp;gt; calls (which change the NSS User&#039;s password)&lt;br /&gt;
*** &amp;quot;C_SetPIN(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* use of a security-relevant crypto officer function&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitToken&amp;lt;/code&amp;gt; calls (which re-initialize the module)&lt;br /&gt;
*** &amp;quot;C_InitToken(slotID=&#039;&#039;&amp;lt;slot ID&amp;gt;&#039;&#039;, pLabel=&#039;&#039;&amp;quot;&amp;lt;token label&amp;gt;&amp;quot;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_InitPIN&amp;lt;/code&amp;gt; calls (which initialize the NSS User&#039;s password)&lt;br /&gt;
*** &amp;quot;C_InitPIN(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* requests to access authentication data associated with the cryptographic module&lt;br /&gt;
** N/A. The module doesn&#039;t give the operator access to the authentication data.&lt;br /&gt;
* use of an authentication mechanism (e.g., login) associated with the cryptographic module&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_Login&amp;lt;/code&amp;gt; calls&lt;br /&gt;
*** &amp;quot;C_Login(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, userType=&#039;&#039;&amp;lt;user type&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_Logout&amp;lt;/code&amp;gt; calls&lt;br /&gt;
*** &amp;quot;C_Logout(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* explicit requests to assume a crypto officer role&lt;br /&gt;
** &amp;lt;code&amp;gt;FC_Login&amp;lt;/code&amp;gt; calls&lt;br /&gt;
*** &amp;quot;C_Login(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, userType=&#039;&#039;&amp;lt;user type&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039;&amp;quot;&lt;br /&gt;
* the allocation of a function to a crypto officer role&lt;br /&gt;
** N/A. The functions allocated to the crypto officer role are fixed.&lt;br /&gt;
* other auditable events&lt;br /&gt;
** Power-up self-test failure&lt;br /&gt;
*** &amp;quot;C_Initialize()=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039; power-up self-tests failed&amp;quot;&lt;br /&gt;
** Pair-wise consistency test failure&lt;br /&gt;
*** &amp;quot;C_GenerateKeyPair(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pMechanism-&amp;gt;mechanism=&#039;&#039;&amp;lt;mechanism&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039; self-test: pair-wise consistency test failed&amp;quot;&lt;br /&gt;
** Continuous random number generator test failure&lt;br /&gt;
*** &amp;quot;C_GenerateRandom(hSession=&#039;&#039;&amp;lt;session handle&amp;gt;&#039;&#039;, pRandomData=&#039;&#039;&amp;lt;pointer&amp;gt;&#039;&#039;, ulRandomLen=&#039;&#039;&amp;lt;length&amp;gt;&#039;&#039;)=&#039;&#039;&amp;lt;return code&amp;gt;&#039;&#039; self-test: continuous RNG test failed&amp;quot;&lt;br /&gt;
** Switching between FIPS and non-FIPS modes&lt;br /&gt;
*** &amp;quot;enabled FIPS mode&amp;quot;&lt;br /&gt;
*** &amp;quot;disabled FIPS mode&amp;quot;&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370264</id>
		<title>FIPS Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370264"/>
		<updated>2011-11-16T18:49:55Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Algorithms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NSS FIPS 140 validation ==&lt;br /&gt;
&lt;br /&gt;
Softoken is a component of [[NSS]], and has a separate version number. The most recent FIPS validated Softoken is 3.12.4 and is in &#039;&#039;&#039;NSS 3.12.4&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.5&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.6&#039;&#039;&#039;. Binaries are available [https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_12_4_RTM/ | here].&lt;br /&gt;
&lt;br /&gt;
NSS softoken has completed FIPS 140 validation four times: 1997, 1999, 2002, 2007 and 2009. View [http://www.mozilla.org/projects/security/pki/nss/fips/ | NSS FIPS validation history ] here. View the [[FIPS2009]] validation here.  &lt;br /&gt;
&lt;br /&gt;
This page documents our current NSS FIPS 140 validation.&lt;br /&gt;
&lt;br /&gt;
== Platforms for 2011 ==&lt;br /&gt;
* Level 1&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 32 bit (no AES-NI)&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 64 bit&lt;br /&gt;
&lt;br /&gt;
== Algorithms ==&lt;br /&gt;
&lt;br /&gt;
Plan is to validate all FIPS-approved algorithms that NSS implements and NIST has tests for. There are eight such algorithms. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Algorithms&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Algorithms !! Key Size !! Modes !! Certificates&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/groups/STM/cavp/documents/des/tripledesval.html TripleDES] &lt;br /&gt;
| KO 1,2,3 (56,112,168)&lt;br /&gt;
||&lt;br /&gt;
TECB(e/d; KO 1,2,3)&amp;lt;br&amp;gt;&lt;br /&gt;
TCBC(e/d; KO 1,2,3)&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/aes/aesval.html AES] &lt;br /&gt;
| 128/192/256&lt;br /&gt;
||&lt;br /&gt;
ECB(e/d; 128,192,256)&amp;lt;br&amp;gt;&lt;br /&gt;
CBC(e/d; 128,192,256)&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf/ SHS (including all variants: SHA-1, SHA-256, SHA-384, and SHA-512)]&lt;br /&gt;
[http://csrc.nist.gov/groups/STM/cavp/documents/shs/shaval.htm SHS] &lt;br /&gt;
|&lt;br /&gt;
SHA-1   (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-256 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-384 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-512 (BYTE-only)&lt;br /&gt;
|| N/A || &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/mac/hmacval.html HMAC]&lt;br /&gt;
| &lt;br /&gt;
HMAC-SHA1, HMAC-SHA256,&amp;lt;br&amp;gt;&lt;br /&gt;
HMAC-SHA384, HMAC-SHA512 &lt;br /&gt;
|| &lt;br /&gt;
KeySize &amp;lt; BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize = BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize &amp;gt; BlockSize &lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgval.html DRBG] &lt;br /&gt;
| N/A &lt;br /&gt;
||  &lt;br /&gt;
Hash_DRBG of [http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf NIST SP 800-90]&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/dsaval.htm DSA] &lt;br /&gt;
| 512-1024 ||&lt;br /&gt;
PQG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
PQG(ver)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
KEYGEN(Y)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver)MOD(1024);&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/rsaval.html RSA] &lt;br /&gt;
| 1024-8192 ||  &lt;br /&gt;
ALG[RSASSA-PKCS1_V1_5];  SIG(gen);  &lt;br /&gt;
SIG(ver); &lt;br /&gt;
||&lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Extended ECC)&lt;br /&gt;
| 163-571 ||&lt;br /&gt;
PKG: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( ALL-P ALL-K ALL-B );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Basic ECC)&lt;br /&gt;
| 256-521 ||&lt;br /&gt;
PKG: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( P-256 P-384 P-521 );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dependant Bugs ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Dependent Bugs&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bug !! Description !! Completed &lt;br /&gt;
|- &lt;br /&gt;
|||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing Lab ==&lt;br /&gt;
[http://www.saic.com/infosec/testing-accreditation/ SAIC ]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140 Information ==&lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/cryptval/ NIST Cryptographic Module Validation Program ] &lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/CryptoToolkit/ NIST Crypto Toolkit ]&lt;br /&gt;
&lt;br /&gt;
== NSS FIPS 140-2 Validation Docs ==&lt;br /&gt;
&lt;br /&gt;
[[ NSSCryptoModuleSpec | NSS FIPS 140-2 Validation Docs ]]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140-2 Derived Test Requirements (DTR) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ FIPS 140-2 Vendor Requirement Docs | FIPS 140-2 Derived Test Requirements (DTR) ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vendor Information ==&lt;br /&gt;
&lt;br /&gt;
This validation is supported and maintained by the following corporations:&lt;br /&gt;
&lt;br /&gt;
Red Hat, Inc.: http://www.redhat.com/about/contact/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Category:NSS]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370263</id>
		<title>FIPS Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370263"/>
		<updated>2011-11-16T18:49:29Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Updates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NSS FIPS 140 validation ==&lt;br /&gt;
&lt;br /&gt;
Softoken is a component of [[NSS]], and has a separate version number. The most recent FIPS validated Softoken is 3.12.4 and is in &#039;&#039;&#039;NSS 3.12.4&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.5&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.6&#039;&#039;&#039;. Binaries are available [https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_12_4_RTM/ | here].&lt;br /&gt;
&lt;br /&gt;
NSS softoken has completed FIPS 140 validation four times: 1997, 1999, 2002, 2007 and 2009. View [http://www.mozilla.org/projects/security/pki/nss/fips/ | NSS FIPS validation history ] here. View the [[FIPS2009]] validation here.  &lt;br /&gt;
&lt;br /&gt;
This page documents our current NSS FIPS 140 validation.&lt;br /&gt;
&lt;br /&gt;
== Platforms for 2011 ==&lt;br /&gt;
* Level 1&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 32 bit (no AES-NI)&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 64 bit&lt;br /&gt;
&lt;br /&gt;
== Algorithms ==&lt;br /&gt;
&lt;br /&gt;
Plan is to validate all FIPS-approved algorithms that NSS implements and NIST has tests for. There are eight such algorithms. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Algorithms&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Algorithms !! Key Size !! Modes !! Certificates&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/groups/STM/cavp/documents/des/tripledesval.html TripleDES] &lt;br /&gt;
| KO 1,2,3 (56,112,168)&lt;br /&gt;
||&lt;br /&gt;
TECB(e/d; KO 1,2,3)&amp;lt;br&amp;gt;&lt;br /&gt;
TCBC(e/d; KO 1,2,3)&lt;br /&gt;
|| &lt;br /&gt;
Pending]&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/aes/aesval.html AES] &lt;br /&gt;
| 128/192/256&lt;br /&gt;
||&lt;br /&gt;
ECB(e/d; 128,192,256)&amp;lt;br&amp;gt;&lt;br /&gt;
CBC(e/d; 128,192,256)&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf/ SHS (including all variants: SHA-1, SHA-256, SHA-384, and SHA-512)]&lt;br /&gt;
[http://csrc.nist.gov/groups/STM/cavp/documents/shs/shaval.htm SHS] &lt;br /&gt;
|&lt;br /&gt;
SHA-1   (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-256 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-384 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-512 (BYTE-only)&lt;br /&gt;
|| N/A || &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/mac/hmacval.html HMAC]&lt;br /&gt;
| &lt;br /&gt;
HMAC-SHA1, HMAC-SHA256,&amp;lt;br&amp;gt;&lt;br /&gt;
HMAC-SHA384, HMAC-SHA512 &lt;br /&gt;
|| &lt;br /&gt;
KeySize &amp;lt; BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize = BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize &amp;gt; BlockSize &lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgval.html DRBG] &lt;br /&gt;
| N/A &lt;br /&gt;
||  &lt;br /&gt;
Hash_DRBG of [http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf NIST SP 800-90]&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/dsaval.htm DSA] &lt;br /&gt;
| 512-1024 ||&lt;br /&gt;
PQG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
PQG(ver)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
KEYGEN(Y)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver)MOD(1024);&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/rsaval.html RSA] &lt;br /&gt;
| 1024-8192 ||  &lt;br /&gt;
ALG[RSASSA-PKCS1_V1_5];  SIG(gen);  &lt;br /&gt;
SIG(ver); &lt;br /&gt;
||&lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Extended ECC)&lt;br /&gt;
| 163-571 ||&lt;br /&gt;
PKG: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( ALL-P ALL-K ALL-B );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Basic ECC)&lt;br /&gt;
| 256-521 ||&lt;br /&gt;
PKG: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( P-256 P-384 P-521 );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dependant Bugs ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Dependent Bugs&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bug !! Description !! Completed &lt;br /&gt;
|- &lt;br /&gt;
|||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing Lab ==&lt;br /&gt;
[http://www.saic.com/infosec/testing-accreditation/ SAIC ]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140 Information ==&lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/cryptval/ NIST Cryptographic Module Validation Program ] &lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/CryptoToolkit/ NIST Crypto Toolkit ]&lt;br /&gt;
&lt;br /&gt;
== NSS FIPS 140-2 Validation Docs ==&lt;br /&gt;
&lt;br /&gt;
[[ NSSCryptoModuleSpec | NSS FIPS 140-2 Validation Docs ]]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140-2 Derived Test Requirements (DTR) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ FIPS 140-2 Vendor Requirement Docs | FIPS 140-2 Derived Test Requirements (DTR) ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vendor Information ==&lt;br /&gt;
&lt;br /&gt;
This validation is supported and maintained by the following corporations:&lt;br /&gt;
&lt;br /&gt;
Red Hat, Inc.: http://www.redhat.com/about/contact/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Category:NSS]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370261</id>
		<title>FIPS Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370261"/>
		<updated>2011-11-16T18:48:40Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Schedule */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NSS FIPS 140 validation ==&lt;br /&gt;
&lt;br /&gt;
Softoken is a component of [[NSS]], and has a separate version number. The most recent FIPS validated Softoken is 3.12.4 and is in &#039;&#039;&#039;NSS 3.12.4&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.5&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.6&#039;&#039;&#039;. Binaries are available [https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_12_4_RTM/ | here].&lt;br /&gt;
&lt;br /&gt;
NSS softoken has completed FIPS 140 validation four times: 1997, 1999, 2002, 2007 and 2009. View [http://www.mozilla.org/projects/security/pki/nss/fips/ | NSS FIPS validation history ] here. View the [[FIPS2009]] validation here.  &lt;br /&gt;
&lt;br /&gt;
This page documents our current NSS FIPS 140 validation.&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
April 2010 NSS Softoken has finished its validation [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1280 NSS Certs]&lt;br /&gt;
&lt;br /&gt;
== Platforms for 2011 ==&lt;br /&gt;
* Level 1&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 32 bit (no AES-NI)&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 64 bit&lt;br /&gt;
&lt;br /&gt;
== Algorithms ==&lt;br /&gt;
&lt;br /&gt;
Plan is to validate all FIPS-approved algorithms that NSS implements and NIST has tests for. There are eight such algorithms. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Algorithms&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Algorithms !! Key Size !! Modes !! Certificates&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/groups/STM/cavp/documents/des/tripledesval.html TripleDES] &lt;br /&gt;
| KO 1,2,3 (56,112,168)&lt;br /&gt;
||&lt;br /&gt;
TECB(e/d; KO 1,2,3)&amp;lt;br&amp;gt;&lt;br /&gt;
TCBC(e/d; KO 1,2,3)&lt;br /&gt;
|| &lt;br /&gt;
Pending]&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/aes/aesval.html AES] &lt;br /&gt;
| 128/192/256&lt;br /&gt;
||&lt;br /&gt;
ECB(e/d; 128,192,256)&amp;lt;br&amp;gt;&lt;br /&gt;
CBC(e/d; 128,192,256)&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf/ SHS (including all variants: SHA-1, SHA-256, SHA-384, and SHA-512)]&lt;br /&gt;
[http://csrc.nist.gov/groups/STM/cavp/documents/shs/shaval.htm SHS] &lt;br /&gt;
|&lt;br /&gt;
SHA-1   (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-256 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-384 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-512 (BYTE-only)&lt;br /&gt;
|| N/A || &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/mac/hmacval.html HMAC]&lt;br /&gt;
| &lt;br /&gt;
HMAC-SHA1, HMAC-SHA256,&amp;lt;br&amp;gt;&lt;br /&gt;
HMAC-SHA384, HMAC-SHA512 &lt;br /&gt;
|| &lt;br /&gt;
KeySize &amp;lt; BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize = BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize &amp;gt; BlockSize &lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgval.html DRBG] &lt;br /&gt;
| N/A &lt;br /&gt;
||  &lt;br /&gt;
Hash_DRBG of [http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf NIST SP 800-90]&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/dsaval.htm DSA] &lt;br /&gt;
| 512-1024 ||&lt;br /&gt;
PQG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
PQG(ver)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
KEYGEN(Y)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver)MOD(1024);&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/rsaval.html RSA] &lt;br /&gt;
| 1024-8192 ||  &lt;br /&gt;
ALG[RSASSA-PKCS1_V1_5];  SIG(gen);  &lt;br /&gt;
SIG(ver); &lt;br /&gt;
||&lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Extended ECC)&lt;br /&gt;
| 163-571 ||&lt;br /&gt;
PKG: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( ALL-P ALL-K ALL-B );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Basic ECC)&lt;br /&gt;
| 256-521 ||&lt;br /&gt;
PKG: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( P-256 P-384 P-521 );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dependant Bugs ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Dependent Bugs&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bug !! Description !! Completed &lt;br /&gt;
|- &lt;br /&gt;
|||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing Lab ==&lt;br /&gt;
[http://www.saic.com/infosec/testing-accreditation/ SAIC ]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140 Information ==&lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/cryptval/ NIST Cryptographic Module Validation Program ] &lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/CryptoToolkit/ NIST Crypto Toolkit ]&lt;br /&gt;
&lt;br /&gt;
== NSS FIPS 140-2 Validation Docs ==&lt;br /&gt;
&lt;br /&gt;
[[ NSSCryptoModuleSpec | NSS FIPS 140-2 Validation Docs ]]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140-2 Derived Test Requirements (DTR) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ FIPS 140-2 Vendor Requirement Docs | FIPS 140-2 Derived Test Requirements (DTR) ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vendor Information ==&lt;br /&gt;
&lt;br /&gt;
This validation is supported and maintained by the following corporations:&lt;br /&gt;
&lt;br /&gt;
Red Hat, Inc.: http://www.redhat.com/about/contact/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Category:NSS]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370260</id>
		<title>FIPS Validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_Validation&amp;diff=370260"/>
		<updated>2011-11-16T18:48:09Z</updated>

		<summary type="html">&lt;p&gt;Relyea: /* Vendor Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NSS FIPS 140 validation ==&lt;br /&gt;
&lt;br /&gt;
Softoken is a component of [[NSS]], and has a separate version number. The most recent FIPS validated Softoken is 3.12.4 and is in &#039;&#039;&#039;NSS 3.12.4&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.5&#039;&#039;&#039; and &#039;&#039;&#039;NSS 3.12.6&#039;&#039;&#039;. Binaries are available [https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_12_4_RTM/ | here].&lt;br /&gt;
&lt;br /&gt;
NSS softoken has completed FIPS 140 validation four times: 1997, 1999, 2002, 2007 and 2009. View [http://www.mozilla.org/projects/security/pki/nss/fips/ | NSS FIPS validation history ] here. View the [[FIPS2009]] validation here.  &lt;br /&gt;
&lt;br /&gt;
This page documents our current NSS FIPS 140 validation.&lt;br /&gt;
&lt;br /&gt;
==Updates==&lt;br /&gt;
&lt;br /&gt;
April 2010 NSS Softoken has finished its validation [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1280 NSS Certs]&lt;br /&gt;
&lt;br /&gt;
== Platforms for 2011 ==&lt;br /&gt;
* Level 1&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 32 bit (no AES-NI)&lt;br /&gt;
** RHEL &#039;&#039;&#039;6&#039;&#039;&#039; x86 64 bit&lt;br /&gt;
&lt;br /&gt;
== Algorithms ==&lt;br /&gt;
&lt;br /&gt;
Plan is to validate all FIPS-approved algorithms that NSS implements and NIST has tests for. There are eight such algorithms. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Algorithms&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Algorithms !! Key Size !! Modes !! Certificates&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/groups/STM/cavp/documents/des/tripledesval.html TripleDES] &lt;br /&gt;
| KO 1,2,3 (56,112,168)&lt;br /&gt;
||&lt;br /&gt;
TECB(e/d; KO 1,2,3)&amp;lt;br&amp;gt;&lt;br /&gt;
TCBC(e/d; KO 1,2,3)&lt;br /&gt;
|| &lt;br /&gt;
Pending]&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/aes/aesval.html AES] &lt;br /&gt;
| 128/192/256&lt;br /&gt;
||&lt;br /&gt;
ECB(e/d; 128,192,256)&amp;lt;br&amp;gt;&lt;br /&gt;
CBC(e/d; 128,192,256)&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
![http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf/ SHS (including all variants: SHA-1, SHA-256, SHA-384, and SHA-512)]&lt;br /&gt;
[http://csrc.nist.gov/groups/STM/cavp/documents/shs/shaval.htm SHS] &lt;br /&gt;
|&lt;br /&gt;
SHA-1   (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-256 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-384 (BYTE-only)&amp;lt;br&amp;gt;&lt;br /&gt;
SHA-512 (BYTE-only)&lt;br /&gt;
|| N/A || &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/mac/hmacval.html HMAC]&lt;br /&gt;
| &lt;br /&gt;
HMAC-SHA1, HMAC-SHA256,&amp;lt;br&amp;gt;&lt;br /&gt;
HMAC-SHA384, HMAC-SHA512 &lt;br /&gt;
|| &lt;br /&gt;
KeySize &amp;lt; BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize = BlockSize,&amp;lt;br&amp;gt;&lt;br /&gt;
KeySize &amp;gt; BlockSize &lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/drbg/drbgval.html DRBG] &lt;br /&gt;
| N/A &lt;br /&gt;
||  &lt;br /&gt;
Hash_DRBG of [http://csrc.nist.gov/publications/nistpubs/800-90/SP800-90revised_March2007.pdf NIST SP 800-90]&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/dsaval.htm DSA] &lt;br /&gt;
| 512-1024 ||&lt;br /&gt;
PQG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
PQG(ver)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
KEYGEN(Y)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen)MOD(1024);&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver)MOD(1024);&lt;br /&gt;
|| &lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/rsaval.html RSA] &lt;br /&gt;
| 1024-8192 ||  &lt;br /&gt;
ALG[RSASSA-PKCS1_V1_5];  SIG(gen);  &lt;br /&gt;
SIG(ver); &lt;br /&gt;
||&lt;br /&gt;
Pending&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Extended ECC)&lt;br /&gt;
| 163-571 ||&lt;br /&gt;
PKG: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P ALL-K ALL-B );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( ALL-P ALL-K ALL-B );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|-&lt;br /&gt;
! [http://csrc.nist.gov/groups/STM/cavp/documents/dss/ecdsaval.html ECDSA]&lt;br /&gt;
(Basic ECC)&lt;br /&gt;
| 256-521 ||&lt;br /&gt;
PKG: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
PKV: CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(gen): CURVES( ALL-P P-256 P-384 P-521 );&amp;lt;br&amp;gt;&lt;br /&gt;
SIG(ver): CURVES( P-256 P-384 P-521 );&lt;br /&gt;
|| &lt;br /&gt;
Not In 2011 Validation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dependant Bugs ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;Dependent Bugs&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bug !! Description !! Completed &lt;br /&gt;
|- &lt;br /&gt;
|||  || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Testing Lab ==&lt;br /&gt;
[http://www.saic.com/infosec/testing-accreditation/ SAIC ]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140 Information ==&lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/cryptval/ NIST Cryptographic Module Validation Program ] &lt;br /&gt;
&lt;br /&gt;
[http://csrc.nist.gov/CryptoToolkit/ NIST Crypto Toolkit ]&lt;br /&gt;
&lt;br /&gt;
== NSS FIPS 140-2 Validation Docs ==&lt;br /&gt;
&lt;br /&gt;
[[ NSSCryptoModuleSpec | NSS FIPS 140-2 Validation Docs ]]&lt;br /&gt;
&lt;br /&gt;
== FIPS 140-2 Derived Test Requirements (DTR) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[ FIPS 140-2 Vendor Requirement Docs | FIPS 140-2 Derived Test Requirements (DTR) ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vendor Information ==&lt;br /&gt;
&lt;br /&gt;
This validation is supported and maintained by the following corporations:&lt;br /&gt;
&lt;br /&gt;
Red Hat, Inc.: http://www.redhat.com/about/contact/&lt;br /&gt;
&lt;br /&gt;
== Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; summary=&amp;quot;schedule table&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Milestone !! Item !! Deps !! Time !! Who !! Completed &lt;br /&gt;
|- &lt;br /&gt;
| M1 || Initial Setup || || || ||&lt;br /&gt;
|-&lt;br /&gt;
| 1a || Choose validation Lab, approve costs, and sign NDA || all ||  || all ||  [http://www.atlanlabs.com/ Atlan]   &lt;br /&gt;
|-&lt;br /&gt;
| 1d || Define Algorithms, Key Sizes and modes || || || ||  &lt;br /&gt;
|- &lt;br /&gt;
| M2 || Complete NSS 3.12 FIPS dependant bugs  || || || || &lt;br /&gt;
|-&lt;br /&gt;
| M3  || Update documentation (numbers in parentheses refer to sections in FIPS documentation) || || || ||   	&lt;br /&gt;
|-&lt;br /&gt;
| 3a. || (1.0) Security policy, new algorithms || 1d ||	2 wks || all ||	 	&lt;br /&gt;
|-&lt;br /&gt;
| 3b. || Generate annotated source tree (LXR -&amp;gt; HTML) || M2 || 	|| || &lt;br /&gt;
|-	&lt;br /&gt;
| 3c. || (2.0) Finite State Machine || 3b || 3 wks || || 	&lt;br /&gt;
|-	&lt;br /&gt;
| 3d. || (3.0/4.0) Cryptographic Module Definition || 3b ||  2 wks || || &lt;br /&gt;
|-	&lt;br /&gt;
| 3e. || (6.0) Software Security (rules-to-code map) ||	3b || 2 wks || ||&lt;br /&gt;
|- &lt;br /&gt;
| 3f. || (8.0) Key Management Generate 20K random #&#039;s || || 1 day || ||  &lt;br /&gt;
|-	&lt;br /&gt;
| 3g. || (9.0) Cryptographic Algs || 3a || 3 days || || &lt;br /&gt;
|-	&lt;br /&gt;
| 3h. || (10.0) Operational Test Plan || || 1 day || ||  	&lt;br /&gt;
|-	&lt;br /&gt;
| 3i. || Document architectural changes between 3.2 and 3.11 ||  || 5 days || ||  &lt;br /&gt;
|-	&lt;br /&gt;
| M4 || Send docs to testing lab  || || || || &lt;br /&gt;
|-	&lt;br /&gt;
| 4a. || Security Policy || || all ||  || 		&lt;br /&gt;
|-	&lt;br /&gt;
| 4b. || Finite State Machine || 3c || || ||  	&lt;br /&gt;
|-	&lt;br /&gt;
| 4c. || Module Def. / rules-to-code ||	3d,3e || || ||	&lt;br /&gt;
|-	&lt;br /&gt;
| M5  || Operational validation || || || || &lt;br /&gt;
|-	&lt;br /&gt;
| 5a. || Algorithm testing || || 1 month || ||  	&lt;br /&gt;
|-	&lt;br /&gt;
| 5b. || Operational testing ||	3h || 1 week || || &lt;br /&gt;
|-	&lt;br /&gt;
| 5c || set up machines for Lab to run operational tests on, provide Lab tech with access to machines (last time we both sent a box to the lab and set up a temporary account in the intranet for them)  || || || || &lt;br /&gt;
|-	&lt;br /&gt;
| M6 ||	Internal QA of docs || M2-M5 ||	1 week || all || &lt;br /&gt;
|-	&lt;br /&gt;
| M7 ||	Communication between NSS team / Lab / NIST about status of validation / algorithm certificates || M1-5 || 3-6 mos || all || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
[[Category:NSS]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=FIPS_140-2_Vendor_Requirement_Docs_2009&amp;diff=370259</id>
		<title>FIPS 140-2 Vendor Requirement Docs 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=FIPS_140-2_Vendor_Requirement_Docs_2009&amp;diff=370259"/>
		<updated>2011-11-16T18:46:04Z</updated>

		<summary type="html">&lt;p&gt;Relyea: Created page with &amp;quot; Section 1: Cryptographic Module Specifcation    Section 2: Cryptographic Module Ports and Interfaces   [[ F2009VE_03 | Section 3: Roles, Servic...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[ F2009VE_01 | Section 1: Cryptographic Module Specifcation ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_02 | Section 2: Cryptographic Module Ports and Interfaces ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_03 | Section 3: Roles, Services, and Authentication ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_04 | Section 4: Finite State Model ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_05 | Section 5: Physical Security (N/A) ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_06 | Section 6: Operational Enviroment ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_07 | Section 7: Cryptographic Key Management ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_08 | Section 8: EMI/EMC ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_09 | Section 9: Self-Tests ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_10 | Section 10: Design Assurance ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_11 | Section 11: Mitigation of Other Attacks ]]&lt;br /&gt;
&lt;br /&gt;
[[ F2009VE_14 | Appendix C: Cryptographic Module Security Policy ]]&lt;br /&gt;
&lt;br /&gt;
[[Category:NSS]]&lt;/div&gt;</summary>
		<author><name>Relyea</name></author>
	</entry>
</feed>