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