diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-01-08 21:47:56 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-01-10 22:24:11 +0100 |
commit | fd2ef07f372819e4eccbd85b7a0388c9c41eb31d (patch) | |
tree | 9d1e5f54f8ad98f6939934f4ee915290d799b3fc /tests/torture_pki.c | |
parent | e19163eabb035ccc4c4c6578dd6fc896c39f23a2 (diff) | |
download | libssh-fd2ef07f372819e4eccbd85b7a0388c9c41eb31d.tar.gz libssh-fd2ef07f372819e4eccbd85b7a0388c9c41eb31d.tar.xz libssh-fd2ef07f372819e4eccbd85b7a0388c9c41eb31d.zip |
tests: Move helper functions to a common file
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'tests/torture_pki.c')
-rw-r--r-- | tests/torture_pki.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/torture_pki.c b/tests/torture_pki.c new file mode 100644 index 00000000..07c01094 --- /dev/null +++ b/tests/torture_pki.c @@ -0,0 +1,91 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> + +#include "torture_pki.h" + +char *torture_pki_read_file(const char *filename) +{ + char *key; + int fd; + int size; + int rc; + struct stat sb; + + if (filename == NULL || filename[0] == '\0') { + return NULL; + } + + fd = open(filename, O_RDONLY); + if (fd < 0) { + return NULL; + } + + rc = fstat(fd, &sb); + if (rc != 0) { + close(fd); + return NULL; + } + + key = malloc(sb.st_size + 1); + if (key == NULL) { + close(fd); + return NULL; + } + + size = read(fd, key, sb.st_size); + close(fd); + if (size != sb.st_size) { + free(key); + return NULL; + } + + key[size] = '\0'; + return key; +} + +int torture_read_one_line(const char *filename, char *buffer, size_t len) +{ + FILE *fp; + size_t nmemb; + + fp = fopen(filename, "r"); + if (fp == NULL) { + return -1; + } + + nmemb = fread(buffer, len - 2, 1, fp); + if (nmemb != 0 || ferror(fp)) { + fclose(fp); + return -1; + } + buffer[len - 1] = '\0'; + + fclose(fp); + + return 0; +} + +/** + * @internal + * + * Returns the character len of a public key string, omitting the comment part + */ +size_t torture_pubkey_len(const char *pubkey) +{ + const char *ptr; + + ptr = strchr(pubkey, ' '); + if (ptr != NULL) { + ptr = strchr(ptr + 1, ' '); + if (ptr != NULL) { + return ptr - pubkey; + } + } + + return 0; +} |