/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. * * Utility functions for file and key handling. */ #include "file_keys.h" #include #include #include #include #include #include #include #include "rsa_utility.h" #include "utility.h" uint8_t* BufferFromFile(char* input_file, int* len) { int fd; struct stat stat_fd; uint8_t* buf = NULL; if ((fd = open(input_file, O_RDONLY)) == -1) { fprintf(stderr, "Couldn't open file.\n"); return NULL; } if (-1 == fstat(fd, &stat_fd)) { fprintf(stderr, "Couldn't stat key file\n"); return NULL; } *len = stat_fd.st_size; /* Read entire key binary blob into a buffer. */ buf = (uint8_t*) Malloc(*len); if (!buf) return NULL; if (*len != read(fd, buf, *len)) { fprintf(stderr, "Couldn't read key into a buffer.\n"); return NULL; } close(fd); return buf; } RSAPublicKey* RSAPublicKeyFromFile(char* input_file) { int len; uint8_t* buf = BufferFromFile(input_file, &len); RSAPublicKey* key = RSAPublicKeyFromBuf(buf, len); Free(buf); return key; }