mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Adjust x509 unit tests to work around OpenSSL 1.0 vs. 1.1 differences
This commit is contained in:
parent
8f990036f6
commit
2e0edd7416
6 changed files with 76 additions and 2 deletions
|
@ -220,6 +220,10 @@ include(CheckNameserCompat)
|
|||
include(GetArchitecture)
|
||||
include(RequireCXX11)
|
||||
|
||||
if ( (OPENSSL_VERSION VERSION_EQUAL "1.1.0") OR (OPENSSL_VERSION VERSION_GREATER "1.1.0") )
|
||||
set(BRO_HAVE_OPENSSL_1_1 true CACHE INTERNAL "" FORCE)
|
||||
endif()
|
||||
|
||||
# Tell the plugin code that we're building as part of the main tree.
|
||||
set(BRO_PLUGIN_INTERNAL_BUILD true CACHE INTERNAL "" FORCE)
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
Validation result: certificate has expired
|
||||
Validation result: ok
|
||||
Resulting chain:
|
||||
Fingerprint: 70829f77ff4b6e908324a3f4e1940fce6c489098, Subject: CN=www.tobu-estate.com,OU=Terms of use at www.verisign.com/rpa (c)05,O=TOBU RAILWAY Co.\,Ltd.,L=Sumida-ku,ST=Tokyo,C=JP
|
||||
Fingerprint: 5deb8f339e264c19f6686f5f8f32b54a4c46b476, Subject: CN=VeriSign Class 3 Secure Server CA - G3,OU=Terms of use at https://www.verisign.com/rpa (c)10,OU=VeriSign Trust Network,O=VeriSign\, Inc.,C=US
|
||||
Fingerprint: 4eb6d578499b1ccf5f581ead56be3d9b6744a5e5, Subject: CN=VeriSign Class 3 Public Primary Certification Authority - G5,OU=(c) 2006 VeriSign\, Inc. - For authorized use only,OU=VeriSign Trust Network,O=VeriSign\, Inc.,C=US
|
|
@ -1,5 +1,14 @@
|
|||
# @TEST-EXEC: bro -r $TRACES/tls/tls-expired-cert.trace %INPUT
|
||||
# @TEST-EXEC: btest-diff .stdout
|
||||
|
||||
# This is a hack: the results of OpenSSL 1.1's vs 1.0's
|
||||
# X509_verify_cert() -> X509_STORE_CTX_get1_chain() calls
|
||||
# differ. Word seems to be that OpenSSL 1.1's cert-chain-building
|
||||
# code is significantly different/rewritten so may be the reason...
|
||||
|
||||
# @TEST-EXEC: cp .stdout stdout-openssl-1.0
|
||||
# @TEST-EXEC: cp .stdout stdout-openssl-1.1
|
||||
|
||||
# @TEST-EXEC: grep -q "BRO_HAVE_OPENSSL_1_1" $BUILD/CMakeCache.txt && btest-diff stdout-openssl-1.1 || btest-diff stdout-openssl-1.0
|
||||
|
||||
redef SSL::root_certs += {
|
||||
["OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US"] = "\x30\x82\x02\x3C\x30\x82\x01\xA5\x02\x10\x70\xBA\xE4\x1D\x10\xD9\x29\x34\xB6\x38\xCA\x7B\x03\xCC\xBA\xBF\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x02\x05\x00\x30\x5F\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x17\x30\x15\x06\x03\x55\x04\x0A\x13\x0E\x56\x65\x72\x69\x53\x69\x67\x6E\x2C\x20\x49\x6E\x63\x2E\x31\x37\x30\x35\x06\x03\x55\x04\x0B\x13\x2E\x43\x6C\x61\x73\x73\x20\x33\x20\x50\x75\x62\x6C\x69\x63\x20\x50\x72\x69\x6D\x61\x72\x79\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6F\x6E\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x30\x1E\x17\x0D\x39\x36\x30\x31\x32\x39\x30\x30\x30\x30\x30\x30\x5A\x17\x0D\x32\x38\x30\x38\x30\x31\x32\x33\x35\x39\x35\x39\x5A\x30\x5F\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x55\x53\x31\x17\x30\x15\x06\x03\x55\x04\x0A\x13\x0E\x56\x65\x72\x69\x53\x69\x67\x6E\x2C\x20\x49\x6E\x63\x2E\x31\x37\x30\x35\x06\x03\x55\x04\x0B\x13\x2E\x43\x6C\x61\x73\x73\x20\x33\x20\x50\x75\x62\x6C\x69\x63\x20\x50\x72\x69\x6D\x61\x72\x79\x20\x43\x65\x72\x74\x69\x66\x69\x63\x61\x74\x69\x6F\x6E\x20\x41\x75\x74\x68\x6F\x72\x69\x74\x79\x30\x81\x9F\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x01\x05\x00\x03\x81\x8D\x00\x30\x81\x89\x02\x81\x81\x00\xC9\x5C\x59\x9E\xF2\x1B\x8A\x01\x14\xB4\x10\xDF\x04\x40\xDB\xE3\x57\xAF\x6A\x45\x40\x8F\x84\x0C\x0B\xD1\x33\xD9\xD9\x11\xCF\xEE\x02\x58\x1F\x25\xF7\x2A\xA8\x44\x05\xAA\xEC\x03\x1F\x78\x7F\x9E\x93\xB9\x9A\x00\xAA\x23\x7D\xD6\xAC\x85\xA2\x63\x45\xC7\x72\x27\xCC\xF4\x4C\xC6\x75\x71\xD2\x39\xEF\x4F\x42\xF0\x75\xDF\x0A\x90\xC6\x8E\x20\x6F\x98\x0F\xF8\xAC\x23\x5F\x70\x29\x36\xA4\xC9\x86\xE7\xB1\x9A\x20\xCB\x53\xA5\x85\xE7\x3D\xBE\x7D\x9A\xFE\x24\x45\x33\xDC\x76\x15\xED\x0F\xA2\x71\x64\x4C\x65\x2E\x81\x68\x45\xA7\x02\x03\x01\x00\x01\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x02\x05\x00\x03\x81\x81\x00\xBB\x4C\x12\x2B\xCF\x2C\x26\x00\x4F\x14\x13\xDD\xA6\xFB\xFC\x0A\x11\x84\x8C\xF3\x28\x1C\x67\x92\x2F\x7C\xB6\xC5\xFA\xDF\xF0\xE8\x95\xBC\x1D\x8F\x6C\x2C\xA8\x51\xCC\x73\xD8\xA4\xC0\x53\xF0\x4E\xD6\x26\xC0\x76\x01\x57\x81\x92\x5E\x21\xF1\xD1\xB1\xFF\xE7\xD0\x21\x58\xCD\x69\x17\xE3\x44\x1C\x9C\x19\x44\x39\x89\x5C\xDC\x9C\x00\x0F\x56\x8D\x02\x99\xED\xA2\x90\x45\x4C\xE4\xBB\x10\xA4\x3D\xF0\x32\x03\x0E\xF1\xCE\xF8\xE8\xC9\x51\x8C\xE6\x62\x9F\xE6\x9F\xC0\x7D\xB7\x72\x9C\xC9\x36\x3A\x6B\x9F\x4E\xA8\xFF\x64\x0D\x64"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# @TEST-EXEC: bro -r $TRACES/rdp/rdp-x509.pcap %INPUT
|
||||
# @TEST-EXEC: btest-diff rdp.log
|
||||
# @TEST-EXEC: btest-diff x509.log
|
||||
# @TEST-EXEC: TEST_DIFF_CANONIFIER="$SCRIPTS/diff-remove-timestamps | $SCRIPTS/diff-remove-x509-key-info" btest-diff x509.log
|
||||
|
||||
@load base/protocols/rdp
|
||||
|
|
55
testing/scripts/diff-remove-x509-key-info
Executable file
55
testing/scripts/diff-remove-x509-key-info
Executable file
|
@ -0,0 +1,55 @@
|
|||
#! /usr/bin/env bash
|
||||
#
|
||||
# A diff canonifier that removes all X.509 public key information
|
||||
# which, in the specific case of the RDP protocol's misuse of
|
||||
# md5WithRSAEncryption, seems that OpenSSL 1.0 is able to manually
|
||||
# workaround by setting to rsaEncryption, but OpenSSL 1.1 still fails
|
||||
# to extract the key, so the corresponding fields are always removed here.
|
||||
|
||||
awk '
|
||||
BEGIN { FS="\t"; OFS="\t"; key_type_col = -1; key_length_col = -1; exponent_col = -1; curve_col = -1 }
|
||||
|
||||
/^#/ {
|
||||
if ( $1 == "#fields" )
|
||||
{
|
||||
for ( i = 2; i <= NF; ++i )
|
||||
{
|
||||
if ( $i == "certificate.key_type" )
|
||||
key_type_col = i-1;
|
||||
if ( $i == "certificate.key_length" )
|
||||
key_length_col = i-1;
|
||||
if ( $i == "certificate.exponent" )
|
||||
exponent_col = i-1;
|
||||
if ( $i == "certificate.curve" )
|
||||
curve_col = i-1;
|
||||
}
|
||||
}
|
||||
|
||||
print;
|
||||
next;
|
||||
}
|
||||
|
||||
key_type_col > 0 {
|
||||
# Mark it regardless of whether it is set.
|
||||
$key_type_col = "x";
|
||||
}
|
||||
|
||||
key_length_col > 0 {
|
||||
# Mark it regardless of whether it is set.
|
||||
$key_length_col = "x";
|
||||
}
|
||||
|
||||
exponent_col > 0 {
|
||||
# Mark it regardless of whether it is set.
|
||||
$exponent_col = "x";
|
||||
}
|
||||
|
||||
curve_col > 0 {
|
||||
# Mark it regardless of whether it is set.
|
||||
$curve_col = "x";
|
||||
}
|
||||
|
||||
{
|
||||
print;
|
||||
}
|
||||
'
|
Loading…
Add table
Add a link
Reference in a new issue