You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by bl...@apache.org on 2003/10/03 11:52:02 UTC

cvs commit: xml-security/c/src/tools/xtest xtest.cpp

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));