org.apache.abdera.security.util.servlet
Class DHEncryptedResponseFilter

java.lang.Object
  extended by org.apache.abdera.protocol.server.servlet.AbstractFilter
      extended by org.apache.abdera.protocol.server.servlet.AbderaFilter
          extended by org.apache.abdera.security.util.servlet.SecurityFilter
              extended by org.apache.abdera.security.util.servlet.AbstractEncryptedResponseFilter
                  extended by org.apache.abdera.security.util.servlet.DHEncryptedResponseFilter
All Implemented Interfaces:
javax.servlet.Filter

public class DHEncryptedResponseFilter
extends AbstractEncryptedResponseFilter

A Servlet Filter that uses Diffie-Hellman Key Exchange to encrypt Atom documents. The HTTP request must include an Accept-Encryption header in the form: Accept-Encryption: DH p={dh_p}, g={dh_g}, l={dh_l}, k={base64_pubkey} Example AbderaClient Code:

   DHContext context = new DHContext();
   Abdera abdera = new Abdera();
   CommonsClient client = new CommonsClient(abdera);
   RequestOptions options = client.getDefaultRequestOptions();
   options.setHeader("Accept-Encryption", context.getRequestString());
   
   ClientResponse response = client.get("http://localhost:8080/TestWeb/test",options);
   Document doc = response.getDocument();
   
   String dh_ret = response.getHeader("Content-Encrypted");
   if (dh_ret != null) {
     context.setPublicKey(dh_ret);
     AbderaSecurity absec = new AbderaSecurity(abdera);
     Encryption enc = absec.getEncryption();
     EncryptionOptions encoptions = context.getEncryptionOptions(enc);
     doc = enc.decrypt(doc, encoptions);
   }
   
   doc.writeTo(System.out);
 
Webapp Deployment:
 <filter>
   <filter-name>enc filter</filter-name>
   <filter-class>com.test.EncryptedResponseFilter</filter-class>
 </filter>
 <filter-mapping>
   <filter-name>enc filter</filter-name>
   <servlet-name>TestServlet</servlet-name>
 </filter-mapping>
 


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.abdera.protocol.server.servlet.AbstractFilter
AbstractFilter.BufferedRequestWrapper, AbstractFilter.BufferedServletInputStream, AbstractFilter.BufferingResponseWrapper, AbstractFilter.BufferingServletOutputStream, AbstractFilter.CompressingResponseWrapper, AbstractFilter.CompressingServletOutputStream
 
Field Summary
 
Fields inherited from class org.apache.abdera.security.util.servlet.SecurityFilter
security
 
Fields inherited from class org.apache.abdera.protocol.server.servlet.AbderaFilter
abdera
 
Constructor Summary
DHEncryptedResponseFilter()
           
 
Method Summary
protected  boolean doEncryption(javax.servlet.ServletRequest request, java.lang.Object arg)
           
protected  java.lang.Object initArg(javax.servlet.ServletRequest request)
           
protected  EncryptionOptions initEncryptionOptions(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, Encryption enc, java.lang.Object arg)
           
 
Methods inherited from class org.apache.abdera.security.util.servlet.AbstractEncryptedResponseFilter
addProvider, doFilter, init, initProvider
 
Methods inherited from class org.apache.abdera.protocol.server.servlet.AbderaFilter
getAbdera, getDocument, getDocument
 
Methods inherited from class org.apache.abdera.protocol.server.servlet.AbstractFilter
destroy, getConfig
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.servlet.Filter
destroy
 

Constructor Detail

DHEncryptedResponseFilter

public DHEncryptedResponseFilter()
Method Detail

doEncryption

protected boolean doEncryption(javax.servlet.ServletRequest request,
                               java.lang.Object arg)
Specified by:
doEncryption in class AbstractEncryptedResponseFilter

initArg

protected java.lang.Object initArg(javax.servlet.ServletRequest request)
Specified by:
initArg in class AbstractEncryptedResponseFilter

initEncryptionOptions

protected EncryptionOptions initEncryptionOptions(javax.servlet.ServletRequest request,
                                                  javax.servlet.ServletResponse response,
                                                  Encryption enc,
                                                  java.lang.Object arg)
Specified by:
initEncryptionOptions in class AbstractEncryptedResponseFilter