mirror of
https://github.com/zeek/zeek.git
synced 2025-10-12 11:38:20 +00:00
Merge remote-tracking branch 'origin/master' into topic/seth/more-file-type-ident-fixes
This commit is contained in:
commit
49926ad7bf
284 changed files with 8116 additions and 2701 deletions
|
@ -142,6 +142,19 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val)
|
|||
|
||||
pX509Cert->Assign(7, new StringVal(buf));
|
||||
|
||||
// Special case for RDP server certificates. For some reason some (all?) RDP server
|
||||
// certificates like to specify their key algorithm as md5WithRSAEncryption, which
|
||||
// is wrong on so many levels. We catch this special case here and set it to what is
|
||||
// actually should be (namely - rsaEncryption), so that OpenSSL will parse out the
|
||||
// key later. Otherwise it will just fail to parse the certificate key.
|
||||
|
||||
ASN1_OBJECT* old_algorithm = 0;
|
||||
if ( OBJ_obj2nid(ssl_cert->cert_info->key->algor->algorithm) == NID_md5WithRSAEncryption )
|
||||
{
|
||||
old_algorithm = ssl_cert->cert_info->key->algor->algorithm;
|
||||
ssl_cert->cert_info->key->algor->algorithm = OBJ_nid2obj(NID_rsaEncryption);
|
||||
}
|
||||
|
||||
if ( ! i2t_ASN1_OBJECT(buf, 255, ssl_cert->sig_alg->algorithm) )
|
||||
buf[0] = 0;
|
||||
|
||||
|
@ -174,6 +187,11 @@ RecordVal* file_analysis::X509::ParseCertificate(X509Val* cert_val)
|
|||
}
|
||||
#endif
|
||||
|
||||
// set key algorithm back. We do not have to free the value that we created because (I think) it
|
||||
// comes out of a static array from OpenSSL memory.
|
||||
if ( old_algorithm )
|
||||
ssl_cert->cert_info->key->algor->algorithm = old_algorithm;
|
||||
|
||||
unsigned int length = KeyLength(pkey);
|
||||
if ( length > 0 )
|
||||
pX509Cert->Assign(10, new Val(length, TYPE_COUNT));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue