projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add the brainpoolp512r1 curve and use it.
[tinc]
/
src
/
openssl
/
ecdsagen.c
diff --git
a/src/openssl/ecdsagen.c
b/src/openssl/ecdsagen.c
index
35795f3
..
e818ff1
100644
(file)
--- a/
src/openssl/ecdsagen.c
+++ b/
src/openssl/ecdsagen.c
@@
-30,18
+30,24
@@
typedef EC_KEY ecdsa_t;
#include "../utils.h"
#include "../xalloc.h"
#include "../utils.h"
#include "../xalloc.h"
+#include "brainpool.h"
+
// Generate ECDSA key
ecdsa_t *ecdsa_generate(void) {
// Generate ECDSA key
ecdsa_t *ecdsa_generate(void) {
- ecdsa_t *ecdsa = EC_KEY_new_by_curve_name(NID_secp521r1);
+ ecdsa_t *ecdsa = EC_KEY_new();
+ if(!ecdsa) {
+ fprintf(stderr, "Allocating EC key failed: %s", ERR_error_string(ERR_get_error(), NULL));
+ return NULL;
+ }
- if(!
ecdsa
|| !EC_KEY_generate_key(ecdsa)) {
+ if(!
EC_KEY_set_group(ecdsa, brainpoolp512r1)
|| !EC_KEY_generate_key(ecdsa)) {
fprintf(stderr, "Generating EC key failed: %s", ERR_error_string(ERR_get_error(), NULL));
ecdsa_free(ecdsa);
fprintf(stderr, "Generating EC key failed: %s", ERR_error_string(ERR_get_error(), NULL));
ecdsa_free(ecdsa);
- return
false
;
+ return
NULL
;
}
}
- EC_KEY_set_asn1_flag(ecdsa,
OPENSSL_EC_NAMED_CURVE
);
+ EC_KEY_set_asn1_flag(ecdsa,
0
);
EC_KEY_set_conv_form(ecdsa, POINT_CONVERSION_COMPRESSED);
return ecdsa;
EC_KEY_set_conv_form(ecdsa, POINT_CONVERSION_COMPRESSED);
return ecdsa;
@@
-50,17
+56,9
@@
ecdsa_t *ecdsa_generate(void) {
// Write PEM ECDSA keys
bool ecdsa_write_pem_public_key(ecdsa_t *ecdsa, FILE *fp) {
// Write PEM ECDSA keys
bool ecdsa_write_pem_public_key(ecdsa_t *ecdsa, FILE *fp) {
- BIO *out = BIO_new(BIO_s_file());
- BIO_set_fp(out, fp, BIO_NOCLOSE);
- PEM_write_bio_EC_PUBKEY(out, ecdsa);
- BIO_free(out);
- return true;
+ return PEM_write_EC_PUBKEY(fp, ecdsa);
}
bool ecdsa_write_pem_private_key(ecdsa_t *ecdsa, FILE *fp) {
}
bool ecdsa_write_pem_private_key(ecdsa_t *ecdsa, FILE *fp) {
- BIO *out = BIO_new(BIO_s_file());
- BIO_set_fp(out, fp, BIO_NOCLOSE);
- PEM_write_bio_ECPrivateKey(out, ecdsa, NULL, NULL, 0, NULL, NULL);
- BIO_free(out);
- return true;
+ return PEM_write_ECPrivateKey(fp, ecdsa, NULL, NULL, 0, NULL, NULL);
}
}