You are here

private static function Utilities::findCertificate in SAML SP 2.0 Single Sign On (SSO) - SAML Service Provider 8

1 call to Utilities::findCertificate()
Utilities::checkSign in src/Utilities.php

File

src/Utilities.php, line 572

Class

Utilities
This file is part of miniOrange SAML plugin.

Namespace

Drupal\miniorange_saml

Code

private static function findCertificate(array $certFingerprints, array $certificates, $ResCert) {
  $ResCert = Utilities::sanitize_certificate($ResCert);
  $candidates = array();
  foreach ($certificates as $cert) {
    $fp = strtolower(sha1(base64_decode($cert)));
    if (!in_array($fp, $certFingerprints, TRUE)) {
      $candidates[] = $fp;
      continue;
    }

    /* We have found a matching fingerprint. */
    $pem = "-----BEGIN CERTIFICATE-----\n" . chunk_split($cert, 64) . "-----END CERTIFICATE-----\n";
    return $pem;
  }
  if (array_key_exists('RelayState', $_REQUEST) && $_REQUEST['RelayState'] == 'testValidate') {
    echo '<div style="font-family:Calibri;padding:0 3%;">';
    echo '<div style="color: #a94442;background-color: #f2dede;padding: 15px;margin-bottom: 20px;text-align:center;border:1px solid #E6B3B2;font-size:18pt;"> ERROR</div>
				<div style="color: #a94442;font-size:14pt; margin-bottom:20px;"><p><strong>Error: </strong>Unable to find a certificate matching the configured fingerprint.</p>
				<p><strong>Possible Cause: </strong>Content of \'X.509 Certificate\' field in Service Provider Settings is incorrect</p>
				<p><b>Expected value:</b>' . $ResCert . '</p>';
    echo str_repeat('&nbsp;', 15);
    echo '</div>
				<div style="margin:3%;display:block;text-align:center;">
				<form action="index.php">
				<div style="margin:3%;display:block;text-align:center;"><input style="padding:1%;width:100px;background: #0091CD none repeat scroll 0% 0%;cursor: pointer;font-size:15px;border-width: 1px;border-style: solid;border-radius: 3px;white-space: nowrap;box-sizing: border-box;border-color: #0073AA;box-shadow: 0px 1px 0px rgba(120, 200, 230, 0.6) inset;color: #FFF;"type="button" value="Done" onClick="self.close();"></div>';
  }
  else {
    echo ' <div style="color: #a94442;font-size:14pt; margin-bottom:20px;"><p><b>Error: </b>We could not sign you in. Please contact your Administrator.</p></div>';
  }
  exit;
}