@Override public KeySelectorResult select(KeyInfo keyInfo, Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { for (Object o : keyInfo.getContent()) { if (o instanceof X509Data) { for (Object o2 : ((X509Data) o).getContent()) { if (o2 instanceof X509Certificate) { final X509Certificate cert = (X509Certificate) o2; return new KeySelectorResult() { public Key getKey() { return cert.getPublicKey(); } }; } } } } return null; }
@Override public KeySelectorResult select(final KeyInfo keyInfo, final KeySelector.Purpose purpose, final AlgorithmMethod method, final XMLCryptoContext context) throws KeySelectorException { for (final Object object : keyInfo.getContent()) { final XMLStructure info = (XMLStructure) object; if (info instanceof X509Data) { final X509Data x509Data = (X509Data) info; for (final Object certificado : x509Data.getContent()) { if (certificado instanceof X509Certificate) { final X509Certificate x509Certificate = (X509Certificate) certificado; if (this.algEquals(method.getAlgorithm(), x509Certificate.getPublicKey().getAlgorithm())) { return new KeySelectorResult() { @Override public Key getKey() { return x509Certificate.getPublicKey(); } }; } } } } } throw new KeySelectorException("N\u00e3o foi localizada a chave do certificado."); }
private List<AlgorithmMethod> getTransformsXsltXpath() { try { AlgorithmMethod transformXslt = XmlSignatureHelper.getXslTransform("/org/apache/camel/component/xmlsecurity/xslt_test.xsl"); Map<String, String> namespaceMap = new HashMap<String, String>(1); namespaceMap.put("n0", "https://org.apache/camel/xmlsecurity/test"); AlgorithmMethod transformXpath = XmlSignatureHelper.getXPathTransform("//n0:XMLSecurity/n0:Content", namespaceMap); // I removed base 64 transform because the JDK implementation does // not correctly support this transformation // AlgorithmMethod transformBase64 = helper.getBase64Transform(); List<AlgorithmMethod> result = new ArrayList<AlgorithmMethod>(3); result.add(XmlSignatureHelper.getCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE)); result.add(transformXslt); result.add(transformXpath); // result.add(transformBase64); return result; } catch (Exception e) { throw new IllegalStateException(e); } }
@Override public KeySelectorResult select(final KeyInfo keyInfo, final KeySelector.Purpose purpose, final AlgorithmMethod method, final XMLCryptoContext context) throws KeySelectorException { for (final Object object : keyInfo.getContent()) { final XMLStructure info = (XMLStructure) object; if (info instanceof X509Data) { final X509Data x509Data = (X509Data) info; for (final Object certificado : x509Data.getContent()) { if (certificado instanceof X509Certificate) { final X509Certificate x509Certificate = (X509Certificate) certificado; if (this.algEquals(method.getAlgorithm(), x509Certificate.getPublicKey().getAlgorithm())) { return new KeySelectorResult() { @Override public Key getKey() { return x509Certificate.getPublicKey(); } }; } } } } } throw new KeySelectorException("Nao foi localizada a chave do certificado."); }
@Override public KeySelectorResult select ( final KeyInfo keyInfo, final KeySelector.Purpose purpose, final AlgorithmMethod method, final XMLCryptoContext context ) throws KeySelectorException { if ( keyInfo == null ) { throw new KeySelectorException ( "Null KeyInfo object!" ); } final SignatureMethod sm = (SignatureMethod)method; final List<?> list = keyInfo.getContent (); for ( int i = 0; i < list.size (); i++ ) { final XMLStructure xmlStructure = (XMLStructure)list.get ( i ); if ( xmlStructure instanceof KeyValue ) { try { final PublicKey pk = ( (KeyValue)xmlStructure ).getPublicKey (); // make sure algorithm is compatible with method if ( algEquals ( sm.getAlgorithm (), pk.getAlgorithm () ) ) { return new SimpleKeySelectorResult ( pk ); } } catch ( final KeyException ke ) { throw new KeySelectorException ( ke ); } } } throw new KeySelectorException ( "No KeyValue element found!" ); }
@Override public KeySelectorResult select ( final KeyInfo keyInfo, final KeySelector.Purpose purpose, final AlgorithmMethod method, final XMLCryptoContext context ) throws KeySelectorException { if ( keyInfo == null ) { throw new KeySelectorException ( "Null KeyInfo object!" ); } final SignatureMethod sm = (SignatureMethod)method; final List<?> list = keyInfo.getContent (); for ( final Object l : list ) { final XMLStructure xmlStructure = (XMLStructure)l; if ( xmlStructure instanceof X509Data ) { for ( final Object o : ( (X509Data)xmlStructure ).getContent () ) { KeySelectorResult result = null; if ( o instanceof X509Certificate ) { result = findPublicKey ( (X509Certificate)o, sm ); } if ( result != null ) { return result; } } } } throw new KeySelectorException ( "No KeyValue element found!" ); }
@Override public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod algorithmMethod, XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) { throw new KeySelectorException("Null KeyInfo object!"); } @SuppressWarnings("unchecked") List<XMLStructure> list = keyInfo.getContent(); for (XMLStructure xmlStructure : list) { if (xmlStructure instanceof X509Data) { X509Data x509Data = (X509Data) xmlStructure; @SuppressWarnings("rawtypes") List content = x509Data.getContent(); for (int i = 0; i < content.size(); i++) { Object x509Content = content.get(i); if (x509Content instanceof X509Certificate) { X509Certificate certificate = (X509Certificate) x509Content; try { return getPublicKeyFromKeystore(certificate, (SignatureMethod) algorithmMethod); } catch (KeyStoreException e) { throw new KeySelectorException(e); } } } } } throw new KeySelectorException("No X509Data element found."); }
@Override public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod algorithmMethod, XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) { throw new KeySelectorException("Null KeyInfo object!"); } @SuppressWarnings("unchecked") List<XMLStructure> list = keyInfo.getContent(); for (XMLStructure xmlStructure : list) { if (xmlStructure instanceof KeyValue) { PublicKey publicKey = null; try { publicKey = ((KeyValue) xmlStructure).getPublicKey(); } catch (KeyException ke) { throw new KeySelectorException(ke); } if (algorithmCompatibleWithMethod( algorithmMethod.getAlgorithm(), publicKey.getAlgorithm())) { return new SimpleKeySelectorResult(publicKey); } } } throw new KeySelectorException("No RSA/DSA KeyValue element found"); }
/** * Returns a configuration for an XSL transformation. * * @param is * input stream of the XSL * @return XSL transform * @throws IllegalArgumentException * if <tt>is</tt> is <code>null</code> * @throws Exception * if an error during the reading of the XSL file occurs */ public static AlgorithmMethod getXslTranform(InputStream is) throws SAXException, IOException, ParserConfigurationException { if (is == null) { throw new IllegalArgumentException("is must not be null"); } Document doc = parseInput(is); DOMStructure stylesheet = new DOMStructure(doc.getDocumentElement()); XSLTTransformParameterSpec spec = new XSLTTransformParameterSpec(stylesheet); XmlSignatureTransform transformXslt = new XmlSignatureTransform(); transformXslt.setAlgorithm(Transform.XSLT); transformXslt.setParameterSpec(spec); return transformXslt; }
/** * Sets the reference name for a AlgorithmMethod that can be found in the registry. */ public void setCanonicalizationMethod(String canonicalizationMethodName) { if (getCamelContext() != null && canonicalizationMethodName != null) { AlgorithmMethod method = getCamelContext().getRegistry().lookupByNameAndType(canonicalizationMethodName, AlgorithmMethod.class); if (method != null) { setCanonicalizationMethod(method); } } if (canonicalizationMethodName != null) { this.canonicalizationMethodName = canonicalizationMethodName; } }
/** * Sets the reference name for a List<AlgorithmMethod> that can be found in the registry. */ public void setTransformMethods(String transformMethodsName) { if (getCamelContext() != null && transformMethodsName != null) { @SuppressWarnings("unchecked") List<AlgorithmMethod> list = getCamelContext().getRegistry().lookupByNameAndType(transformMethodsName, List.class); if (list != null) { setTransformMethods(list); } } if (transformMethodsName != null) { this.transformMethodsName = transformMethodsName; } }
private boolean containsEnvelopedTransform(List<AlgorithmMethod> configuredTrafos) { for (AlgorithmMethod m : configuredTrafos) { if (Transform.ENVELOPED.equals(m.getAlgorithm())) { return true; } } return false; }
private List<AlgorithmMethod> getTransformsXPath2() { List<XPathAndFilter> list = new ArrayList<XPathAndFilter>(3); XPathAndFilter xpath1 = new XPathAndFilter("//n0:ToBeSigned", XPathType.Filter.INTERSECT.toString()); list.add(xpath1); XPathAndFilter xpath2 = new XPathAndFilter("//n0:NotToBeSigned", XPathType.Filter.SUBTRACT.toString()); list.add(xpath2); XPathAndFilter xpath3 = new XPathAndFilter("//n0:ReallyToBeSigned", XPathType.Filter.UNION.toString()); list.add(xpath3); List<AlgorithmMethod> result = new ArrayList<AlgorithmMethod>(2); result.add(XmlSignatureHelper.getCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE)); result.add(XmlSignatureHelper.getXPath2Transform(list, getNamespaceMap())); return result; }
public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) { throw new KeySelectorException("Null KeyInfo object!"); } SignatureMethod sm = (SignatureMethod) method; @SuppressWarnings("rawtypes") List list = keyInfo.getContent(); for (int i = 0; i < list.size(); i++) { XMLStructure xmlStructure = (XMLStructure) list.get(i); if (xmlStructure instanceof KeyValue) { PublicKey pk = null; try { pk = ((KeyValue) xmlStructure).getPublicKey(); } catch (KeyException ke) { throw new KeySelectorException(ke); } // make sure algorithm is compatible with method if (algEquals(sm.getAlgorithm(), pk.getAlgorithm())) { return new SimpleKeySelectorResult(pk); } } } throw new KeySelectorException("No KeyValue element found!"); }
@Override public KeySelectorResult select(final KeyInfo keyInfo, final KeySelector.Purpose purpose, final AlgorithmMethod method, final XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) { throw new KeySelectorException("null KeyInfo"); } List<?> list = keyInfo.getContent(); for (int i = 0; i < list.size(); i++) { XMLStructure xmlStructure = (XMLStructure) list.get(i); PublicKey pk = null; if (xmlStructure instanceof KeyValue) { try { pk = ((KeyValue)xmlStructure).getPublicKey(); } catch (KeyException ke) { throw new KeySelectorException(ke); } } else if (xmlStructure instanceof X509Data) { List<sun.security.x509.X509CertImpl> certs = ((X509Data)xmlStructure).getContent(); pk = certs.get(0).getPublicKey(); } else { log.error(xmlStructure + " not supported"); continue; } return new SimpleKeySelectorResult(pk); } throw new KeySelectorException("No supported KeyValue element found"); }
public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { @SuppressWarnings("rawtypes") Iterator ki = keyInfo.getContent().iterator(); while (ki.hasNext()) { XMLStructure info = (XMLStructure) ki.next(); if (!(info instanceof X509Data)) continue; X509Data x509Data = (X509Data) info; @SuppressWarnings("rawtypes") Iterator xi = x509Data.getContent().iterator(); while (xi.hasNext()) { Object o = xi.next(); if (!(o instanceof X509Certificate)) continue; final PublicKey key = ((X509Certificate)o).getPublicKey(); // Make sure the algorithm is compatible // with the method. if (algEquals(method.getAlgorithm(), key.getAlgorithm())) { return new KeySelectorResult() { public Key getKey() { return key; } }; } } } throw new KeySelectorException("No key found!"); }
public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) throw new KeySelectorException("Null KeyInfo"); List<?> list = keyInfo.getContent(); PublicKey pk = null; for (int i = 0; i < list.size(); i++) { XMLStructure xmlStructure = (XMLStructure) list.get(i); if (xmlStructure instanceof KeyValue) { try { pk = ((KeyValue)xmlStructure).getPublicKey(); } catch(KeyException ke) { throw new KeySelectorException(ke.getMessage()); } break; } else if (xmlStructure instanceof X509Data) { X509Data x509data = (X509Data)xmlStructure; List<?> x509datalist = x509data.getContent(); for (int j = 0; j < x509datalist.size(); j++) { if (x509datalist.get(j) instanceof X509Certificate) { X509Certificate cert = (X509Certificate)x509datalist.get(j); pk = cert.getPublicKey(); break; } } } } if (pk != null) { final PublicKey retpk = pk; logger.debug("PublicKey from XML=" + pk); return new KeySelectorResult() {public Key getKey(){return retpk;}}; } throw new KeySelectorException("Missing KeyValue"); }
public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { Iterator ki = keyInfo.getContent().iterator(); while (ki.hasNext()) { XMLStructure info = (XMLStructure) ki.next(); if (!(info instanceof X509Data)) continue; X509Data x509Data = (X509Data) info; Iterator xi = x509Data.getContent().iterator(); while (xi.hasNext()) { Object o = xi.next(); if (!(o instanceof X509Certificate)) continue; final PublicKey key = ((X509Certificate) o).getPublicKey(); // Make sure the algorithm is compatible // with the method. if (algEquals(method.getAlgorithm(), key.getAlgorithm())) { return new KeySelectorResult() { public Key getKey() { return key; } }; } } } throw new KeySelectorException("No key found!"); }
@Override public KeySelectorResult select(KeyInfo keyInfo, Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { @SuppressWarnings("unchecked") Iterator<XMLStructure> ki = keyInfo.getContent().iterator(); while (ki.hasNext()) { XMLStructure info = ki.next(); if (info instanceof X509Data) { X509Data x509Data = (X509Data) info; @SuppressWarnings("unchecked") Iterator<Object> xi = x509Data.getContent().iterator(); while (xi.hasNext()) { Object o = xi.next(); if (!(o instanceof X509Certificate)) continue; final PublicKey key = ((X509Certificate) o).getPublicKey(); if (algEquals(method.getAlgorithm(), key.getAlgorithm())) { return new KeySelectorResult() { @Override public Key getKey() { return key; } }; } } } } throw new KeySelectorException("No KeyValue element found!"); }
public KeySelectorResult select( KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context ) throws KeySelectorException { Iterator ki = keyInfo.getContent().iterator(); while ( ki.hasNext() ) { XMLStructure info = (XMLStructure) ki.next(); if ( !( info instanceof X509Data ) ) { continue; } X509Data x509Data = (X509Data) info; Iterator xi = x509Data.getContent().iterator(); while ( xi.hasNext() ) { Object o = xi.next(); if ( !( o instanceof X509Certificate ) ) { continue; } final PublicKey key = ( (X509Certificate) o ).getPublicKey(); // Make sure the algorithm is compatible // with the method. if ( algEquals( method.getAlgorithm(), key.getAlgorithm() ) ) { return new KeySelectorResult() { public Key getKey() { return key; } }; } } } throw new KeySelectorException( "No key found!" ); }
@Override @Nonnull public KeySelectorResult select (@Nonnull final KeyInfo aKeyInfo, final KeySelector.Purpose aPurpose, @Nonnull final AlgorithmMethod aMethod, final XMLCryptoContext aContext) throws KeySelectorException { for (final Object aKeyInfoElement : aKeyInfo.getContent ()) { final XMLStructure aXMLStructure = (XMLStructure) aKeyInfoElement; if (aXMLStructure instanceof X509Data) { // We found a certificate final X509Data x509Data = (X509Data) aXMLStructure; for (final Object aX509Element : x509Data.getContent ()) { if (aX509Element instanceof X509Certificate) { final X509Certificate aCert = (X509Certificate) aX509Element; final PublicKey aPublicKey = aCert.getPublicKey (); // Make sure the algorithm is compatible // with the method. if (algorithmEquals (aMethod.getAlgorithm (), aPublicKey.getAlgorithm ())) return new ConstantKeySelectorResult (aPublicKey); } } } } throw new KeySelectorException ("No key found!"); }
public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { Iterator<?> ki = keyInfo.getContent().iterator(); while (ki.hasNext()) { XMLStructure info = (XMLStructure) ki.next(); if (!(info instanceof X509Data)) continue; X509Data x509Data = (X509Data) info; Iterator<?> xi = x509Data.getContent().iterator(); while (xi.hasNext()) { Object o = xi.next(); if (!(o instanceof X509Certificate)) continue; final PublicKey key = ((X509Certificate)o).getPublicKey(); // Make sure the algorithm is compatible // with the method. if (algEquals(method.getAlgorithm(), key.getAlgorithm())) { return new KeySelectorResult() { public Key getKey() { return key; } }; } } } throw new KeySelectorException("No key found!"); }
@Override public KeySelectorResult select(KeyInfo keyInfo,KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { Iterator ki = keyInfo.getContent().iterator(); while (ki.hasNext()) { XMLStructure info = (XMLStructure) ki.next(); if (!(info instanceof X509Data)) { continue; } X509Data x509Data = (X509Data) info; Iterator xi = x509Data.getContent().iterator(); while (xi.hasNext()) { Object o = xi.next(); if (!(o instanceof X509Certificate)) { continue; } final PublicKey key = ((X509Certificate)o).getPublicKey(); // Make sure the algorithm is compatible with the method. if (algEquals(method.getAlgorithm(), key.getAlgorithm())) { return () -> key; } } } throw new KeySelectorException("No key found!"); }
/** * KeySelector which retrieves the public key out of the * KeyValue element and returns it. * NOTE: If the key algorithm doesn't match signature algorithm, * then the public key will be ignored. */ @Override public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) { throw new KeySelectorException("Null KeyInfo object!"); } SignatureMethod sm = (SignatureMethod) method; List list = keyInfo.getContent(); for (int i = 0; i < list.size(); i++) { XMLStructure xmlStructure = (XMLStructure) list.get(i); if (xmlStructure instanceof KeyValue) { PublicKey pk = null; try { pk = ((KeyValue)xmlStructure).getPublicKey(); } catch (KeyException ke) { throw new KeySelectorException(ke); } // make sure algorithm is compatible with method if (algEquals(sm.getAlgorithm(), pk.getAlgorithm())) { return new SimpleKeySelectorResult(pk); } } } throw new KeySelectorException("No KeyValue element found!"); }
public static AlgorithmMethod getEnvelopedTransform() { return new XmlSignatureTransform(Transform.ENVELOPED); }
public static List<AlgorithmMethod> getTransforms(List<AlgorithmMethod> list) { return list; }
public AlgorithmMethod getCanonicalizationMethod() { return canonicalizationMethod; }
public List<AlgorithmMethod> getTransformMethods() { return transformMethods; }
public AlgorithmMethod getCanonicalizationMethod() { return getConfiguration().getCanonicalizationMethod(); }
public void setCanonicalizationMethod(AlgorithmMethod canonicalizationMethod) { getConfiguration().setCanonicalizationMethod(canonicalizationMethod); }
public List<AlgorithmMethod> getTransformMethods() { return getConfiguration().getTransformMethods(); }
public void setTransformMethods(List<AlgorithmMethod> transformMethods) { getConfiguration().setTransformMethods(transformMethods); }
private AlgorithmMethod getCanonicalizationMethod() { List<String> inclusivePrefixes = new ArrayList<String>(1); inclusivePrefixes.add("ds"); return XmlSignatureHelper.getCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, inclusivePrefixes); }
public KeySelectorResult select(KeyInfo keyInfo, KeySelector.Purpose purpose, AlgorithmMethod method, XMLCryptoContext context) throws KeySelectorException { if (keyInfo == null) throw new KeySelectorException("KeyInfo is null!"); for (Object xmlStructure : keyInfo.getContent()) { if (xmlStructure instanceof X509Data) { final Certificate certificate = (Certificate)((X509Data)xmlStructure).getContent().get(0); return new KeySelectorResult() { @Override public Key getKey() { return certificate.getPublicKey(); } } ; } if (xmlStructure instanceof KeyValue) { try { final PublicKey publicKey = ((KeyValue)xmlStructure).getPublicKey(); return new KeySelectorResult() { @Override public Key getKey() { return publicKey; } } ; } catch (KeyException e) { } } } throw new KeySelectorException("No Public Key found!"); }