Skip to content

Instantly share code, notes, and snippets.

@angelsl
Created September 21, 2015 09:01
Show Gist options
  • Save angelsl/c098dd75acd8910d8f05 to your computer and use it in GitHub Desktop.
Save angelsl/c098dd75acd8910d8f05 to your computer and use it in GitHub Desktop.
diff --git a/src/lib/libssl/src/crypto/ec/ec_curve.c b/src/lib/libssl/src/crypto/ec/ec_curve.c
index 8598ee2..2d539f0 100644
--- a/src/lib/libssl/src/crypto/ec/ec_curve.c
+++ b/src/lib/libssl/src/crypto/ec/ec_curve.c
@@ -3008,6 +3008,42 @@ static const struct {
}
};
+static const struct {
+ EC_CURVE_DATA h;
+ unsigned char data[0 + 32 * 6];
+}
+ _EC_CURVE_25519 = {
+ {
+ NID_X9_62_prime_field, 0, 32, 8
+ },
+ { /* no seed */
+ 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* p */
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xED,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* a */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+ 0x6d, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* b */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* x */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x09,
+ 0x20, 0xae, 0x19, 0xa1, 0xb8, 0xa0, 0x86, 0xb4, 0xe0, 0x1e, /* y */
+ 0xdd, 0x2c, 0x77, 0x48, 0xd1, 0x4c, 0x92, 0x3d, 0x4d, 0x7e,
+ 0x6d, 0x7c, 0x61, 0xb2, 0x29, 0xe9, 0xc5, 0xa2, 0x7e, 0xce,
+ 0xd3, 0xd9,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* order */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xde, 0xf9, 0xde,
+ 0xa2, 0xf7, 0x9c, 0xd6, 0x58, 0x12, 0x63, 0x1a, 0x5c, 0xf5,
+ 0xd3, 0xed
+ }
+};
+
#endif
typedef struct _ec_list_element_st {
@@ -3135,6 +3171,7 @@ static const ec_list_element curve_list[] = {
{NID_brainpoolP512t1, &_EC_brainpoolP512t1.h, 0, "RFC 5639 curve over a 512 bit prime field"},
/* ANSSI */
{NID_FRP256v1, &_EC_FRP256v1.h, 0, "FRP256v1"},
+ {NID_curve25519, &_EC_CURVE_25519, 0, "Curve 25519"},
#ifndef OPENSSL_NO_GOST
/* GOST R 34.10-2001 */
{NID_id_GostR3410_2001_TestParamSet, &_EC_GOST_2001_Test.h, 0, "GOST R 34.10-2001 Test Curve"},
diff --git a/src/lib/libssl/src/crypto/objects/obj_mac.num b/src/lib/libssl/src/crypto/objects/obj_mac.num
index d3a658e..bb7796a 100644
--- a/src/lib/libssl/src/crypto/objects/obj_mac.num
+++ b/src/lib/libssl/src/crypto/objects/obj_mac.num
@@ -947,3 +947,4 @@ id_tc26_gost3410_2012_256 946
id_tc26_gost3410_2012_512 947
id_tc26_signwithdigest_gost3410_2012_256 948
id_tc26_signwithdigest_gost3410_2012_512 949
+curve25519 950
diff --git a/src/lib/libssl/src/crypto/objects/objects.txt b/src/lib/libssl/src/crypto/objects/objects.txt
index 1ce73cc..a942d21 100644
--- a/src/lib/libssl/src/crypto/objects/objects.txt
+++ b/src/lib/libssl/src/crypto/objects/objects.txt
@@ -1328,3 +1328,5 @@ tc26 1 1 1 : id-tc26-gost3410-2012-256 : GOST R 34.10-2012 (256 bit)
tc26 1 1 2 : id-tc26-gost3410-2012-512 : GOST R 34.10-2012 (512 bit)
tc26 1 3 2 : id-tc26-signwithdigest-gost3410-2012-256 : GOST R 34.11-2012 with GOST R 34.10-2012 (256 bit)
tc26 1 3 3 : id-tc26-signwithdigest-gost3410-2012-512 : GOST R 34.11-2012 with GOST R 34.10-2012 (512 bit)
+
+1 3 6 1 4 1 3029 1 5 1 : curve25519
-----BEGIN EC PARAMETERS-----
MIGiAgEBMCsGByqGSM49AQECIH//////////////////////////////////////
///tMAgEAwdtBgQBAQRBBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ
IK4ZobighrTgHt0sd0jRTJI9TX5tfGGyKenFon7O09kCIBAAAAAAAAAAAAAAAAAA
AAAU3vneovec1lgSYxpc9dPtAgEI
-----END EC PARAMETERS-----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment