Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
podofo.34526
r1594-Fixed-compilation-on-Apple-platforms.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File r1594-Fixed-compilation-on-Apple-platforms.patch of Package podofo.34526
------------------------------------------------------------------------ r1594 | pzent | 2014-04-06 14:09:02 +0200 (dom, 06 abr 2014) | 1 line Fixed compilation on Apple platforms by requiring that they use a regular OpenSSL library instead of Apple's Common Crypto Modified by Antonio Larrosa <alarrosa@suse.com> Modified first chunk of PdfEncrypt.cpp Index: a/podofo/trunk/cmake/modules/FindLIBCRYPTO.cmake =================================================================== --- a/podofo/trunk/cmake/modules/FindLIBCRYPTO.cmake (revision 1593) +++ b/podofo/trunk/cmake/modules/FindLIBCRYPTO.cmake (revision 1594) @@ -11,17 +11,18 @@ SET(LIBCRYPTO_FIND_QUIETLY TRUE) ENDIF (LIBCRYPTO_INCLUDE_DIR) -IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - # MacOSX has deprecated the use of openssl crypto functions - # and replaced it with API-compatible CommonCrypto - FIND_PATH(LIBCRYPTO_INCLUDE_DIR CommonCrypto/CommonDigest.h) - SET(LIBCRYPTO_LIBRARY_NAMES_RELEASE ${LIBCRYPTO_LIBRARY_NAMES_RELEASE} ${LIBCRYPTO_LIBRARY_NAMES} ssl) - SET(LIBCRYPTO_LIBRARY_NAMES_DEBUG ${LIBCRYPTO_LIBRARY_NAMES_DEBUG} ssld) -ELSE(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - FIND_PATH(LIBCRYPTO_INCLUDE_DIR openssl/sha.h) - SET(LIBCRYPTO_LIBRARY_NAMES_RELEASE ${LIBCRYPTO_LIBRARY_NAMES_RELEASE} ${LIBCRYPTO_LIBRARY_NAMES} crypto) - SET(LIBCRYPTO_LIBRARY_NAMES_DEBUG ${LIBCRYPTO_LIBRARY_NAMES_DEBUG} cryptod) -ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +# Require a regular OpenSSL even on OSX/iOS +# IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +# # MacOSX has deprecated the use of openssl crypto functions +# # and replaced it with API-compatible CommonCrypto +# FIND_PATH(LIBCRYPTO_INCLUDE_DIR CommonCrypto/CommonDigest.h) +# SET(LIBCRYPTO_LIBRARY_NAMES_RELEASE ${LIBCRYPTO_LIBRARY_NAMES_RELEASE} ${LIBCRYPTO_LIBRARY_NAMES} ssl) +# SET(LIBCRYPTO_LIBRARY_NAMES_DEBUG ${LIBCRYPTO_LIBRARY_NAMES_DEBUG} ssld) +# ELSE(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + FIND_PATH(LIBCRYPTO_INCLUDE_DIR openssl/sha.h) + SET(LIBCRYPTO_LIBRARY_NAMES_RELEASE ${LIBCRYPTO_LIBRARY_NAMES_RELEASE} ${LIBCRYPTO_LIBRARY_NAMES} crypto) + SET(LIBCRYPTO_LIBRARY_NAMES_DEBUG ${LIBCRYPTO_LIBRARY_NAMES_DEBUG} cryptod) +# ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") FIND_LIBRARY(LIBCRYPTO_LIBRARY_RELEASE NAMES ${LIBCRYPTO_LIBRARY_NAMES_RELEASE} ) Index: a/podofo/trunk/src/base/PdfEncrypt.cpp =================================================================== --- a/podofo/trunk/src/base/PdfEncrypt.cpp (revision 1593) +++ b/podofo/trunk/src/base/PdfEncrypt.cpp (revision 1594) @@ -38,18 +38,11 @@ // AES-256 dependencies : // SASL #include <stringprep.h> -#ifndef __APPLE__ #include <openssl/sha.h> -#endif // !__APPLE__ #endif // PODOFO_HAVE_LIBIDN -#ifdef __APPLE__ -#define COMMON_DIGEST_FOR_OPENSSL -#include <CommonCrypto/CommonCrypto.h> -#else // __APPLE__ #include <openssl/md5.h> #include <openssl/evp.h> -#endif // __APPLE__ namespace { @@ -79,41 +71,24 @@ #define AES_IV_LENGTH 16 // A class that holds the AES Crypto object -// Either CCCrpytor or EVP_CIPHER_CTX class AESCryptoEngine { public: AESCryptoEngine() { -#ifdef __APPLE__ - aes = NULL; -#else EVP_CIPHER_CTX_init(&aes); -#endif // __APPLE__ } -#ifdef __APPLE__ - CCCryptorRef* getEngine() {return &aes;} -#else // __APPLE__ EVP_CIPHER_CTX* getEngine() {return &aes;} -#endif // __APPLE__ ~AESCryptoEngine() { -#ifdef __APPLE__ - CCCryptorRelease(aes); -#else // __APPLE__ EVP_CIPHER_CTX_cleanup(&aes); -#endif // __APPLE__ } private: -#ifdef __APPLE__ - CCCryptorRef aes; -#else // __APPLE__ EVP_CIPHER_CTX aes; -#endif // __APPLE__ }; // A class that holds the RC4 Crypto object @@ -123,35 +98,19 @@ RC4CryptoEngine() { -#ifdef __APPLE__ - rc4 = NULL; -#else EVP_CIPHER_CTX_init(&rc4); -#endif // __APPLE__ } -#ifdef __APPLE__ - CCCryptorRef* getEngine() {return &rc4;} -#else // __APPLE__ EVP_CIPHER_CTX* getEngine() {return &rc4;} -#endif // __APPLE__ ~RC4CryptoEngine() { -#ifdef __APPLE__ - CCCryptorRelease(rc4); -#else // __APPLE__ EVP_CIPHER_CTX_cleanup(&rc4); -#endif // __APPLE__ } private: -#ifdef __APPLE__ - CCCryptorRef rc4; -#else // __APPLE__ EVP_CIPHER_CTX rc4; -#endif // __APPLE__ }; /** A class that can encrypt/decrpyt streamed data block wise @@ -941,39 +900,11 @@ * RC4 is the standard encryption algorithm used in PDF format */ -#ifdef __APPLE__ void PdfEncryptRC4Base::RC4(const unsigned char* key, int keylen, const unsigned char* textin, pdf_long textlen, unsigned char* textout, pdf_long textoutlen) { - CCCryptorRef* rc4 = m_rc4->getEngine(); - - CCCryptorStatus status = CCCryptorCreate(kCCEncrypt, kCCAlgorithmRC4, 0, key, keylen, NULL, rc4); - if(status != kCCSuccess) - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error initializing RC4 encryption engine" ); - - pdf_long requiredOutputLength = CCCryptorGetOutputLength(*rc4, textlen, true); - if(requiredOutputLength != textoutlen) - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error RC4-encrypting data" ); - - size_t dataOutMoved; - status = CCCryptorUpdate(*rc4, textin, textlen, textout, textoutlen, &dataOutMoved); - if(status != kCCSuccess) - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error RC4-encrypting data" ); - - status = CCCryptorFinal(*rc4, &textout[dataOutMoved], textoutlen-dataOutMoved, &dataOutMoved); - if(status != kCCSuccess) - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error RC4-encrypting data" ); -} - -#else // __APPLE__ - -void -PdfEncryptRC4Base::RC4(const unsigned char* key, int keylen, - const unsigned char* textin, pdf_long textlen, - unsigned char* textout, pdf_long textoutlen) -{ EVP_CIPHER_CTX* rc4 = m_rc4->getEngine(); if(textlen != textoutlen) @@ -1002,7 +933,6 @@ if(status != 1) PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error RC4-encrypting data" ); } -#endif // __APPLE__ void PdfEncryptMD5Base::GetMD5Binary(const unsigned char* data, int length, unsigned char* digest) #@@ -1252,34 +1182,6 @@ # { # delete m_aes; # } #- #-#ifdef __APPLE__ #- void #-PdfEncryptAESBase::Encrypt(const unsigned char* key, int keyLen, const unsigned char* iv, #- const unsigned char* textin, pdf_long textlen, #- unsigned char* textout, pdf_long textoutlen) #-{ #- CCCryptorRef* aes = m_aes->getEngine(); #- #- CCCryptorStatus status = CCCryptorCreate(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, key, keyLen, iv, aes); #- if(status != kCCSuccess) #- PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error initializing AES encryption engine" ); #- #- pdf_long requiredOutputLength = CCCryptorGetOutputLength(*aes, textlen, true); #- if(requiredOutputLength != textoutlen) #- PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); #- #- size_t dataOutMoved; #- status = CCCryptorUpdate(*aes, textin, textlen, textout, textoutlen, &dataOutMoved); #- if(status != kCCSuccess) #- PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); #- #- status = CCCryptorFinal(*aes, &textout[dataOutMoved], textoutlen-dataOutMoved, &dataOutMoved); #- if(status != kCCSuccess) #- PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); #-} #- #-#else // __APPLE__ # # void # PdfEncryptAESBase::BaseDecrypt(const unsigned char* key, int keyLen, const unsigned char* iv, #@@ -1343,7 +1245,6 @@ # if(status != 1) # PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); # } #-#endif // __APPLE__ # # void # PdfEncryptAESV2::GenerateEncryptionKey(const PdfString & documentId) @@ -1557,16 +1458,7 @@ // UE = AES-256 encoded file encryption key with key=hash // CBC mode, no padding, init vector=0 -#ifdef __APPLE__ - size_t dataOutMoved; - CCCryptorStatus status = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, 0, hashValue, 32, NULL, m_encryptionKey, m_keyLength, m_ueValue, 32, &dataOutMoved); - if(status != kCCSuccess) { - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error initializing AES encryption engine" ); - } - -#else // __APPLE__ - EVP_CIPHER_CTX aes; EVP_CIPHER_CTX_init(&aes); @@ -1585,8 +1477,6 @@ PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); EVP_CIPHER_CTX_cleanup(&aes); - -#endif // __APPLE__ } void PdfEncryptSHABase::ComputeOwnerKey(const unsigned char * ownerpswd, int len) @@ -1624,15 +1514,7 @@ // OE = AES-256 encoded file encryption key with key=hash // CBC mode, no padding, init vector=0 -#ifdef __APPLE__ - size_t dataOutMoved; - CCCryptorStatus status = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, 0, hashValue, 32, NULL, m_encryptionKey, m_keyLength, m_oeValue, 32, &dataOutMoved); - if(status != kCCSuccess) - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error initializing AES encryption engine" ); - -#else // __APPLE__ - EVP_CIPHER_CTX aes; EVP_CIPHER_CTX_init(&aes); @@ -1651,8 +1533,6 @@ PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); EVP_CIPHER_CTX_cleanup(&aes); - -#endif // __APPLE__ } void PdfEncryptSHABase::PreprocessPassword( const std::string &password, unsigned char* outBuf, int &len) @@ -1782,15 +1662,7 @@ perms[15] = 0; // Encrypt Perms value -#ifdef __APPLE__ - size_t dataOutMoved; - CCCryptorStatus status = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionECBMode, m_encryptionKey, 32, NULL, perms, 16, m_permsValue, 16, &dataOutMoved); - if(status != kCCSuccess) - PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error initializing AES encryption engine" ); - -#else // __APPLE__ - EVP_CIPHER_CTX aes; EVP_CIPHER_CTX_init(&aes); @@ -1809,8 +1681,6 @@ PODOFO_RAISE_ERROR_INFO( ePdfError_InternalLogic, "Error AES-encrypting data" ); EVP_CIPHER_CTX_cleanup(&aes); - -#endif // __APPLE__ } bool PdfEncryptAESV3::Authenticate( const std::string & password, const PdfString & ) ------------------------------------------------------------------------
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor