blautenb    2003/10/03 02:52:02

  Modified:    c/src/tools/cipher MerlinFiveInteropResolver.cpp
               c/src/tools/xtest xtest.cpp
  Log:
  Updates to test creating an EncryptedKey (AES KeyWrap)
  
  Revision  Changes    Path
  1.2       +16 -1     
xml-security/c/src/tools/cipher/MerlinFiveInteropResolver.cpp
  
  Index: MerlinFiveInteropResolver.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-security/c/src/tools/cipher/MerlinFiveInteropResolver.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MerlinFiveInteropResolver.cpp     15 Sep 2003 11:55:55 -0000      1.1
  +++ MerlinFiveInteropResolver.cpp     3 Oct 2003 09:52:02 -0000       1.2
  @@ -97,7 +97,15 @@
        chNull
   };
   
  +static XMLCh s_jobName[] = {
  +     chLatin_j,
  +     chLatin_o,
  +     chLatin_b,
  +     chNull
  +};
  +
   static char s_bobKey[] = "abcdefghijklmnopqrstuvwx";
  +static char s_jobKey[] = "abcdefghijklmnop";
   
   
   // 
--------------------------------------------------------------------------------
  @@ -149,6 +157,13 @@
                                k->setKey((unsigned char *) s_bobKey, 
strlen(s_bobKey));
                                return k;
                        }
  +                     if (strEquals(s_jobName, name)) {
  +                             OpenSSLCryptoSymmetricKey * k;
  +                             k = new 
OpenSSLCryptoSymmetricKey(XSECCryptoSymmetricKey::KEY_AES_ECB_128);
  +                             k->setKey((unsigned char *) s_jobKey, 
strlen(s_bobKey));
  +                             return k;
  +                     }
  +
                }
   
        }
  
  
  
  1.21      +39 -5     xml-security/c/src/tools/xtest/xtest.cpp
  
  Index: xtest.cpp
  ===================================================================
  RCS file: /home/cvs/xml-security/c/src/tools/xtest/xtest.cpp,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- xtest.cpp 17 Sep 2003 10:10:21 -0000      1.20
  +++ xtest.cpp 3 Oct 2003 09:52:02 -0000       1.21
  @@ -128,6 +128,7 @@
   #if defined (HAVE_OPENSSL)
   #    include <xsec/enc/OpenSSL/OpenSSLCryptoKeyHMAC.hpp>
   #    include <xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp>
  +#    include <openssl/rand.h>
   #endif
   #if defined (HAVE_WINCAPI)
   #    include <xsec/enc/WinCAPI/WinCAPICryptoKeyHMAC.hpp>
  @@ -775,6 +776,23 @@
                 * Now we have a document, find the data node.
                 */
   
  +             // Generate a key
  +             unsigned char randomBuffer[256];
  +
  +#if defined (HAVE_OPENSSL) 
  +             if (RAND_status() != 1) {
  +
  +                     cerr << "Warning - OpenSSL random not properly 
initialised" << endl;
  +
  +             }
  +
  +             if (RAND_bytes(randomBuffer, 128) != 1) {
  +
  +                     cerr << "Error - OpenSSL random did not generate data" 
<< endl;
  +                     exit(1);
  +             }
  +#endif
  +
                static char keyStr[] = "abcdefghijklmnopqrstuvwx";
   
                cipher = prov.newCipher(doc);
  @@ -784,7 +802,7 @@
   
                OpenSSLCryptoSymmetricKey * k;
                k = new 
OpenSSLCryptoSymmetricKey(XSECCryptoSymmetricKey::KEY_3DES_CBC_192);
  -             k->setKey((unsigned char *) keyStr, strlen(keyStr));
  +             k->setKey((unsigned char *) randomBuffer, 24);
                cipher->setKey(k);
        
                // Now encrypt!
  @@ -807,6 +825,22 @@
                else
                        cerr << "not found (OK - now encrypted)" << endl;
   
  +             // Now try to encrypt the Key
  +
  +             cerr << "Encrypting symmetric key ... " << endl;
  +
  +             OpenSSLCryptoSymmetricKey * kek;
  +             kek = new 
OpenSSLCryptoSymmetricKey(XSECCryptoSymmetricKey::KEY_AES_ECB_128);
  +             kek->setKey((unsigned char *) keyStr, 16);
  +             cipher->setKEK(kek);
  +
  +             XENCEncryptedKey * encryptedKey;
  +             encryptedKey = cipher->encryptKey(randomBuffer, 24, 
ENCRYPT_KW_AES128);
  +
  +             cerr << "done!" << endl;
  +
  +             encryptedData->appendEncryptedKey(encryptedKey);
  +
                outputDoc(impl, doc);
   
                // OK - Now we try to decrypt
  @@ -816,9 +850,9 @@
                XENCCipher * cipher2 = prov.newCipher(doc);
   
                OpenSSLCryptoSymmetricKey * k2;
  -             k2 = new 
OpenSSLCryptoSymmetricKey(XSECCryptoSymmetricKey::KEY_3DES_CBC_192);
  -             k2->setKey((unsigned char *) keyStr, strlen(keyStr));
  -             cipher2->setKey(k2);
  +             k2 = new 
OpenSSLCryptoSymmetricKey(XSECCryptoSymmetricKey::KEY_AES_ECB_128);
  +             k2->setKey((unsigned char *) keyStr, 16);
  +             cipher2->setKEK(k2);
   
                cerr << "Decrypting ... ";
                cipher2->decryptElement(static_cast<DOMElement *>(n));
  
  
  

Reply via email to