Merge branch 'MDL-64723-38' of git://github.com/paulholden/moodle into MOODLE_38_STABLE
This commit is contained in:
@@ -553,8 +553,21 @@ class api {
|
||||
$timenow = time();
|
||||
$expectedissuer = null;
|
||||
foreach ($info['certinfo'] as $cert) {
|
||||
|
||||
// Due to a bug in certain curl/openssl versions the signature algorithm isn't always correctly parsed.
|
||||
// See https://github.com/curl/curl/issues/3706 for reference.
|
||||
if (!array_key_exists('Signature Algorithm', $cert)) {
|
||||
// The malformed field that does contain the algorithm we're looking for looks like the following:
|
||||
// <WHITESPACE>Signature Algorithm: <ALGORITHM><CRLF><ALGORITHM>.
|
||||
preg_match('/\s+Signature Algorithm: (?<algorithm>[^\s]+)/', $cert['Public Key Algorithm'], $matches);
|
||||
|
||||
$signaturealgorithm = $matches['algorithm'] ?? '';
|
||||
} else {
|
||||
$signaturealgorithm = $cert['Signature Algorithm'];
|
||||
}
|
||||
|
||||
// Check if the signature algorithm is weak (Android won't work with SHA-1).
|
||||
if ($cert['Signature Algorithm'] == 'sha1WithRSAEncryption' || $cert['Signature Algorithm'] == 'sha1WithRSA') {
|
||||
if ($signaturealgorithm == 'sha1WithRSAEncryption' || $signaturealgorithm == 'sha1WithRSA') {
|
||||
$warnings[] = ['insecurealgorithmwarning', 'tool_mobile'];
|
||||
}
|
||||
// Check certificate start date.
|
||||
|
||||
Reference in New Issue
Block a user