| OLD | NEW |
| 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
| 3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
| 4 * | 4 * |
| 5 * Tests for checking kernel rollback-prevention logic. | 5 * Tests for checking kernel rollback-prevention logic. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include <stdio.h> | 8 #include <stdio.h> |
| 9 #include <stdlib.h> | 9 #include <stdlib.h> |
| 10 | 10 |
| 11 #include "cryptolib.h" | 11 #include "cryptolib.h" |
| 12 #include "file_keys.h" | 12 #include "file_keys.h" |
| 13 #include "kernel_image.h" | 13 #include "kernel_image.h" |
| 14 #include "rollback_index.h" | 14 #include "rollback_index.h" |
| 15 #include "test_common.h" | 15 #include "test_common.h" |
| 16 #include "utility.h" | 16 #include "utility.h" |
| 17 | 17 |
| 18 const char* kFirmwareKeyPublicFile = "testkeys/key_rsa1024.keyb"; | 18 const char* kFirmwareKeyPublicFile = "testkeys/key_rsa1024.keyb"; |
| 19 | 19 |
| 20 /* Tests that check for correctness of the VerifyFirmwareDriver_f() logic | 20 /* Tests that check for correctness of the VerifyFirmwareDriver_f() logic |
| 21 * and rollback prevention. */ | 21 * and rollback prevention. */ |
| 22 void VerifyKernelDriverTest(void) { | 22 void VerifyKernelDriverTest(void) { |
| 23 uint64_t len; | 23 uint64_t len; |
| 24 uint8_t* firmware_key_pub = BufferFromFile(kFirmwareKeyPublicFile, &len); | 24 uint8_t* firmware_key_pub = BufferFromFile(kFirmwareKeyPublicFile, &len); |
| 25 | 25 |
| 26 /* TODO(gauravsh): Rebase this to use LoadKernel() (maybe by making |
| 27 * it a part of load_kernel_test.c */ |
| 28 #if 0 |
| 26 /* Initialize kernel blobs, including their associated parition | 29 /* Initialize kernel blobs, including their associated parition |
| 27 * table attributed. */ | 30 * table attributed. */ |
| 28 kernel_entry valid_kernelA = { | 31 kernel_entry valid_kernelA = { |
| 29 GenerateRollbackTestKernelBlob(1, 1, 0), | 32 GenerateRollbackTestKernelBlob(1, 1, 0), |
| 30 15, /* Highest Priority. */ | 33 15, /* Highest Priority. */ |
| 31 5, /* Enough for tests. */ | 34 5, /* Enough for tests. */ |
| 32 0 /* Assume we haven't boot off it yet. */ | 35 0 /* Assume we haven't boot off it yet. */ |
| 33 }; | 36 }; |
| 34 kernel_entry corrupt_kernelA = { | 37 kernel_entry corrupt_kernelA = { |
| 35 GenerateRollbackTestKernelBlob(1, 1, 1), | 38 GenerateRollbackTestKernelBlob(1, 1, 1), |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 debug("\nGenerating updated Kernel A blob with " | 130 debug("\nGenerating updated Kernel A blob with " |
| 128 "new version.\n"); | 131 "new version.\n"); |
| 129 Free(valid_kernelA.kernel_blob); | 132 Free(valid_kernelA.kernel_blob); |
| 130 valid_kernelA.kernel_blob = GenerateRollbackTestKernelBlob(3, 3, 0); | 133 valid_kernelA.kernel_blob = GenerateRollbackTestKernelBlob(3, 3, 0); |
| 131 TEST_EQ(VerifyKernelDriver_f(firmware_key_pub, | 134 TEST_EQ(VerifyKernelDriver_f(firmware_key_pub, |
| 132 &valid_kernelA, &valid_kernelB, | 135 &valid_kernelA, &valid_kernelB, |
| 133 DEV_MODE_DISABLED), | 136 DEV_MODE_DISABLED), |
| 134 BOOT_KERNEL_A_CONTINUE, | 137 BOOT_KERNEL_A_CONTINUE, |
| 135 "(Valid Kernel A (new version)\n" | 138 "(Valid Kernel A (new version)\n" |
| 136 " Valid Kernel B (old version) runs A):"); | 139 " Valid Kernel B (old version) runs A):"); |
| 137 | |
| 138 Free(firmware_key_pub); | |
| 139 Free(valid_kernelA.kernel_blob); | 140 Free(valid_kernelA.kernel_blob); |
| 140 Free(valid_kernelB.kernel_blob); | 141 Free(valid_kernelB.kernel_blob); |
| 141 Free(corrupt_kernelA.kernel_blob); | 142 Free(corrupt_kernelA.kernel_blob); |
| 142 Free(corrupt_kernelB.kernel_blob); | 143 Free(corrupt_kernelB.kernel_blob); |
| 144 #endif |
| 145 |
| 146 Free(firmware_key_pub); |
| 143 } | 147 } |
| 144 | 148 |
| 145 int main(int argc, char* argv[]) { | 149 int main(int argc, char* argv[]) { |
| 146 int error_code = 0; | 150 int error_code = 0; |
| 147 VerifyKernelDriverTest(); | 151 VerifyKernelDriverTest(); |
| 148 if (!gTestSuccess) | 152 if (!gTestSuccess) |
| 149 error_code = 255; | 153 error_code = 255; |
| 150 return error_code; | 154 return error_code; |
| 151 } | 155 } |
| OLD | NEW |