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;
//@}