-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Dillen Meijboom
committed
Dec 7, 2021
0 parents
commit 95a9d81
Showing
7 changed files
with
1,018 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Copyright (c) 2013 Kyle Isom <[email protected]> | ||
Copyright (c) 2012 The Go Authors. All rights reserved. | ||
|
||
Redistribution and use in source and binary forms, with or without | ||
modification, are permitted provided that the following conditions are | ||
met: | ||
|
||
* Redistributions of source code must retain the above copyright | ||
notice, this list of conditions and the following disclaimer. | ||
* Redistributions in binary form must reproduce the above | ||
copyright notice, this list of conditions and the following disclaimer | ||
in the documentation and/or other materials provided with the | ||
distribution. | ||
* Neither the name of Google Inc. nor the names of its | ||
contributors may be used to endorse or promote products derived from | ||
this software without specific prior written permission. | ||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
# NOTE | ||
|
||
This implementation is direct fork of Kylom's implementation. I claim no authorship over this code apart from some minor modifications. | ||
Please be aware this code **has not yet been reviewed**. | ||
|
||
ecies implements the Elliptic Curve Integrated Encryption Scheme. | ||
|
||
The package is designed to be compliant with the appropriate NIST | ||
standards, and therefore doesn't support the full SEC 1 algorithm set. | ||
|
||
|
||
STATUS: | ||
|
||
ecies should be ready for use. The ASN.1 support is only complete so | ||
far as to supported the listed algorithms before. | ||
|
||
|
||
CAVEATS | ||
|
||
1. CMAC support is currently not present. | ||
|
||
|
||
SUPPORTED ALGORITHMS | ||
|
||
SYMMETRIC CIPHERS HASH FUNCTIONS | ||
AES128 SHA-1 | ||
AES192 SHA-224 | ||
AES256 SHA-256 | ||
SHA-384 | ||
ELLIPTIC CURVE SHA-512 | ||
P256 | ||
P384 KEY DERIVATION FUNCTION | ||
P521 NIST SP 800-65a Concatenation KDF | ||
|
||
Curve P224 isn't supported because it does not provide a minimum security | ||
level of AES128 with HMAC-SHA1. According to NIST SP 800-57, the security | ||
level of P224 is 112 bits of security. Symmetric ciphers use CTR-mode; | ||
message tags are computed using HMAC-<HASH> function. | ||
|
||
|
||
CURVE SELECTION | ||
|
||
According to NIST SP 800-57, the following curves should be selected: | ||
|
||
+----------------+-------+ | ||
| SYMMETRIC SIZE | CURVE | | ||
+----------------+-------+ | ||
| 128-bit | P256 | | ||
+----------------+-------+ | ||
| 192-bit | P384 | | ||
+----------------+-------+ | ||
| 256-bit | P521 | | ||
+----------------+-------+ | ||
|
||
|
||
TODO | ||
|
||
1. Look at serialising the parameters with the SEC 1 ASN.1 module. | ||
2. Validate ASN.1 formats with SEC 1. | ||
|
||
|
||
TEST VECTORS | ||
|
||
The only test vectors I've found so far date from 1993, predating AES | ||
and including only 163-bit curves. Therefore, there are no published | ||
test vectors to compare to. | ||
|
||
|
||
LICENSE | ||
|
||
ecies is released under the same license as the Go source code. See the | ||
LICENSE file for details. | ||
|
||
|
||
REFERENCES | ||
|
||
* SEC (Standard for Efficient Cryptography) 1, version 2.0: Elliptic | ||
Curve Cryptography; Certicom, May 2009. | ||
http://www.secg.org/sec1-v2.pdf | ||
* GEC (Guidelines for Efficient Cryptography) 2, version 0.3: Test | ||
Vectors for SEC 1; Certicom, September 1999. | ||
http://read.pudn.com/downloads168/doc/772358/TestVectorsforSEC%201-gec2.pdf | ||
* NIST SP 800-56a: Recommendation for Pair-Wise Key Establishment Schemes | ||
Using Discrete Logarithm Cryptography. National Institute of Standards | ||
and Technology, May 2007. | ||
http://csrc.nist.gov/publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf | ||
* Suite B Implementer’s Guide to NIST SP 800-56A. National Security | ||
Agency, July 28, 2009. | ||
http://www.nsa.gov/ia/_files/SuiteB_Implementer_G-113808.pdf | ||
* NIST SP 800-57: Recommendation for Key Management – Part 1: General | ||
(Revision 3). National Institute of Standards and Technology, July | ||
2012. | ||
http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf | ||
|
Oops, something went wrong.