/** {@inheritDoc} */ protected void marshallAttributes(XMLObject xmlObject, Element domElement) throws MarshallingException { EncryptedKey ek = (EncryptedKey) xmlObject; if (ek.getRecipient() != null) { domElement.setAttributeNS(null, EncryptedKey.RECIPIENT_ATTRIB_NAME, ek.getRecipient()); } super.marshallAttributes(xmlObject, domElement); }
/** {@inheritDoc} */ protected void processChildElement(XMLObject parentXMLObject, XMLObject childXMLObject) throws UnmarshallingException { EncryptedKey ek = (EncryptedKey) parentXMLObject; if (childXMLObject instanceof ReferenceList) { ek.setReferenceList((ReferenceList) childXMLObject); } else if (childXMLObject instanceof CarriedKeyName) { ek.setCarriedKeyName((CarriedKeyName) childXMLObject); } else { super.processChildElement(parentXMLObject, childXMLObject); } }
/** {@inheritDoc} */ protected void processAttribute(XMLObject xmlObject, Attr attribute) throws UnmarshallingException { EncryptedKey ek = (EncryptedKey) xmlObject; if (attribute.getLocalName().equals(EncryptedKey.RECIPIENT_ATTRIB_NAME)) { ek.setRecipient(attribute.getValue()); } else { super.processAttribute(xmlObject, attribute); } }
if (encKey.getCarriedKeyName() == null) { encKey.setCarriedKeyName(carriedKeyNameBuilder.buildObject()); encKey.getCarriedKeyName().setValue(carriedKeyNameValue); encKey.getReferenceList().getDataReferences().add(dr);
if (encKey.getReferenceList() == null) { encKey.setReferenceList(referenceListBuilder.buildObject());
encryptedKey.setID(wsSecEncryptedKey.getId()); encryptedKey.setEncryptionMethod(encryptionMethod); encryptedKey.setCipherData(cipherData); encryptedKey.setKeyInfo(keyInfo);
generator.getClass().getName()); try { encryptedKey.setKeyInfo(generator.generate(kekParams.getEncryptionCredential())); } catch (SecurityException e) { log.error("Error during EncryptedKey KeyInfo generation", e); encryptedKey.setRecipient(kekParams.getRecipient());
/** * Link a single EncryptedKey to the EncryptedData according to guidelines in SAML Errata E43. * * @param encData the EncryptedData * @param encKey the EncryptedKey */ protected void linkSinglePeerKey(EncryptedData encData, EncryptedKey encKey) { log.debug("Linking single peer EncryptedKey with RetrievalMethod and DataReference"); // Forward reference from EncryptedData to the EncryptedKey RetrievalMethod rm = retrievalMethodBuilder.buildObject(); rm.setURI("#" + encKey.getID()); rm.setType(EncryptionConstants.TYPE_ENCRYPTED_KEY); encData.getKeyInfo().getRetrievalMethods().add(rm); // Back reference from the EncryptedKey to the EncryptedData DataReference dr = dataReferenceBuilder.buildObject(); dr.setURI("#" + encData.getID()); encKey.getReferenceList().getDataReferences().add(dr); }
/** * Evaluate whether an EncryptedKey's CarriedKeyName matches one of the KeyName values * from the EncryptedData context. * * @param encryptedData the EncryptedData context * @param encryptedKey the candidate Encryptedkey to evaluate * @return true if the encrypted key's carried key name matches that of the encrytped data, * false otherwise */ protected boolean matchCarriedKeyName(EncryptedData encryptedData, EncryptedKey encryptedKey) { if (encryptedKey.getCarriedKeyName() == null || DatatypeHelper.isEmpty(encryptedKey.getCarriedKeyName().getValue()) ) { return true; } if (encryptedData.getKeyInfo() == null || encryptedData.getKeyInfo().getKeyNames().isEmpty() ) { return false; } String keyCarriedKeyName = encryptedKey.getCarriedKeyName().getValue(); List<String> dataKeyNames = KeyInfoHelper.getKeyNames(encryptedData.getKeyInfo()); return dataKeyNames.contains(keyCarriedKeyName); }
if (encryptedKey.getReferenceList() == null || encryptedKey.getReferenceList().getDataReferences().isEmpty() ) { return true; List<DataReference> drlist = encryptedKey.getReferenceList().getDataReferences(); for (DataReference dr : drlist) { if (DatatypeHelper.isEmpty(dr.getURI()) || ! dr.getURI().startsWith("#") ) {
String keyTransportAlgorithm = encryptedKey.getEncryptionMethod().getAlgorithm(); if (EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP.equals(keyTransportAlgorithm)) { List<XMLObject> digestMethods = encryptedKey.getEncryptionMethod().getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME); if (!digestMethods.isEmpty()) { DigestMethod dm = (DigestMethod) digestMethods.get(0);
Element targetElement = encryptedKey.getDOM();
generator.getClass().getName()); try { encryptedKey.setKeyInfo(generator.generate(kekParams.getEncryptionCredential())); } catch (SecurityException e) { log.error("Error during EncryptedKey KeyInfo generation", e); encryptedKey.setRecipient(kekParams.getRecipient());
/** * Evaluate whether an EncryptedKey's CarriedKeyName matches one of the KeyName values * from the EncryptedData context. * * @param encryptedData the EncryptedData context * @param encryptedKey the candidate Encryptedkey to evaluate * @return true if the encrypted key's carried key name matches that of the encrytped data, * false otherwise */ protected boolean matchCarriedKeyName(EncryptedData encryptedData, EncryptedKey encryptedKey) { if (encryptedKey.getCarriedKeyName() == null || DatatypeHelper.isEmpty(encryptedKey.getCarriedKeyName().getValue()) ) { return true; } if (encryptedData.getKeyInfo() == null || encryptedData.getKeyInfo().getKeyNames().isEmpty() ) { return false; } String keyCarriedKeyName = encryptedKey.getCarriedKeyName().getValue(); List<String> dataKeyNames = KeyInfoHelper.getKeyNames(encryptedData.getKeyInfo()); return dataKeyNames.contains(keyCarriedKeyName); }
if (encryptedKey.getReferenceList() == null || encryptedKey.getReferenceList().getDataReferences().isEmpty() ) { return true; List<DataReference> drlist = encryptedKey.getReferenceList().getDataReferences(); for (DataReference dr : drlist) { if (DatatypeHelper.isEmpty(dr.getURI()) || ! dr.getURI().startsWith("#") ) {
String keyTransportAlgorithm = encryptedKey.getEncryptionMethod().getAlgorithm(); if (EncryptionConstants.ALGO_ID_KEYTRANSPORT_RSAOAEP.equals(keyTransportAlgorithm)) { List<XMLObject> digestMethods = encryptedKey.getEncryptionMethod().getUnknownXMLObjects(DigestMethod.DEFAULT_ELEMENT_NAME); if (!digestMethods.isEmpty()) { DigestMethod dm = (DigestMethod) digestMethods.get(0);
Element targetElement = encryptedKey.getDOM();
/** {@inheritDoc} */ protected void marshallAttributes(XMLObject xmlObject, Element domElement) throws MarshallingException { EncryptedKey ek = (EncryptedKey) xmlObject; if (ek.getRecipient() != null) { domElement.setAttributeNS(null, EncryptedKey.RECIPIENT_ATTRIB_NAME, ek.getRecipient()); } super.marshallAttributes(xmlObject, domElement); }
/** {@inheritDoc} */ protected void processChildElement(XMLObject parentXMLObject, XMLObject childXMLObject) throws UnmarshallingException { EncryptedKey ek = (EncryptedKey) parentXMLObject; if (childXMLObject instanceof ReferenceList) { ek.setReferenceList((ReferenceList) childXMLObject); } else if (childXMLObject instanceof CarriedKeyName) { ek.setCarriedKeyName((CarriedKeyName) childXMLObject); } else { super.processChildElement(parentXMLObject, childXMLObject); } }