projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add some information about the requirements of a chroot environment.
[tinc]
/
src
/
ed25519
/
ecdsa.c
diff --git
a/src/ed25519/ecdsa.c
b/src/ed25519/ecdsa.c
index
f8aafe4
..
79532c8
100644
(file)
--- a/
src/ed25519/ecdsa.c
+++ b/
src/ed25519/ecdsa.c
@@
-21,7
+21,7
@@
#include "ed25519.h"
#include "ed25519.h"
-#define
__TINC_ECDSA_INTERNAL__
+#define
TINC_ECDSA_INTERNAL
typedef struct {
uint8_t private[64];
uint8_t public[32];
typedef struct {
uint8_t private[64];
uint8_t public[32];
@@
-42,8
+42,9
@@
ecdsa_t *ecdsa_set_base64_public_key(const char *p) {
return 0;
}
return 0;
}
- ecdsa_t *ecdsa = xzalloc(sizeof
*ecdsa
);
+ ecdsa_t *ecdsa = xzalloc(sizeof
(*ecdsa)
);
len = b64decode(p, ecdsa->public, len);
len = b64decode(p, ecdsa->public, len);
+
if(len != 32) {
logger(DEBUG_ALWAYS, LOG_ERR, "Invalid format of public key! len = %d", len);
free(ecdsa);
if(len != 32) {
logger(DEBUG_ALWAYS, LOG_ERR, "Invalid format of public key! len = %d", len);
free(ecdsa);
@@
-55,7
+56,7
@@
ecdsa_t *ecdsa_set_base64_public_key(const char *p) {
char *ecdsa_get_base64_public_key(ecdsa_t *ecdsa) {
char *base64 = xmalloc(44);
char *ecdsa_get_base64_public_key(ecdsa_t *ecdsa) {
char *base64 = xmalloc(44);
- b64encode(ecdsa->public, base64, sizeof
ecdsa->public
);
+ b64encode(ecdsa->public, base64, sizeof
(ecdsa->public)
);
return base64;
}
return base64;
}
@@
-67,21
+68,27
@@
static bool read_pem(FILE *fp, const char *type, void *buf, size_t size) {
bool data = false;
size_t typelen = strlen(type);
bool data = false;
size_t typelen = strlen(type);
- while(fgets(line, sizeof
line
, fp)) {
+ while(fgets(line, sizeof
(line)
, fp)) {
if(!data) {
if(!data) {
- if(strncmp(line, "-----BEGIN ", 11))
+ if(strncmp(line, "-----BEGIN ", 11))
{
continue;
continue;
- if(strncmp(line + 11, type, typelen))
+ }
+
+ if(strncmp(line + 11, type, typelen)) {
continue;
continue;
+ }
+
data = true;
continue;
}
data = true;
continue;
}
- if(!strncmp(line, "-----END ", 9))
+ if(!strncmp(line, "-----END ", 9))
{
break;
break;
+ }
size_t linelen = strcspn(line, "\r\n");
size_t len = b64decode(line, line, linelen);
size_t linelen = strcspn(line, "\r\n");
size_t len = b64decode(line, line, linelen);
+
if(!len) {
logger(DEBUG_ALWAYS, LOG_ERR, "Invalid base64 data in PEM file\n");
errno = EINVAL;
if(!len) {
logger(DEBUG_ALWAYS, LOG_ERR, "Invalid base64 data in PEM file\n");
errno = EINVAL;
@@
-106,6
+113,7
@@
static bool read_pem(FILE *fp, const char *type, void *buf, size_t size) {
} else {
errno = ENOENT;
}
} else {
errno = ENOENT;
}
+
return false;
}
return false;
}
@@
-113,17
+121,23
@@
static bool read_pem(FILE *fp, const char *type, void *buf, size_t size) {
}
ecdsa_t *ecdsa_read_pem_public_key(FILE *fp) {
}
ecdsa_t *ecdsa_read_pem_public_key(FILE *fp) {
- ecdsa_t *ecdsa = xzalloc(sizeof *ecdsa);
- if(read_pem(fp, "ED25519 PUBLIC KEY", ecdsa->public, sizeof ecdsa->public))
+ ecdsa_t *ecdsa = xzalloc(sizeof(*ecdsa));
+
+ if(read_pem(fp, "ED25519 PUBLIC KEY", ecdsa->public, sizeof(ecdsa->public))) {
return ecdsa;
return ecdsa;
+ }
+
free(ecdsa);
return 0;
}
ecdsa_t *ecdsa_read_pem_private_key(FILE *fp) {
free(ecdsa);
return 0;
}
ecdsa_t *ecdsa_read_pem_private_key(FILE *fp) {
- ecdsa_t *ecdsa = xmalloc(sizeof *ecdsa);
- if(read_pem(fp, "ED25519 PRIVATE KEY", ecdsa->private, sizeof *ecdsa))
+ ecdsa_t *ecdsa = xmalloc(sizeof(*ecdsa));
+
+ if(read_pem(fp, "ED25519 PRIVATE KEY", ecdsa->private, sizeof(*ecdsa))) {
return ecdsa;
return ecdsa;
+ }
+
free(ecdsa);
return 0;
}
free(ecdsa);
return 0;
}