You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by sc...@apache.org on 2012/06/21 22:58:08 UTC

svn commit: r1352680 - in /santuario/xml-security-cpp/trunk/xsec/enc: ./ NSS/ OpenSSL/ WinCAPI/

Author: scantor
Date: Thu Jun 21 20:58:07 2012
New Revision: 1352680

URL: http://svn.apache.org/viewvc?rev=1352680&view=rev
Log:
Add tag length option to encryptFinal.

Modified:
    santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.cpp
    santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.hpp
    santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.cpp
    santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp
    santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.cpp
    santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.hpp
    santuario/xml-security-cpp/trunk/xsec/enc/XSECCryptoSymmetricKey.hpp

Modified: santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.cpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.cpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.cpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.cpp Thu Jun 21 20:58:07 2012
@@ -589,7 +589,8 @@ unsigned int NSSCryptoSymmetricKey::encr
 // --------------------------------------------------------------------------------
 
 unsigned int NSSCryptoSymmetricKey::encryptFinish(unsigned char * cipherBuf,
-													  unsigned int maxOutLength) {
+                                                  unsigned int maxOutLength,
+                                                  unsigned int taglen) {
 
 	unsigned int outl = 0;
 

Modified: santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.hpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.hpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.hpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/NSS/NSSCryptoSymmetricKey.hpp Thu Jun 21 20:58:07 2012
@@ -264,11 +264,13 @@ public :
 	 *
 	 * @param cipherBuf Buffer to place final block of cipher text in
 	 * @param maxOutLength Maximum number of bytes to pace in output
+     * @param taglen length of Authentication Tag
 	 * @returns Bytes placed in output buffer
 	 */
 
 	virtual unsigned int encryptFinish(unsigned char * plainBuf,
-									   unsigned int maxOutLength);
+									   unsigned int maxOutLength,
+                                       unsigned int taglen = 0);
 
 	//@}
 

Modified: santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.cpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.cpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.cpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.cpp Thu Jun 21 20:58:07 2012
@@ -923,7 +923,8 @@ unsigned int OpenSSLCryptoSymmetricKey::
 }
 
 unsigned int OpenSSLCryptoSymmetricKey::encryptFinish(unsigned char * cipherBuf,
-													  unsigned int maxOutLength) {
+													  unsigned int maxOutLength,
+                                                      unsigned int taglen) {
 
 	int outl = maxOutLength;
 	m_initialised = false;
@@ -951,9 +952,19 @@ unsigned int OpenSSLCryptoSymmetricKey::
 		outl -= m_blockSize;
 
 	}
-
 #endif
 
+    if (taglen > 0) {
+        // Extract authentication tag and add to ciphertext.
+        if (maxOutLength - outl < taglen) {
+		    throw XSECCryptoException(XSECCryptoException::SymmetricError,
+			    "OpenSSLSymmetricKey::encryptFinish - **WARNING** - no room in ciphertext buffer for authentication tag"); 
+        }
+
+        EVP_CIPHER_CTX_ctrl(&m_ctx, EVP_CTRL_GCM_GET_TAG, taglen, cipherBuf + outl);
+        outl += taglen;
+    }
+
 	return outl;
 
 }

Modified: santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/OpenSSL/OpenSSLCryptoSymmetricKey.hpp Thu Jun 21 20:58:07 2012
@@ -266,11 +266,13 @@ public :
 	 *
 	 * @param plainBuf Buffer to place final block of cipher text in
 	 * @param maxOutLength Maximum number of bytes to pace in output
+     * @param taglen length of Authentication Tag
 	 * @returns Bytes placed in output buffer
 	 */
 
 	virtual unsigned int encryptFinish(unsigned char * plainBuf,
-									   unsigned int maxOutLength);
+									   unsigned int maxOutLength,
+                                       unsigned int taglen = 0);
 
 	//@}
 

Modified: santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.cpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.cpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.cpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.cpp Thu Jun 21 20:58:07 2012
@@ -572,7 +572,8 @@ unsigned int WinCAPICryptoSymmetricKey::
 }
 
 unsigned int WinCAPICryptoSymmetricKey::encryptFinish(unsigned char * cipherBuf,
-													  unsigned int maxOutLength) {
+													  unsigned int maxOutLength,
+                                                      unsigned int taglen) {
 
 	DWORD outl = m_bytesInLastBlock + m_blockSize;
 

Modified: santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.hpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.hpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.hpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/WinCAPI/WinCAPICryptoSymmetricKey.hpp Thu Jun 21 20:58:07 2012
@@ -273,11 +273,13 @@ public :
 	 *
 	 * @param plainBuf Buffer to place final block of cipher text in
 	 * @param maxOutLength Maximum number of bytes to pace in output
+     * @param taglen length of Authentication Tag
 	 * @returns Bytes placed in output buffer
 	 */
 
 	virtual unsigned int encryptFinish(unsigned char * plainBuf,
-									   unsigned int maxOutLength);
+									   unsigned int maxOutLength,
+                                       unsigned int taglen = 0);
 
 	//@}
 

Modified: santuario/xml-security-cpp/trunk/xsec/enc/XSECCryptoSymmetricKey.hpp
URL: http://svn.apache.org/viewvc/santuario/xml-security-cpp/trunk/xsec/enc/XSECCryptoSymmetricKey.hpp?rev=1352680&r1=1352679&r2=1352680&view=diff
==============================================================================
--- santuario/xml-security-cpp/trunk/xsec/enc/XSECCryptoSymmetricKey.hpp (original)
+++ santuario/xml-security-cpp/trunk/xsec/enc/XSECCryptoSymmetricKey.hpp Thu Jun 21 20:58:07 2012
@@ -292,11 +292,13 @@ public :
 	 *
 	 * @param plainBuf Buffer to place final block of cipher text in
 	 * @param maxOutLength Maximum number of bytes to pace in output
+     * @param taglen length of Authentication Tag
 	 * @returns Bytes placed in output buffer
 	 */
 
 	virtual unsigned int encryptFinish(unsigned char * plainBuf,
-									   unsigned int maxOutLength) = 0;
+									   unsigned int maxOutLength,
+                                       unsigned int taglen = 0) = 0;
 
 	//@}