diff options
author | Doug Zongker <dougz@android.com> | 2014-01-13 14:16:58 -0800 |
---|---|---|
committer | Doug Zongker <dougz@android.com> | 2014-01-16 13:29:28 -0800 |
commit | 99916f0496cfe37891d40f21a9a0e387620a8a60 (patch) | |
tree | 6b457a65cfdf482fec027386fcd7d197586c67b2 /verifier_test.cpp | |
parent | 0708239c003a1537c9cbf98dea5a490955d667aa (diff) | |
download | bootable_recovery-99916f0496cfe37891d40f21a9a0e387620a8a60.zip bootable_recovery-99916f0496cfe37891d40f21a9a0e387620a8a60.tar.gz bootable_recovery-99916f0496cfe37891d40f21a9a0e387620a8a60.tar.bz2 |
do verification and extraction on memory, not files
Changes minzip and recovery's file signature verification to work on
memory regions, rather than files.
For packages which are regular files, install.cpp now mmap()s them
into memory and then passes the mapped memory to the verifier and to
the minzip library.
Support for files which are raw block maps (which will be used when we
have packages written to encrypted data partitions) is present but
largely untested so far.
Bug: 12188746
Change-Id: I12cc3e809834745a489dd9d4ceb558cbccdc3f71
Diffstat (limited to 'verifier_test.cpp')
-rw-r--r-- | verifier_test.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/verifier_test.cpp b/verifier_test.cpp index 88fcad4..10a5dda 100644 --- a/verifier_test.cpp +++ b/verifier_test.cpp @@ -17,12 +17,16 @@ #include <stdio.h> #include <stdlib.h> #include <stdarg.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> #include "common.h" #include "verifier.h" #include "ui.h" #include "mincrypt/sha.h" #include "mincrypt/sha256.h" +#include "minzip/SysUtil.h" // This is build/target/product/security/testkey.x509.pem after being // dumped out by dumpkey.jar. @@ -227,7 +231,13 @@ int main(int argc, char **argv) { ui = new FakeUI(); - int result = verify_file(argv[argn], certs, num_keys); + MemMapping map; + if (sysMapFile(argv[argn], &map) != 0) { + fprintf(stderr, "failed to mmap %s: %s\n", argv[argn], strerror(errno)); + return 4; + } + + int result = verify_file(map.addr, map.length, certs, num_keys); if (result == VERIFY_SUCCESS) { printf("VERIFIED\n"); return 0; |