ecdsa_t *ecdsa = xzalloc(sizeof(*ecdsa));
len = b64decode(p, ecdsa->public, len);
+
if(len != 32) {
logger(DEBUG_ALWAYS, LOG_ERR, "Invalid format of public key! len = %d", len);
free(ecdsa);
while(fgets(line, sizeof(line), fp)) {
if(!data) {
- if(strncmp(line, "-----BEGIN ", 11))
+ if(strncmp(line, "-----BEGIN ", 11)) {
continue;
- if(strncmp(line + 11, type, typelen))
+ }
+
+ if(strncmp(line + 11, type, typelen)) {
continue;
+ }
+
data = true;
continue;
}
- if(!strncmp(line, "-----END ", 9))
+ if(!strncmp(line, "-----END ", 9)) {
break;
+ }
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;
} else {
errno = ENOENT;
}
+
return false;
}
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)))
+
+ if(read_pem(fp, "ED25519 PUBLIC KEY", ecdsa->public, sizeof(ecdsa->public))) {
return ecdsa;
+ }
+
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)))
+
+ if(read_pem(fp, "ED25519 PRIVATE KEY", ecdsa->private, sizeof(*ecdsa))) {
return ecdsa;
+ }
+
free(ecdsa);
return 0;
}