Update pages.

This commit is contained in:
Ken MacKay
2013-06-06 21:54:34 -07:00
parent fd42f550e8
commit 13724390c4
13 changed files with 635 additions and 542 deletions
+2
View File
@@ -0,0 +1,2 @@
pygments: true
markdown: maruku
+41
View File
@@ -0,0 +1,41 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>{{ page.title }}</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/pygment_trac.css">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<header class="menu">
<div class="floater2">
<span class="floaterbox">
<strong>Download micro-ecc:</strong>
<a class="download" href="https://github.com/kmackay/micro-ecc/zipball/master">.zip</a>
<a class="download" href="https://github.com/kmackay/micro-ecc/tarball/master">.tar.gz</a>
<small><a href="https://github.com/kmackay/micro-ecc">View On <strong>GitHub</strong></a></small>
</span>
</div>
</header>
<header class="floater">
<span class="floaterbox">
<strong>Download micro-ecc:</strong>
<a class="download" href="https://github.com/kmackay/micro-ecc/zipball/master">.zip</a>
<a class="download" href="https://github.com/kmackay/micro-ecc/tarball/master">.tar.gz</a>
<small><a href="https://github.com/kmackay/micro-ecc">View On <strong>GitHub</strong></a></small>
</span>
</header>
<section>
{{ content }}
</section>
<footer>
<p>This project is maintained by <a href="https://github.com/kmackay">kmackay</a></p>
<p><small>Hosted on GitHub Pages</small></p>
</footer>
</body>
</html>
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

-50
View File
@@ -1,50 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta name="description" content="micro-ecc : A small ECDH and ECDSA implementation for 32-bit microcontrollers." />
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<title>micro-ecc</title>
</head>
<body>
<!-- HEADER -->
<div id="header_wrap" class="outer">
<header class="inner">
<a id="forkme_banner" href="https://github.com/kmackay/micro-ecc">View on GitHub</a>
<h1 id="project_title">micro-ecc</h1>
<h2 id="project_tagline">A small ECDH and ECDSA implementation for 32-bit microcontrollers.</h2>
<section id="downloads">
<a class="zip_download_link" href="https://github.com/kmackay/micro-ecc/zipball/master">Download this project as a .zip file</a>
<a class="tar_download_link" href="https://github.com/kmackay/micro-ecc/tarball/master">Download this project as a tar.gz file</a>
</section>
</header>
</div>
<!-- MAIN CONTENT -->
<div id="main_content_wrap" class="outer">
<section id="main_content" class="inner">
<h3>
<a name="stuff" class="anchor" href="#stuff"><span class="octicon octicon-link"></span></a>Stuff</h3>
</section>
</div>
<!-- FOOTER -->
<div id="footer_wrap" class="outer">
<footer class="inner">
<p class="copyright">micro-ecc maintained by <a href="https://github.com/kmackay">kmackay</a></p>
<p>Published with <a href="http://pages.github.com">GitHub Pages</a></p>
</footer>
</div>
</body>
</html>
+322
View File
@@ -0,0 +1,322 @@
micro-ecc
==========
A small ECDH and ECDSA implementation for 32-bit microcontrollers.
Features
--------
* Written in C, with optional inline assembly for ARM and Thumb platforms.
* Small code size: as low as 1800 bytes when compiled for Thumb (eg, Cortex-M0).
* No dynamic memory allocation.
* Reasonably fast: on an LPC1114 at 48MHz (ARM Cortex-M0, 32-cycle 32x32 bit multiply), 192-bit ECDH shared secret calculation takes as little as ~150ms (depending on selected optimizations).
* Support for 4 standard curves: secp128r1, secp192r1, secp256r1, and secp384r1
* Optional optimizations so you can choose between code size and speed.
Usage Notes
-----------
**NOTE:** This implementation is not designed to be resistant to timing attacks or other side-channel attacks. To thwart timing attacks, you can use a timer to ensure that all ECDH operations take the same amount of time (ie, the longest time it would ever take). You can determine the maximum time for ECDH by using a private key that is all 0xffffffff.
#### Integer Representation ####
To reduce code size, all large integers are represented using little-endian words - so the least significant word is first. For example, the standard representation of the prime modulus for the curve secp128r1 is `FFFFFFFD FFFFFFFF FFFFFFFF FFFFFFFF`; in micro-ecc, this would be represented as `uint32_t p[4] = {0xffffffff, 0xffffffff, 0xffffffff, 0xfffffffd};`.
#### Generating Keys ####
You can use the `makekeys` program in the `apps` directory to generate keys (on Linux or OS X). You can run `make` in that directory to build for your native platform (or use [emk](http://kmackay.ca/emk)). To generate a single public/private key pair, run `makekeys`. It will print out the public and private keys in a representation suitable to be copied into your source code. You can generate multiple key pairs at once using `makekeys <n>` to generate n keys.
#### Using the Code ####
I recommend just copying (or symlink) ecc.h and ecc.c into your project. Then just `#include "ecc.h"` to use the micro-ecc functions.
See ecc.h for documentation for each function.
Speed and Size
--------------
Available optimizations are:
* `ECC_SQUARE_FUNC` - Use a separate function for squaring.
* `ECC_USE_NAF` - Use a non-adjacent form for scalar representation when doing point multiplication.
* `ECC_ASM` - Choose the type of inline assembly to use. The available options are `ecc_asm_none`, `ecc_asm_thumb`, `ecc_asm_thumb2`, and `ecc_asm_arm`.
All tests were performed on an LPC1114 running at 48MHz. The listed code sizes include all code and data required by the micro-ecc library (including `aebi_lmul` when not using assembly),
but do not include the sizes of the code using the library functions.
The following compiler options were used (using gcc 4.8):
* Compile: `-mcpu=cortex-m0 -mthumb -ffunction-sections -fdata-sections -Os`
* Link: `-mcpu=cortex-m0 -mthumb -nostartfiles -nostdlib -Wl,--gc-sections`
### Effect of optimization settings ###
These tests were performed using the curve secp192r1. Only ECDH code was used (no ECDSA).
#### ECC_ASM defined to ecc_asm_none ####
<table>
<tr>
<th>Optimizations</th>
<th>ECDH time (ms)</th>
<th>Code size (bytes)</th>
</tr>
<tr>
<td>none</td>
<td>431.9</td>
<td>1948</td>
</tr>
<tr>
<td>ECC_SQUARE_FUNC</td>
<td>393.0</td>
<td>2152</td>
</tr>
<tr>
<td>ECC_USE_NAF</td>
<td>369.5</td>
<td>2208</td>
</tr>
<tr>
<td>both</td>
<td>337.2</td>
<td>2412</td>
</tr>
</table>
#### ECC_ASM defined to ecc_asm_thumb ####
<table>
<tr>
<th>Optimizations</th>
<th>ECDH time (ms)</th>
<th>Code size (bytes)</th>
</tr>
<tr>
<td>none</td>
<td>183.9</td>
<td>1772</td>
</tr>
<tr>
<td>ECC_SQUARE_FUNC</td>
<td>172.6</td>
<td>1920</td>
</tr>
<tr>
<td>ECC_USE_NAF</td>
<td>158.2</td>
<td>2032</td>
</tr>
<tr>
<td>both</td>
<td>147.7</td>
<td>2180</td>
</tr>
</table>
### ECDH for different curves ###
In these tests, `ECC_ASM` was defined to `ecc_asm_thumb` in all cases.
#### No other optimizations (smallest code size) ####
<table>
<tr>
<th></th>
<th>secp128r1</th>
<th>secp192r1</th>
<th>secp256r1</th>
<th>secp384r1</th>
</tr>
<tr>
<td><em>ECDH time (ms):</em></td>
<td>85.5</td>
<td>183.9</td>
<td>473.6</td>
<td>1405.8</td>
</tr>
<tr>
<td><em>Code size (bytes):</em></td>
<td>1908</td>
<td>1772</td>
<td>2104</td>
<td>1832</td>
</tr>
</table>
#### All optimizations (fastest) ####
<table>
<tr>
<th></th>
<th>secp128r1</th>
<th>secp192r1</th>
<th>secp256r1</th>
<th>secp384r1</th>
</tr>
<tr>
<td><em>ECDH time (ms):</em></td>
<td>75.9</td>
<td>147.7</td>
<td>385.8</td>
<td>1128.2</td>
</tr>
<tr>
<td><em>Code size (bytes):</em></td>
<td>2332</td>
<td>2180</td>
<td>2516</td>
<td>2244</td>
</tr>
</table>
### ECDSA speed and combined code size ###
In these tests, the measured speed is the time to verify an ECDSA signature. The measured code size is the combined code size for ECDH and ECDSA. `ECC_ASM` was defined to `ecc_asm_thumb` in all cases.
#### No other optimizations (smallest code size) ####
<table>
<tr>
<th></th>
<th>secp128r1</th>
<th>secp192r1</th>
<th>secp256r1</th>
<th>secp384r1</th>
</tr>
<tr>
<td><em>ECDSA verify time (ms):</em></td>
<td>108.6</td>
<td>230.6</td>
<td>590.2</td>
<td>1729.7</td>
</tr>
<tr>
<td><em>Code size (bytes):</em></td>
<td>2638</td>
<td>2526</td>
<td>2846</td>
<td>2674</td>
</tr>
</table>
#### All optimizations (fastest) ####
<table>
<tr>
<th></th>
<th>secp128r1</th>
<th>secp192r1</th>
<th>secp256r1</th>
<th>secp384r1</th>
</tr>
<tr>
<td><em>ECDSA verify time (ms):</em></td>
<td>108.0</td>
<td>219.0</td>
<td>558.5</td>
<td>1615.0</td>
</tr>
<tr>
<td><em>Code size (bytes):</em></td>
<td>3046</td>
<td>2918</td>
<td>3248</td>
<td>3062</td>
</tr>
</table>
### Maximum stack usage ###
In these tests, `ECC_ASM` was defined to `ecc_asm_thumb` in all cases. The table values are the maximum possible stack usage for each function, in bytes.
#### No other optimizations (smallest code size) ####
<table>
<tr>
<th></th>
<th>secp128r1</th>
<th>secp192r1</th>
<th>secp256r1</th>
<th>secp384r1</th>
</tr>
<tr>
<td><em>ecc_make_key()</em></td>
<td>392</td>
<td>488</td>
<td>624</td>
<td>848</td>
</tr>
<tr>
<td><em>ecc_valid_public_key()</em></td>
<td>184</td>
<td>224</td>
<td>304</td>
<td>416</td>
</tr>
<tr>
<td><em>ecdh_shared_secret()</em></td>
<td>416</td>
<td>528</td>
<td>680</td>
<td>936</td>
</tr>
<tr>
<td><em>ecdsa_sign()</em></td>
<td>448</td>
<td>568</td>
<td>728</td>
<td>1000</td>
</tr>
<tr>
<td><em>ecdsa_verify()</em></td>
<td>480</td>
<td>616</td>
<td>792</td>
<td>1096</td>
</tr>
</table>
#### All optimizations (fastest) ####
<table>
<tr>
<th></th>
<th>secp128r1</th>
<th>secp192r1</th>
<th>secp256r1</th>
<th>secp384r1</th>
</tr>
<tr>
<td><em>ecc_make_key()</em></td>
<td>472</td>
<td>600</td>
<td>760</td>
<td>1056</td>
</tr>
<tr>
<td><em>ecc_valid_public_key()</em></td>
<td>192</td>
<td>232</td>
<td>304</td>
<td>424</td>
</tr>
<tr>
<td><em>ecdh_shared_secret()</em></td>
<td>496</td>
<td>640</td>
<td>816</td>
<td>1144</td>
</tr>
<tr>
<td><em>ecdsa_sign()</em></td>
<td>528</td>
<td>680</td>
<td>864</td>
<td>1208</td>
</tr>
<tr>
<td><em>ecdsa_verify()</em></td>
<td>488</td>
<td>624</td>
<td>792</td>
<td>1104</td>
</tr>
</table>
-1
View File
@@ -1 +0,0 @@
console.log('This would be the main JS file.');
-1
View File
@@ -1 +0,0 @@
{"name":"micro-ecc","tagline":"A small ECDH and ECDSA implementation for 32-bit microcontrollers.","body":"### Stuff\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}
+58 -59
View File
@@ -1,65 +1,64 @@
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f0f3f3; }
.highlight .c { color: #0099FF; font-style: italic } /* Comment */
.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
.highlight .k { color: #006699; font-weight: bold } /* Keyword */
.highlight .o { color: #555555 } /* Operator */
.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #009999 } /* Comment.Preproc */
.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
.highlight { background: #ffffff; }
.highlight .c { color: #999988; font-style: italic } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { font-weight: bold } /* Keyword */
.highlight .o { font-weight: bold } /* Operator */
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
.highlight .go { color: #AAAAAA } /* Generic.Output */
.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #999999 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #99CC66 } /* Generic.Traceback */
.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #006699 } /* Keyword.Pseudo */
.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #FF6600 } /* Literal.Number */
.highlight .s { color: #CC3300 } /* Literal.String */
.highlight .na { color: #330099 } /* Name.Attribute */
.highlight .nb { color: #336666 } /* Name.Builtin */
.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
.highlight .no { color: #336600 } /* Name.Constant */
.highlight .nd { color: #9999FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #CC00FF } /* Name.Function */
.highlight .nl { color: #9999FF } /* Name.Label */
.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #003333 } /* Name.Variable */
.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { font-weight: bold } /* Keyword.Constant */
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
.highlight .kn { font-weight: bold } /* Keyword.Namespace */
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #009999 } /* Literal.Number */
.highlight .s { color: #d14 } /* Literal.String */
.highlight .na { color: #008080 } /* Name.Attribute */
.highlight .nb { color: #0086B3 } /* Name.Builtin */
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
.highlight .no { color: #008080 } /* Name.Constant */
.highlight .ni { color: #800080 } /* Name.Entity */
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
.highlight .nn { color: #555555 } /* Name.Namespace */
.highlight .nt { color: #000080 } /* Name.Tag */
.highlight .nv { color: #008080 } /* Name.Variable */
.highlight .ow { font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
.highlight .sc { color: #CC3300 } /* Literal.String.Char */
.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
.highlight .sx { color: #CC3300 } /* Literal.String.Other */
.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #003333 } /* Name.Variable.Class */
.highlight .vg { color: #003333 } /* Name.Variable.Global */
.highlight .vi { color: #003333 } /* Name.Variable.Instance */
.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
.highlight .mf { color: #009999 } /* Literal.Number.Float */
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
.highlight .sc { color: #d14 } /* Literal.String.Char */
.highlight .sd { color: #d14 } /* Literal.String.Doc */
.highlight .s2 { color: #d14 } /* Literal.String.Double */
.highlight .se { color: #d14 } /* Literal.String.Escape */
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
.highlight .si { color: #d14 } /* Literal.String.Interpol */
.highlight .sx { color: #d14 } /* Literal.String.Other */
.highlight .sr { color: #009926 } /* Literal.String.Regex */
.highlight .s1 { color: #d14 } /* Literal.String.Single */
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #008080 } /* Name.Variable.Class */
.highlight .vg { color: #008080 } /* Name.Variable.Global */
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
.type-csharp .highlight .k { color: #0000FF }
.type-csharp .highlight .kt { color: #0000FF }
+212
View File
@@ -0,0 +1,212 @@
body {
background: #f8f8f8;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: 250;
margin: 0;
padding: 0;
}
.menu {
position: absolute;
width: 88px;
top: 0px;
left: 0px;
padding: 10px 20px;
background: #eee;
border: 1px solid #aaa;
margin: 20px 0 0 10px;
}
.menu .heading {
display: inline-block;
margin-top: 5px;
font-weight: 600;
}
.floater {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
margin: 0;
text-align: right;
}
.floater span.floaterbox {
display: inline-block;
padding: 5px;
background: #eee;
border: 1px solid #aaa;
margin: 10px 10px 0 0;
}
.floater a.download,
.floater2 a.download {
border: 1px solid;
border-radius: 5px;
padding: 1px 5px;
margin: 0 5px;
}
.floater a.download:hover,
.floater2 a.download:hover {
background: #dbe7f9;
text-decoration: none;
}
.floater2 {
display: none;
padding: 0 0 0 10px;
margin: 0;
float: right;
}
.floater2 span.floaterbox {
display: inline-block;
padding: 5px 6px 0 0;
border: none;
margin: 0;
}
section {
margin: 20px 150px;
text-align: justify;
border: 1px solid #cddcf4;
padding: 10px;
}
section h1 {
margin-top: 0;
}
section h1::after {
content: '';
display: block;
height: 2px;
width: 50%;
background-color: #ccc;
background: -moz-linear-gradient(left, rgba(219,74,17,1) 0%, rgba(219,74,17,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(219,74,17,1)), color-stop(100%,rgba(219,74,17,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, rgba(219,74,17,1) 0%,rgba(219,74,17,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, rgba(219,74,17,1) 0%,rgba(219,74,17,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, rgba(219,74,17,1) 0%,rgba(219,74,17,0) 100%); /* IE10+ */
background: linear-gradient(to right, rgba(219,74,17,1) 0%,rgba(219,74,17,0) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#db4a11', endColorstr='#00db4a11',GradientType=1 ); /* IE6-9 */
}
section h2::after {
content: '';
display: block;
height: 1px;
width: 50%;
background-color: #ddd;
background: -moz-linear-gradient(left, rgba(221,221,221,1) 0%, rgba(221,221,221,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(221,221,221,1)), color-stop(100%,rgba(221,221,221,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, rgba(221,221,221,1) 0%,rgba(221,221,221,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, rgba(221,221,221,1) 0%,rgba(221,221,221,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, rgba(221,221,221,1) 0%,rgba(221,221,221,0) 100%); /* IE10+ */
background: linear-gradient(to right, rgba(221,221,221,1) 0%,rgba(221,221,221,0) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#dddddd', endColorstr='#00dddddd',GradientType=1 ); /* IE6-9 */
}
section h3::after {
content: '';
display: block;
height: 1px;
width: 50%;
background-color: #eee;
background: -moz-linear-gradient(left, rgba(238,238,238,1) 0%, rgba(238,238,238,0) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(238,238,238,1)), color-stop(100%,rgba(238,238,238,0))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left, rgba(238,238,238,1) 0%,rgba(238,238,238,0) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left, rgba(238,238,238,1) 0%,rgba(238,238,238,0) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left, rgba(238,238,238,1) 0%,rgba(238,238,238,0) 100%); /* IE10+ */
background: linear-gradient(to right, rgba(238,238,238,1) 0%,rgba(238,238,238,0) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#00eeeeee',GradientType=1 ); /* IE6-9 */
}
section h4 {
font-size: 18px;
}
section p:last-child {
margin-bottom: 0;
}
section img {
max-width: 100%;
height: auto;
}
a {
text-decoration: none;
color: #1d65d1;
}
a:hover {
text-decoration: underline;
}
a:visited {
color: #99b;
}
footer {
text-align: center;
}
pre {
overflow: auto;
}
@media screen and (max-width: 960px) {
.menu {
position: relative;
width: auto;
padding: 5px 10px;
border: none;
border-bottom: 1px solid #aaa;
margin: 0;
}
.floater {
display: none;
}
.floater2 {
display: block;
}
section {
margin: 20px 75px;
}
}
@media screen and (max-width: 640px) {
.menu {
border: none;
border-bottom: 1px solid #aaa;
}
.floater2 {
display: none;
}
.floater {
display: block;
position: relative;
padding: 0;
border-bottom: 1px solid #cddcf4;
background: #eee;
}
.floater span.floaterbox {
padding: 5px 10px;
margin: 0;
border: none;
}
section {
margin: 0;
border: none;
}
}
-431
View File
@@ -1,431 +0,0 @@
/*******************************************************************************
Slate Theme for GitHub Pages
by Jason Costello, @jsncostello
*******************************************************************************/
@import url(pygment_trac.css);
/*******************************************************************************
MeyerWeb Reset
*******************************************************************************/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
ol, ul {
list-style: none;
}
blockquote, q {
}
table {
border-collapse: collapse;
border-spacing: 0;
}
a:focus {
outline: none;
}
/*******************************************************************************
Theme Styles
*******************************************************************************/
body {
box-sizing: border-box;
color:#373737;
background: #212121;
font-size: 16px;
font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, h5, h6 {
margin: 10px 0;
font-weight: 700;
color:#222222;
font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;
letter-spacing: -1px;
}
h1 {
font-size: 36px;
font-weight: 700;
}
h2 {
padding-bottom: 10px;
font-size: 32px;
background: url('../images/bg_hr.png') repeat-x bottom;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 21px;
}
h5 {
font-size: 18px;
}
h6 {
font-size: 16px;
}
p {
margin: 10px 0 15px 0;
}
footer p {
color: #f2f2f2;
}
a {
text-decoration: none;
color: #007edf;
text-shadow: none;
transition: color 0.5s ease;
transition: text-shadow 0.5s ease;
-webkit-transition: color 0.5s ease;
-webkit-transition: text-shadow 0.5s ease;
-moz-transition: color 0.5s ease;
-moz-transition: text-shadow 0.5s ease;
-o-transition: color 0.5s ease;
-o-transition: text-shadow 0.5s ease;
-ms-transition: color 0.5s ease;
-ms-transition: text-shadow 0.5s ease;
}
#main_content a:hover {
color: #0069ba;
text-shadow: #0090ff 0px 0px 2px;
}
footer a:hover {
color: #43adff;
text-shadow: #0090ff 0px 0px 2px;
}
em {
font-style: italic;
}
strong {
font-weight: bold;
}
img {
position: relative;
margin: 0 auto;
max-width: 739px;
padding: 5px;
margin: 10px 0 10px 0;
border: 1px solid #ebebeb;
box-shadow: 0 0 5px #ebebeb;
-webkit-box-shadow: 0 0 5px #ebebeb;
-moz-box-shadow: 0 0 5px #ebebeb;
-o-box-shadow: 0 0 5px #ebebeb;
-ms-box-shadow: 0 0 5px #ebebeb;
}
pre, code {
width: 100%;
color: #222;
background-color: #fff;
font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
font-size: 14px;
border-radius: 2px;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
pre {
width: 100%;
padding: 10px;
box-shadow: 0 0 10px rgba(0,0,0,.1);
overflow: auto;
}
code {
padding: 3px;
margin: 0 3px;
box-shadow: 0 0 10px rgba(0,0,0,.1);
}
pre code {
display: block;
box-shadow: none;
}
blockquote {
color: #666;
margin-bottom: 20px;
padding: 0 0 0 20px;
border-left: 3px solid #bbb;
}
ul, ol, dl {
margin-bottom: 15px
}
ul li {
list-style: inside;
padding-left: 20px;
}
ol li {
list-style: decimal inside;
padding-left: 20px;
}
dl dt {
font-weight: bold;
}
dl dd {
padding-left: 20px;
font-style: italic;
}
dl p {
padding-left: 20px;
font-style: italic;
}
hr {
height: 1px;
margin-bottom: 5px;
border: none;
background: url('../images/bg_hr.png') repeat-x center;
}
table {
border: 1px solid #373737;
margin-bottom: 20px;
text-align: left;
}
th {
font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
padding: 10px;
background: #373737;
color: #fff;
}
td {
padding: 10px;
border: 1px solid #373737;
}
form {
background: #f2f2f2;
padding: 20px;
}
img {
width: 100%;
max-width: 100%;
}
/*******************************************************************************
Full-Width Styles
*******************************************************************************/
.outer {
width: 100%;
}
.inner {
position: relative;
max-width: 640px;
padding: 20px 10px;
margin: 0 auto;
}
#forkme_banner {
display: block;
position: absolute;
top:0;
right: 10px;
z-index: 10;
padding: 10px 50px 10px 10px;
color: #fff;
background: url('../images/blacktocat.png') #0090ff no-repeat 95% 50%;
font-weight: 700;
box-shadow: 0 0 10px rgba(0,0,0,.5);
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
#header_wrap {
background: #212121;
background: -moz-linear-gradient(top, #373737, #212121);
background: -webkit-linear-gradient(top, #373737, #212121);
background: -ms-linear-gradient(top, #373737, #212121);
background: -o-linear-gradient(top, #373737, #212121);
background: linear-gradient(top, #373737, #212121);
}
#header_wrap .inner {
padding: 50px 10px 30px 10px;
}
#project_title {
margin: 0;
color: #fff;
font-size: 42px;
font-weight: 700;
text-shadow: #111 0px 0px 10px;
}
#project_tagline {
color: #fff;
font-size: 24px;
font-weight: 300;
background: none;
text-shadow: #111 0px 0px 10px;
}
#downloads {
position: absolute;
width: 210px;
z-index: 10;
bottom: -40px;
right: 0;
height: 70px;
background: url('../images/icon_download.png') no-repeat 0% 90%;
}
.zip_download_link {
display: block;
float: right;
width: 90px;
height:70px;
text-indent: -5000px;
overflow: hidden;
background: url(../images/sprite_download.png) no-repeat bottom left;
}
.tar_download_link {
display: block;
float: right;
width: 90px;
height:70px;
text-indent: -5000px;
overflow: hidden;
background: url(../images/sprite_download.png) no-repeat bottom right;
margin-left: 10px;
}
.zip_download_link:hover {
background: url(../images/sprite_download.png) no-repeat top left;
}
.tar_download_link:hover {
background: url(../images/sprite_download.png) no-repeat top right;
}
#main_content_wrap {
background: #f2f2f2;
border-top: 1px solid #111;
border-bottom: 1px solid #111;
}
#main_content {
padding-top: 40px;
}
#footer_wrap {
background: #212121;
}
/*******************************************************************************
Small Device Styles
*******************************************************************************/
@media screen and (max-width: 480px) {
body {
font-size:14px;
}
#downloads {
display: none;
}
.inner {
min-width: 320px;
max-width: 480px;
}
#project_title {
font-size: 32px;
}
h1 {
font-size: 28px;
}
h2 {
font-size: 24px;
}
h3 {
font-size: 21px;
}
h4 {
font-size: 18px;
}
h5 {
font-size: 14px;
}
h6 {
font-size: 12px;
}
code, pre {
min-width: 320px;
max-width: 480px;
font-size: 11px;
}
}