#ifndef Key_H #define Key_H #include "Betriebssystem.h" namespace Framework { namespace Encryption { //! Speichert einen Array von bytes class Bytes { private: char *bytes; bool del; int length; int ref; public: //! Erzeugt einen lehren Byte Array DLLEXPORT Bytes(); //! Erzeugt einen neuen Byte Array mit bestimmter Länge //! \param length Die Länge des Arrays DLLEXPORT Bytes( int length ); //! Erzeugt ein neuen Byte Array durch kopieren der bytes //! \param daten Die Bytes, die kopiert werden sollen //! \param length Die Anzahl der Bytes die kopiert werden sollen DLLEXPORT Bytes( const char *daten, int length ); //! Löscht den Array DLLEXPORT ~Bytes(); //! Befüllt den Bytearray durch kopieren der Bytes //! \param daten Die Bytes, die kopiert werden sollen DLLEXPORT void setBytes( const char *daten ); //! Löscht den Array und erzeugt einen neuen //! \param daten Die Bytes, die kopiert werden sollen //! \param length Die nänge des Arrays DLLEXPORT void setBytes( const char *daten, int length ); //! Löscht den Array und übernimmt den übergebenen ohne zu kopieren //! \param daten Der neue Byte Array //! \param length Die nänge des Arrays DLLEXPORT void setBytesZ( char *daten, int length ); //! Setzt alle Bytes des Arrays auf einen bestimmten Wert //! \param c Der Wert, auf den die Bytes gesetzt werden sollen DLLEXPORT void fill( const char c ); //! Setzt eine bestimmte Anzahl von Bytes des Arrays auf einen bestimmten Wert //! \param c Der Wert, auf den die Bytes gesetzt werden sollen //! \param len Die Anzahl der Bytes die gesetzt werden sollen DLLEXPORT void fill( const char c, int len ); //! Setzt einen bestimmte Abschnitt von Bytes des Arrays auf einen bestimmten Wert //! \param c Der Wert, auf den die Bytes gesetzt werden sollen //! \param beg Die Startposition des zu setzenden Abschnittes //! \param end Die Endposition des zu setzenden Abschnittes (nicht enthalten) DLLEXPORT void fill( const char c, int beg, int end ); //! Kopiert bestimmte bytes in den Array //! \param c Die Bytes, die kopiert werden sollen //! \param cLength Die Anzahl an Bytes, die gesetzt werden sollen DLLEXPORT void fill( const char *c, int cLength ); //! Setzt ein bestimmtes Byte auf einen Wert //! \param c Der Wert, auf den das Byte gesetzt werden soll //! \param pos Die Position des Bytes im Array DLLEXPORT void set( const char c, int pos ); //! Gibt die Länge des Arrays zurück DLLEXPORT int getLength() const; //! Gibt den Array von Bytes zurück DLLEXPORT char *getBytes() const; //! Erhöht den Reference Counting Zähler. //! \return this. DLLEXPORT Bytes *getThis(); //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht. //! \return 0. DLLEXPORT Bytes *release(); }; //! Kann Bytesequenzen mit bestimmten Schlüsseln verschlüsseln und entschlüsseln class Key { private: unsigned char *key; int length; int pos; int ref; public: //! Erzeugt ein leeres Zeichnung DLLEXPORT Key(); //! Erzeugt ein neues Zeichnung mi einem Schlüssel //! \param s Der Schlüssel, der zum verschlüsseln und entchlüsseln verwendet werden soll //! \param length Die Länge des Schlüssels DLLEXPORT Key( const char *s, int length ); //! Löscht das Zeichnung DLLEXPORT ~Key(); //! Setzt die Position im Schlüssel, wo mit dem verschlüsseln und entschlüsseln begonnen werden soll //! \param p Die Position im Schlüssel DLLEXPORT void setPos( __int64 p ); //! Setzt den Schlüssel, der zum ver- und entschlüsseln verwendet werden soll //! \param s Der Schlüssel //! \param length Die Länge des Schlüssels DLLEXPORT void setKey( const char *s, int length ); //! Verschlüsselt einen Byte Array mit dem gesetzten Schlüssel //! \param daten Der Byte Array, der verschlüsselt werden soll. Wird von der Funktion verändert DLLEXPORT void codieren( Bytes *daten ); //! Entschlüsselt einen Byte Array mit dem gesetzten Schlüssel //! \param daten Der Byte Array, der entschlüsselt werden soll. Wird von der Funktion verändert DLLEXPORT void decodieren( Bytes *daten ); //! Erhöht den Reference Counting Zähler. //! \return this. DLLEXPORT Key *getThis(); //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht. //! \return 0. DLLEXPORT Key *release(); }; } } #endif