protected KeyInfo generateKeyInfoForCredential(Credential credential) { try { String keyInfoGeneratorName = org.springframework.security.saml.SAMLConstants.SAML_METADATA_KEY_INFO_GENERATOR; if (extendedMetadata != null && extendedMetadata.getKeyInfoGeneratorName() != null) { keyInfoGeneratorName = extendedMetadata.getKeyInfoGeneratorName(); } KeyInfoGenerator keyInfoGenerator = SecurityHelper.getKeyInfoGenerator(credential, null, keyInfoGeneratorName); return keyInfoGenerator.generate(credential); } catch (org.opensaml.xml.security.SecurityException e) { log.error("Can't obtain key from the keystore or generate key info for credential: " + credential, e); throw new SAMLRuntimeException("Can't obtain key from keystore or generate key info", e); } }
Credential credential = keyManager.getCredential(extendedMetadata.getSigningKey()); String signingAlgorithm = extendedMetadata.getSigningAlgorithm(); String keyGenerator = extendedMetadata.getKeyInfoGeneratorName(); String digestMethodAlgorithm = extendedMetadata.getDigestMethodAlgorithm(); element = SAMLUtil.marshallAndSignMessage(descriptor, credential, signingAlgorithm, digestMethodAlgorithm, keyGenerator);