summaryrefslogtreecommitdiff
path: root/futility/updater_compat.h
diff options
context:
space:
mode:
Diffstat (limited to 'futility/updater_compat.h')
-rw-r--r--futility/updater_compat.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/futility/updater_compat.h b/futility/updater_compat.h
new file mode 100644
index 00000000..20bfb78e
--- /dev/null
+++ b/futility/updater_compat.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2018 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.
+ *
+ * All hacks to enable building firmware updater on old branches.
+ */
+#ifndef VBOOT_REFERENCE_FUTILITY_UPDATER_COMPAT_H_
+#define VBOOT_REFERENCE_FUTILITY_UPDATER_COMPAT_H_
+
+#define _STUB_IMPLEMENTATION_
+#include <stdio.h>
+#include <unistd.h>
+#include "2sysincludes.h"
+#include "2rsa.h"
+#include "2sha.h"
+#include "vb2_struct.h"
+#include "host_key.h"
+#include "vboot_api.h"
+
+struct vb2_packed_key;
+static inline int packed_key_looks_ok(
+ const struct vb2_packed_key *key, uint32_t size)
+{
+ VbPublicKey *pub = (VbPublicKey *)key;
+ return PublicKeyLooksOkay(pub, size);
+}
+
+static inline const char *packed_key_sha1_string(
+ const struct vb2_packed_key *key)
+{
+ static char dest[VB2_SHA1_DIGEST_SIZE * 2 + 1];
+
+ uint8_t *input = ((uint8_t *)key) + key->key_offset;
+ uint32_t inlen = key->key_size;
+
+ uint8_t *digest = DigestBuf(input, inlen, SHA1_DIGEST_ALGORITHM);
+ char *dnext = dest;
+ int i;
+
+ for (i = 0; i < SHA1_DIGEST_SIZE; i++)
+ dnext += sprintf(dnext, "%02x", digest[i]);
+ VbExFree(digest);
+ return dest;
+}
+
+static inline int vb2_read_file(
+ const char *filename, uint8_t **data_ptr, uint32_t *size_ptr)
+{
+ FILE *f;
+ uint8_t *buf;
+ long size;
+
+ *data_ptr = NULL;
+ *size_ptr = 0;
+
+ f = fopen(filename, "rb");
+ if (!f) {
+ return 1;
+ }
+
+ fseek(f, 0, SEEK_END);
+ size = ftell(f);
+ rewind(f);
+
+ if (size < 0 || size > UINT32_MAX) {
+ fclose(f);
+ return 1;
+ }
+
+ buf = malloc(size);
+ if (!buf) {
+ fclose(f);
+ return 1;
+ }
+
+ if(1 != fread(buf, size, 1, f)) {
+ fclose(f);
+ free(buf);
+ return 1;
+ }
+
+ fclose(f);
+
+ *data_ptr = buf;
+ *size_ptr = size;
+ return 0;
+}
+
+static inline int vb2_write_file(
+ const char *filename, const void *buf, uint32_t size)
+{
+ FILE *f = fopen(filename, "wb");
+
+ if (!f) {
+ return 1;
+ }
+
+ if (1 != fwrite(buf, size, 1, f)) {
+ fclose(f);
+ unlink(filename); /* Delete any partial file */
+ return 1;
+ }
+
+ fclose(f);
+ return 0;
+}
+
+#define vb2_unpack_key2(key, packed_key) \
+ vb2_unpack_key(key, (const uint8_t *)packed_key, \
+ packed_key->key_offset + packed_key->key_size)
+
+#endif /* VBOOT_REFERENCE_FUTILITY_UPDATER_COMPAT_H_ */