Blame tests/torture_pki.c
|
Packit Service |
31306d |
#include "config.h"
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
#include <stdio.h>
|
|
Packit Service |
31306d |
#include <stdlib.h>
|
|
Packit Service |
31306d |
#include <string.h>
|
|
Packit Service |
31306d |
#include <sys/types.h>
|
|
Packit Service |
31306d |
#include <sys/stat.h>
|
|
Packit Service |
31306d |
#include <fcntl.h>
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
#ifdef HAVE_UNISTD_H
|
|
Packit Service |
31306d |
#include <unistd.h>
|
|
Packit Service |
31306d |
#elif (defined _WIN32) || (defined _WIN64)
|
|
Packit Service |
31306d |
#include <io.h>
|
|
Packit Service |
31306d |
#define read _read
|
|
Packit Service |
31306d |
#define open _open
|
|
Packit Service |
31306d |
#define write _write
|
|
Packit Service |
31306d |
#define close _close
|
|
Packit Service |
31306d |
#endif
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
#include "torture_pki.h"
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
char *torture_pki_read_file(const char *filename)
|
|
Packit Service |
31306d |
{
|
|
Packit Service |
31306d |
char *key;
|
|
Packit Service |
31306d |
int fd;
|
|
Packit Service |
31306d |
int size;
|
|
Packit Service |
31306d |
int rc;
|
|
Packit Service |
31306d |
struct stat sb;
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
if (filename == NULL || filename[0] == '\0') {
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
fd = open(filename, O_RDONLY);
|
|
Packit Service |
31306d |
if (fd < 0) {
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
rc = fstat(fd, &sb);
|
|
Packit Service |
31306d |
if (rc != 0) {
|
|
Packit Service |
31306d |
close(fd);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
key = malloc(sb.st_size + 1);
|
|
Packit Service |
31306d |
if (key == NULL) {
|
|
Packit Service |
31306d |
close(fd);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
size = read(fd, key, sb.st_size);
|
|
Packit Service |
31306d |
close(fd);
|
|
Packit Service |
31306d |
if (size != sb.st_size) {
|
|
Packit Service |
31306d |
free(key);
|
|
Packit Service |
31306d |
return NULL;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
key[size] = '\0';
|
|
Packit Service |
31306d |
return key;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
int torture_read_one_line(const char *filename, char *buffer, size_t len)
|
|
Packit Service |
31306d |
{
|
|
Packit Service |
31306d |
FILE *fp;
|
|
Packit Service |
31306d |
size_t nmemb;
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
fp = fopen(filename, "r");
|
|
Packit Service |
31306d |
if (fp == NULL) {
|
|
Packit Service |
31306d |
return -1;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
nmemb = fread(buffer, len - 2, 1, fp);
|
|
Packit Service |
31306d |
if (nmemb != 0 || ferror(fp)) {
|
|
Packit Service |
31306d |
fclose(fp);
|
|
Packit Service |
31306d |
return -1;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
buffer[len - 1] = '\0';
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
fclose(fp);
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
return 0;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
/**
|
|
Packit Service |
31306d |
* @internal
|
|
Packit Service |
31306d |
*
|
|
Packit Service |
31306d |
* Returns the character len of a public key string, omitting the comment part
|
|
Packit Service |
31306d |
*/
|
|
Packit Service |
31306d |
size_t torture_pubkey_len(const char *pubkey)
|
|
Packit Service |
31306d |
{
|
|
Packit Service |
31306d |
const char *ptr;
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
ptr = strchr(pubkey, ' ');
|
|
Packit Service |
31306d |
if (ptr != NULL) {
|
|
Packit Service |
31306d |
ptr = strchr(ptr + 1, ' ');
|
|
Packit Service |
31306d |
if (ptr != NULL) {
|
|
Packit Service |
31306d |
return ptr - pubkey;
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
}
|
|
Packit Service |
31306d |
|
|
Packit Service |
31306d |
return 0;
|
|
Packit Service |
31306d |
}
|