00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ 00002 /* libwpd 00003 * Copyright (C) 2007 Jaroslav Fojtik (JaFojtik@seznam.cz) 00004 * Copyright (C) 2007 Fridrich Strba (fridrich.strba@bluewin.ch) 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Library General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Library General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Library General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 00019 * 00020 * For further information visit http://libwpd.sourceforge.net 00021 */ 00022 00023 /* "This product is not manufactured, approved, or supported by 00024 * Corel Corporation or Corel Corporation Limited." 00025 */ 00026 00027 #ifndef WPXENCRYPTION_H 00028 #define WPXENCRYPTION_H 00029 00030 #include "libwpd_types.h" 00031 #include "WPXString.h" 00032 00033 class WPXInputStream; 00034 00035 class WPXEncryption 00036 { 00037 public: 00038 WPXEncryption(const char *password, const unsigned long encryptionStartOffset = 0); 00039 ~WPXEncryption(); 00040 00041 const unsigned char *readAndDecrypt(WPXInputStream *input, unsigned long numBytes, unsigned long &numBytesRead); 00042 uint16_t getCheckSum() const; 00043 00044 void setEncryptionStartOffset(unsigned long encryptionStartOffset) 00045 { 00046 m_encryptionStartOffset = encryptionStartOffset; 00047 } 00048 unsigned long getEncryptionStartOffset() const 00049 { 00050 return m_encryptionStartOffset; 00051 } 00052 00053 void setEncryptionMaskBase(unsigned char encryptionMaskBase) 00054 { 00055 m_encryptionMaskBase = encryptionMaskBase; 00056 } 00057 unsigned char getEncryptionMaskBase() const 00058 { 00059 return m_encryptionMaskBase; 00060 } 00061 00062 const WPXString &getEncryptionPassword() const 00063 { 00064 return m_password; 00065 } 00066 00067 private: 00068 unsigned char *m_buffer; 00069 WPXString m_password; 00070 unsigned long m_encryptionStartOffset; 00071 unsigned char m_encryptionMaskBase; 00072 // Unimplemented to prevent compiler from creating crasher ones 00073 WPXEncryption(const WPXEncryption &); 00074 WPXEncryption &operator=(const WPXEncryption &); 00075 }; 00076 00077 #endif /* WPXENCRYPTION_H */ 00078 /* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */