Add standalone PKCS#8 and SPKI fuzzers.
We already had coverage for our new EVP_PKEY parsers, but it's good to have some that cover them directly. The initial corpus was generated manually with der-ascii and should cover most of the insanity around EC key serialization. BUG=15 Change-Id: I7aaf56876680bfd5a89f5e365c5052eee03ba862 Reviewed-on: https://boringssl-review.googlesource.com/7728 Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
parent
af18cdd733
commit
1fc7564ba7
@ -32,10 +32,12 @@ The recommended values of `max_len` for each test are:
|
||||
|
||||
| Test | `max_len` value |
|
||||
|-----------|-----------------|
|
||||
| `privkey` | 2048 |
|
||||
| `cert` | 3072 |
|
||||
| `server` | 4096 |
|
||||
| `client` | 20000 |
|
||||
| `pkcs8` | 2048 |
|
||||
| `privkey` | 2048 |
|
||||
| `server` | 4096 |
|
||||
| `spki` | 1024 |
|
||||
|
||||
|
||||
These were determined by rounding up the length of the largest case in the corpus.
|
||||
|
@ -166,7 +166,7 @@ add_library(
|
||||
$<TARGET_OBJECTS:pem>
|
||||
$<TARGET_OBJECTS:x509>
|
||||
$<TARGET_OBJECTS:x509v3>
|
||||
$<TARGET_OBJECTS:pkcs8>
|
||||
$<TARGET_OBJECTS:pkcs8_lib>
|
||||
)
|
||||
|
||||
if(NOT MSVC AND NOT ANDROID)
|
||||
|
@ -1,7 +1,7 @@
|
||||
include_directories(../../include)
|
||||
|
||||
add_library(
|
||||
pkcs8
|
||||
pkcs8_lib
|
||||
|
||||
OBJECT
|
||||
|
||||
|
@ -18,6 +18,24 @@ add_executable(
|
||||
target_link_libraries(cert Fuzzer)
|
||||
target_link_libraries(cert crypto)
|
||||
|
||||
add_executable(
|
||||
spki
|
||||
|
||||
spki.cc
|
||||
)
|
||||
|
||||
target_link_libraries(spki Fuzzer)
|
||||
target_link_libraries(spki crypto)
|
||||
|
||||
add_executable(
|
||||
pkcs8
|
||||
|
||||
pkcs8.cc
|
||||
)
|
||||
|
||||
target_link_libraries(pkcs8 Fuzzer)
|
||||
target_link_libraries(pkcs8 crypto)
|
||||
|
||||
add_executable(
|
||||
server
|
||||
|
||||
|
38
fuzz/pkcs8.cc
Normal file
38
fuzz/pkcs8.cc
Normal file
@ -0,0 +1,38 @@
|
||||
/* Copyright (c) 2016, Google Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
||||
|
||||
#include <openssl/bytestring.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/mem.h>
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(uint8_t *buf, size_t len) {
|
||||
CBS cbs;
|
||||
CBS_init(&cbs, buf, len);
|
||||
EVP_PKEY *pkey = EVP_parse_private_key(&cbs);
|
||||
if (pkey == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t *der;
|
||||
size_t der_len;
|
||||
CBB cbb;
|
||||
if (CBB_init(&cbb, 0) &&
|
||||
EVP_marshal_private_key(&cbb, pkey) &&
|
||||
CBB_finish(&cbb, &der, &der_len)) {
|
||||
OPENSSL_free(der);
|
||||
}
|
||||
CBB_cleanup(&cbb);
|
||||
EVP_PKEY_free(pkey);
|
||||
return 0;
|
||||
}
|
BIN
fuzz/pkcs8_corpus/129ebe4bf8b167a37741c9c470fd7c4a0359ad63
Normal file
BIN
fuzz/pkcs8_corpus/129ebe4bf8b167a37741c9c470fd7c4a0359ad63
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/1bf03b5d9f129cd80513b820a55c9568eb1d350b
Normal file
BIN
fuzz/pkcs8_corpus/1bf03b5d9f129cd80513b820a55c9568eb1d350b
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/225df81ad5fc9783575b57e20207645e55a8fa3f
Normal file
BIN
fuzz/pkcs8_corpus/225df81ad5fc9783575b57e20207645e55a8fa3f
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/3033b336d833baef80981f40394c281c20677f53
Normal file
BIN
fuzz/pkcs8_corpus/3033b336d833baef80981f40394c281c20677f53
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/31aa87887801ac3f6eaab0bade714e56fcb5fab7
Normal file
BIN
fuzz/pkcs8_corpus/31aa87887801ac3f6eaab0bade714e56fcb5fab7
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/3f7e0b4378403f44de34874789bce582790a1348
Normal file
BIN
fuzz/pkcs8_corpus/3f7e0b4378403f44de34874789bce582790a1348
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/40d5a9f71cacb2389b58a8a24cfa52d6b51bf046
Normal file
BIN
fuzz/pkcs8_corpus/40d5a9f71cacb2389b58a8a24cfa52d6b51bf046
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/57e8e625f2f2313f2ec174a3209972e9bc5125ab
Normal file
BIN
fuzz/pkcs8_corpus/57e8e625f2f2313f2ec174a3209972e9bc5125ab
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/89db3807a0d30e36007b74c8ee4aac912fe3fd75
Normal file
BIN
fuzz/pkcs8_corpus/89db3807a0d30e36007b74c8ee4aac912fe3fd75
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/d38e79992de4ffaf585a6450ba2e6f21188fdd08
Normal file
BIN
fuzz/pkcs8_corpus/d38e79992de4ffaf585a6450ba2e6f21188fdd08
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/d9206dbdd26c06ee8de4e587553e72b3bb22d36b
Normal file
BIN
fuzz/pkcs8_corpus/d9206dbdd26c06ee8de4e587553e72b3bb22d36b
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/e0a0b34deb64510a36919a13258bd2c8725e41fe
Normal file
BIN
fuzz/pkcs8_corpus/e0a0b34deb64510a36919a13258bd2c8725e41fe
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/e5cfb9f3e23eda47731b1cf3414df1bd408179b7
Normal file
BIN
fuzz/pkcs8_corpus/e5cfb9f3e23eda47731b1cf3414df1bd408179b7
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/efb2c016e9375355e04a5d99e2a17415c9d4f648
Normal file
BIN
fuzz/pkcs8_corpus/efb2c016e9375355e04a5d99e2a17415c9d4f648
Normal file
Binary file not shown.
BIN
fuzz/pkcs8_corpus/fc0fad9f9fb142dee99a03a50a64d10767f9f18e
Normal file
BIN
fuzz/pkcs8_corpus/fc0fad9f9fb142dee99a03a50a64d10767f9f18e
Normal file
Binary file not shown.
38
fuzz/spki.cc
Normal file
38
fuzz/spki.cc
Normal file
@ -0,0 +1,38 @@
|
||||
/* Copyright (c) 2016, Google Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
||||
|
||||
#include <openssl/bytestring.h>
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/mem.h>
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(uint8_t *buf, size_t len) {
|
||||
CBS cbs;
|
||||
CBS_init(&cbs, buf, len);
|
||||
EVP_PKEY *pkey = EVP_parse_public_key(&cbs);
|
||||
if (pkey == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t *der;
|
||||
size_t der_len;
|
||||
CBB cbb;
|
||||
if (CBB_init(&cbb, 0) &&
|
||||
EVP_marshal_public_key(&cbb, pkey) &&
|
||||
CBB_finish(&cbb, &der, &der_len)) {
|
||||
OPENSSL_free(der);
|
||||
}
|
||||
CBB_cleanup(&cbb);
|
||||
EVP_PKEY_free(pkey);
|
||||
return 0;
|
||||
}
|
BIN
fuzz/spki_corpus/04f58baf6e4bba0bb3094e2e26d3a531a7c263ee
Normal file
BIN
fuzz/spki_corpus/04f58baf6e4bba0bb3094e2e26d3a531a7c263ee
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/079bdf85c086ad0a92bd01f1f70c645d81053f3a
Normal file
BIN
fuzz/spki_corpus/079bdf85c086ad0a92bd01f1f70c645d81053f3a
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/0f5bd094b20a4632f14903bf62db8d467d2c548f
Normal file
BIN
fuzz/spki_corpus/0f5bd094b20a4632f14903bf62db8d467d2c548f
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/183c579d75863c1e10100f76e3ffb757b44a9587
Normal file
BIN
fuzz/spki_corpus/183c579d75863c1e10100f76e3ffb757b44a9587
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/4ee178363e1d8411f30e540cb97d550d4ce62f0c
Normal file
BIN
fuzz/spki_corpus/4ee178363e1d8411f30e540cb97d550d4ce62f0c
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/70da87d1d374ade329433dde31805abc8d80d915
Normal file
BIN
fuzz/spki_corpus/70da87d1d374ade329433dde31805abc8d80d915
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/de0338b0c809548dc79d5a34e28b0010852a8f00
Normal file
BIN
fuzz/spki_corpus/de0338b0c809548dc79d5a34e28b0010852a8f00
Normal file
Binary file not shown.
BIN
fuzz/spki_corpus/fc941f77c710354d3c3c1426432a5ee935d51dd6
Normal file
BIN
fuzz/spki_corpus/fc941f77c710354d3c3c1426432a5ee935d51dd6
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user