blautenb    2003/11/13 15:06:48

  Modified:    src_unitTests/org/apache/xml/security/test/encryption
                        XMLCipherTester.java
  Log:
  Very basic test for initial support for creation of EncryptedKey
  
  Revision  Changes    Path
  1.4       +69 -0     
xml-security/src_unitTests/org/apache/xml/security/test/encryption/XMLCipherTester.java
  
  Index: XMLCipherTester.java
  ===================================================================
  RCS file: 
/home/cvs/xml-security/src_unitTests/org/apache/xml/security/test/encryption/XMLCipherTester.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLCipherTester.java      12 Nov 2003 11:25:24 -0000      1.3
  +++ XMLCipherTester.java      13 Nov 2003 23:06:48 -0000      1.4
  @@ -66,6 +66,7 @@
   import java.io.UnsupportedEncodingException;
   import java.security.Key;
   
  +import javax.crypto.KeyGenerator;
   import javax.crypto.SecretKey;
   import javax.crypto.SecretKeyFactory;
   import javax.crypto.spec.DESedeKeySpec;
  @@ -77,6 +78,8 @@
   import junit.framework.TestCase;
   
   import org.apache.xml.security.encryption.XMLCipher;
  +import org.apache.xml.security.encryption.EncryptedData;
  +import org.apache.xml.security.encryption.EncryptedKey;
   import org.apache.xml.serialize.DOMSerializer;
   import org.apache.xml.serialize.Method;
   import org.apache.xml.serialize.OutputFormat;
  @@ -143,6 +146,72 @@
   
           return (result);
       }
  +
  +     /**
  +      * Test encryption using a generated AES 128 bit key that is
  +      * encrypted using a AES 192 bit key.  Then reverse
  +      */
  +
  +     public void testAES128ElementAES192KWCipher() {
  +
  +             Document d = document(); // source
  +             Document ed = null;
  +             Document dd = null;
  +             Element e = (Element) 
d.getElementsByTagName(element()).item(index());
  +             Element ee = null;
  +
  +             String source = null;
  +             String target = null;
  +
  +        try {
  +
  +                     source = toString(d);;
  +
  +                     // Set up a Key Encryption Key
  +                     byte[] bits192 = "abcdefghijklmnopqrstuvwx".getBytes();
  +                     Key kek = new SecretKeySpec(bits192, "AES");
  +
  +                     // Generate a traffic key
  +                     KeyGenerator keygen = KeyGenerator.getInstance("AES");
  +                     keygen.init(192);
  +                     Key key = keygen.generateKey();
  +
  +            cipher = XMLCipher.getInstance(XMLCipher.AES_192_KeyWrap);
  +                     cipher.init(XMLCipher.WRAP_MODE, kek);
  +                     EncryptedKey encryptedKey = cipher.encryptKey(key);
  +                     cipher.addEncryptedKey(encryptedKey);
  +
  +            // encrypt
  +            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
  +            cipher.init(XMLCipher.ENCRYPT_MODE, key);
  +            ed = cipher.doFinal(d, e);
  +
  +            //decrypt
  +                     key = null;
  +            ee = (Element) 
ed.getElementsByTagName("xenc:EncryptedData").item(0);
  +            cipher = XMLCipher.getInstance(XMLCipher.AES_128);
  +            cipher.init(XMLCipher.DECRYPT_MODE, null);
  +                     EncryptedData encryptedData = 
cipher.loadEncryptedData(ed, ee);
  +                     EncryptedKey ek = 
encryptedData.getKeyInfo().itemEncryptedKey(0);
  +
  +                     if (ek != null) {
  +                             XMLCipher keyCipher = 
XMLCipher.getInstance(XMLCipher.AES_128);
  +                             keyCipher.init(XMLCipher.UNWRAP_MODE, kek);
  +                             keyCipher.setKEK(kek);
  +                             key = keyCipher.decryptKey(ek, 
encryptedData.getEncryptionMethod().getAlgorithm());
  +                     }
  +
  +            cipher.init(XMLCipher.DECRYPT_MODE, key);
  +            dd = cipher.doFinal(ed, ee);
  +
  +            target = toString(dd);
  +        } catch (Exception ex) {
  +            ex.printStackTrace();
  +        }
  +
  +        Assert.assertEquals(source, target);
  +    }
  +  
   
       public void testTrippleDesElementCipher() {
           Document d = document(); // source
  
  
  

Reply via email to