From d5caf22e619fe09af6948b99dc2c3240db155fe1 Mon Sep 17 00:00:00 2001 From: Olav Morken <olav.morken@uninett.no> Date: Mon, 7 Mar 2011 13:24:01 +0000 Subject: [PATCH] saml_Message: Add getEncryptionKey function. git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2744 44740490-163a-0410-bde0-09ae8108e29a --- modules/saml/lib/Message.php | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/modules/saml/lib/Message.php b/modules/saml/lib/Message.php index eb286dac0..1a0574fd7 100644 --- a/modules/saml/lib/Message.php +++ b/modules/saml/lib/Message.php @@ -655,4 +655,36 @@ class sspmod_saml_Message { return $assertion; } + + /** + * Retrieve the encryption key for the given entity. + * + * @param SimpleSAML_Configuration $metadata The metadata of the entity. + * @return XMLSecurityKey The encryption key. + */ + public static function getEncryptionKey(SimpleSAML_Configuration $metadata) { + + $sharedKey = $metadata->getString('sharedkey', NULL); + if ($sharedKey !== NULL) { + $key = new XMLSecurityKey(XMLSecurityKey::AES128_CBC); + $key->loadKey($sharedKey); + return $key; + } + + $keys = $metadata->getPublicKeys('encryption', TRUE); + foreach ($keys as $key) { + switch ($key['type']) { + case 'X509Certificate': + $pemKey = "-----BEGIN CERTIFICATE-----\n" . + chunk_split($key['X509Certificate'], 64) . + "-----END CERTIFICATE-----\n"; + $key = new XMLSecurityKey(XMLSecurityKey::RSA_1_5, array('type'=>'public')); + $key->loadKey($pemKey); + return $key; + } + } + + throw new SimpleSAML_Error_Exception('No supported encryption key in ' . var_export($metadata->getString('entityid'), TRUE)); + } + } -- GitLab