Index: src/platform/vboot_reference/tests/rsa_padding_test.c |
diff --git a/src/platform/vboot_reference/tests/rsa_padding_test.c b/src/platform/vboot_reference/tests/rsa_padding_test.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7706ba8a185773927133cb0a6e745de22cbdd45a |
--- /dev/null |
+++ b/src/platform/vboot_reference/tests/rsa_padding_test.c |
@@ -0,0 +1,45 @@ |
+/* 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. |
+ */ |
+ |
+#include "rsa_padding_test.h" |
+ |
+#include <stdio.h> |
+ |
+#include "file_keys.h" |
+#include "rsa_utility.h" |
+ |
+int main(int argc, char* argv[]) { |
+ int i; |
+ int error = 0; |
+ RSAPublicKey* key; |
+ if (argc != 2) { |
+ fprintf(stderr, "Usage: %s <test public key>\n", argv[0]); |
+ return 1; |
+ } |
+ key = RSAPublicKeyFromFile(argv[1]); |
+ if (!key) { |
+ fprintf(stderr, "Couldn't read RSA public key for the test.\n"); |
+ return 1; |
+ } |
+ |
+ /* The first test signature is valid. */ |
+ if (!RSA_verify(key, signatures[0], RSA1024NUMBYTES, 0, |
+ test_message_sha1_hash)) { |
+ fprintf(stderr, "RSA Padding Test vector 0 FAILED!\n"); |
+ error = 255; /* Test failure. */ |
+ } |
+ /* All other signatures should fail verification. */ |
+ for (i = 1; i < sizeof(signatures) / sizeof(signatures[0]); i++) { |
+ if (RSA_verify(key, signatures[i], RSA1024NUMBYTES, 0, |
+ test_message_sha1_hash)) { |
+ fprintf(stderr, "RSA Padding Test vector %d FAILED!\n", i); |
+ error = 255; /* Test failure. */ |
+ } |
+ } |
+ if (!error) |
+ fprintf(stderr, "RSA Padding Test PASSED for all test vectors."); |
+ |
+ return error; |
+} |