Added support of EdDSA signatures
This commit is contained in:
committed by
Tobias Brunner
parent
564a199674
commit
35bc60cc68
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
* Copyright (C) 2016 Andreas Steffen
|
||||
* HSR Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -70,5 +71,6 @@ ENUM(builder_part_names, BUILD_FROM_FILE, BUILD_END,
|
||||
"BUILD_SAFE_PRIMES",
|
||||
"BUILD_SHARES",
|
||||
"BUILD_THRESHOLD",
|
||||
"BUILD_EDDSA_PRIV_ASN1_DER",
|
||||
"BUILD_END",
|
||||
);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Martin Willi
|
||||
* Hochschule fuer Technik Rapperswil
|
||||
* Copyright (C) 2016 Andreas Steffen
|
||||
* HSR Hochschule fuer Technik Rapperswil
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
@@ -151,6 +152,8 @@ enum builder_part_t {
|
||||
BUILD_SHARES,
|
||||
/** minimum number of participating private key shares */
|
||||
BUILD_THRESHOLD,
|
||||
/** DER encoded ASN.1 EdDSA private key */
|
||||
BUILD_EDDSA_PRIV_ASN1_DER,
|
||||
/** end of variable argument builder list */
|
||||
BUILD_END,
|
||||
};
|
||||
|
||||
@@ -144,6 +144,10 @@ enum cred_encoding_part_t {
|
||||
CRED_PART_PKCS10_ASN1_DER,
|
||||
/** a PGP encoded certificate */
|
||||
CRED_PART_PGP_CERT,
|
||||
/** a DER encoded EdDSA public key */
|
||||
CRED_PART_EDDSA_PUB_ASN1_DER,
|
||||
/** a DER encoded EdDSA private key */
|
||||
CRED_PART_EDDSA_PRIV_ASN1_DER,
|
||||
/** a DER encoded BLISS public key */
|
||||
CRED_PART_BLISS_PUB_ASN1_DER,
|
||||
/** a DER encoded BLISS private key */
|
||||
|
||||
@@ -24,6 +24,8 @@ ENUM(key_type_names, KEY_ANY, KEY_BLISS,
|
||||
"RSA",
|
||||
"ECDSA",
|
||||
"DSA",
|
||||
"ED25519",
|
||||
"ED448",
|
||||
"BLISS"
|
||||
);
|
||||
|
||||
@@ -48,6 +50,8 @@ ENUM(signature_scheme_names, SIGN_UNKNOWN, SIGN_BLISS_WITH_SHA3_512,
|
||||
"ECDSA-256",
|
||||
"ECDSA-384",
|
||||
"ECDSA-521",
|
||||
"ED25519",
|
||||
"ED448",
|
||||
"BLISS_WITH_SHA2_256",
|
||||
"BLISS_WITH_SHA2_384",
|
||||
"BLISS_WITH_SHA2_512",
|
||||
@@ -151,6 +155,10 @@ signature_scheme_t signature_scheme_from_oid(int oid)
|
||||
return SIGN_ECDSA_WITH_SHA384_DER;
|
||||
case OID_ECDSA_WITH_SHA512:
|
||||
return SIGN_ECDSA_WITH_SHA512_DER;
|
||||
case OID_ED25519:
|
||||
return SIGN_ED25519;
|
||||
case OID_ED448:
|
||||
return SIGN_ED448;
|
||||
case OID_BLISS_PUBLICKEY:
|
||||
case OID_BLISS_WITH_SHA2_512:
|
||||
return SIGN_BLISS_WITH_SHA2_512;
|
||||
@@ -210,6 +218,10 @@ int signature_scheme_to_oid(signature_scheme_t scheme)
|
||||
return OID_ECDSA_WITH_SHA384;
|
||||
case SIGN_ECDSA_WITH_SHA512_DER:
|
||||
return OID_ECDSA_WITH_SHA512;
|
||||
case SIGN_ED25519:
|
||||
return OID_ED25519;
|
||||
case SIGN_ED448:
|
||||
return OID_ED448;
|
||||
case SIGN_BLISS_WITH_SHA2_256:
|
||||
return OID_BLISS_WITH_SHA2_256;
|
||||
case SIGN_BLISS_WITH_SHA2_384:
|
||||
@@ -236,15 +248,17 @@ static struct {
|
||||
key_type_t type;
|
||||
int max_keysize;
|
||||
} scheme_map[] = {
|
||||
{ SIGN_RSA_EMSA_PKCS1_SHA2_256, KEY_RSA, 3072 },
|
||||
{ SIGN_RSA_EMSA_PKCS1_SHA2_384, KEY_RSA, 7680 },
|
||||
{ SIGN_RSA_EMSA_PKCS1_SHA2_512, KEY_RSA, 0 },
|
||||
{ SIGN_ECDSA_WITH_SHA256_DER, KEY_ECDSA, 256 },
|
||||
{ SIGN_ECDSA_WITH_SHA384_DER, KEY_ECDSA, 384 },
|
||||
{ SIGN_ECDSA_WITH_SHA512_DER, KEY_ECDSA, 0 },
|
||||
{ SIGN_BLISS_WITH_SHA2_256, KEY_BLISS, 128 },
|
||||
{ SIGN_BLISS_WITH_SHA2_384, KEY_BLISS, 192 },
|
||||
{ SIGN_BLISS_WITH_SHA2_512, KEY_BLISS, 0 }
|
||||
{ SIGN_RSA_EMSA_PKCS1_SHA2_256, KEY_RSA, 3072 },
|
||||
{ SIGN_RSA_EMSA_PKCS1_SHA2_384, KEY_RSA, 7680 },
|
||||
{ SIGN_RSA_EMSA_PKCS1_SHA2_512, KEY_RSA, 0 },
|
||||
{ SIGN_ECDSA_WITH_SHA256_DER, KEY_ECDSA, 256 },
|
||||
{ SIGN_ECDSA_WITH_SHA384_DER, KEY_ECDSA, 384 },
|
||||
{ SIGN_ECDSA_WITH_SHA512_DER, KEY_ECDSA, 0 },
|
||||
{ SIGN_ED25519, KEY_ED25519, 0 },
|
||||
{ SIGN_ED448, KEY_ED448, 0 },
|
||||
{ SIGN_BLISS_WITH_SHA2_256, KEY_BLISS, 128 },
|
||||
{ SIGN_BLISS_WITH_SHA2_384, KEY_BLISS, 192 },
|
||||
{ SIGN_BLISS_WITH_SHA2_512, KEY_BLISS, 0 }
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -323,6 +337,10 @@ key_type_t key_type_from_signature_scheme(signature_scheme_t scheme)
|
||||
case SIGN_ECDSA_384:
|
||||
case SIGN_ECDSA_521:
|
||||
return KEY_ECDSA;
|
||||
case SIGN_ED25519:
|
||||
return KEY_ED25519;
|
||||
case SIGN_ED448:
|
||||
return KEY_ED448;
|
||||
case SIGN_BLISS_WITH_SHA2_256:
|
||||
case SIGN_BLISS_WITH_SHA2_384:
|
||||
case SIGN_BLISS_WITH_SHA2_512:
|
||||
|
||||
@@ -37,16 +37,19 @@ typedef enum encryption_scheme_t encryption_scheme_t;
|
||||
*/
|
||||
enum key_type_t {
|
||||
/** key type wildcard */
|
||||
KEY_ANY = 0,
|
||||
KEY_ANY = 0,
|
||||
/** RSA crypto system as in PKCS#1 */
|
||||
KEY_RSA = 1,
|
||||
KEY_RSA = 1,
|
||||
/** ECDSA as in ANSI X9.62 */
|
||||
KEY_ECDSA = 2,
|
||||
KEY_ECDSA = 2,
|
||||
/** DSA */
|
||||
KEY_DSA = 3,
|
||||
KEY_DSA = 3,
|
||||
/** Ed25519 PureEdDSA instance as in draft-irtf-cfrg-eddsa */
|
||||
KEY_ED25519 = 4,
|
||||
/** Ed448 PureEdDSA instance as in draft-irtf-cfrg-eddsa */
|
||||
KEY_ED448 = 5,
|
||||
/** BLISS */
|
||||
KEY_BLISS = 4,
|
||||
/** ElGamal, ... */
|
||||
KEY_BLISS = 6,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -102,6 +105,10 @@ enum signature_scheme_t {
|
||||
SIGN_ECDSA_384,
|
||||
/** ECDSA on the P-521 curve with SHA-512 as in RFC 4754 */
|
||||
SIGN_ECDSA_521,
|
||||
/** PureEdDSA on Curve25519 as in draft-ietf-curdle-pkix */
|
||||
SIGN_ED25519,
|
||||
/** PureEdDSA on Curve448 as in draft-ietf-curdle-pkix */
|
||||
SIGN_ED448,
|
||||
/** BLISS with SHA-2_256 */
|
||||
SIGN_BLISS_WITH_SHA2_256,
|
||||
/** BLISS with SHA-2_384 */
|
||||
|
||||
Reference in New Issue
Block a user