aboutsummaryrefslogtreecommitdiffstats
path: root/Plugins/DbSqliteWx/codec.h
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:51:12 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2018-07-27 23:51:12 -0400
commitfeda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (patch)
tree1e50f5f666f419143f510d5ded00fe2006b7bd85 /Plugins/DbSqliteWx/codec.h
parentd9aa870e5d509cc7309ab82dd102a937ab58613a (diff)
New upstream version 3.2.1+dfsg1upstream/3.2.1+dfsg1
Diffstat (limited to 'Plugins/DbSqliteWx/codec.h')
-rw-r--r--Plugins/DbSqliteWx/codec.h251
1 files changed, 135 insertions, 116 deletions
diff --git a/Plugins/DbSqliteWx/codec.h b/Plugins/DbSqliteWx/codec.h
index d120d7b..dfd83db 100644
--- a/Plugins/DbSqliteWx/codec.h
+++ b/Plugins/DbSqliteWx/codec.h
@@ -1,116 +1,135 @@
-/*
-///////////////////////////////////////////////////////////////////////////////
-// Name: codec.h
-// Purpose:
-// Author: Ulrich Telle
-// Modified by:
-// Created: 2006-12-06
-// Copyright: (c) Ulrich Telle
-// Licence: wxWindows licence
-///////////////////////////////////////////////////////////////////////////////
-
-/// \file codec.h Interface of the codec class
-*/
-
-#ifndef _CODEC_H_
-#define _CODEC_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if defined(__BORLANDC__)
-#define __STDC__ 1
-#endif
-
-#if defined(__BORLANDC__)
-#undef __STDC__
-#endif
-
-/*
-// ATTENTION: Macro similar to that in pager.c
-// TODO: Check in case of new version of SQLite
-*/
-#define WX_PAGER_MJ_PGNO(x) ((PENDING_BYTE/(x))+1)
-
-#ifdef __cplusplus
-} /* End of the 'extern "C"' block */
-#endif
-
-#include "rijndael.h"
-
-#define CODEC_TYPE_AES128 1
-#define CODEC_TYPE_AES256 2
-
-#ifndef CODEC_TYPE
-#define CODEC_TYPE CODEC_TYPE_AES128
-#endif
-
-#if CODEC_TYPE == CODEC_TYPE_AES256
-#define KEYLENGTH 32
-#define CODEC_SHA_ITER 4001
-#else
-#define KEYLENGTH 16
-#endif
-
-typedef struct _Codec
-{
- int m_isEncrypted;
- int m_hasReadKey;
- unsigned char m_readKey[KEYLENGTH];
- int m_hasWriteKey;
- unsigned char m_writeKey[KEYLENGTH];
- Rijndael* m_aes;
-
- Btree* m_bt; /* Pointer to B-tree used by DB */
- unsigned char m_page[SQLITE_MAX_PAGE_SIZE+24];
-} Codec;
-
-void CodecInit(Codec* codec);
-void CodecTerm(Codec* codec);
-
-void CodecCopy(Codec* codec, Codec* other);
-
-void CodecGenerateReadKey(Codec* codec, char* userPassword, int passwordLength);
-
-void CodecGenerateWriteKey(Codec* codec, char* userPassword, int passwordLength);
-
-void CodecEncrypt(Codec* codec, int page, unsigned char* data, int len, int useWriteKey);
-
-void CodecDecrypt(Codec* codec, int page, unsigned char* data, int len);
-
-void CodecCopyKey(Codec* codec, int read2write);
-
-void CodecSetIsEncrypted(Codec* codec, int isEncrypted);
-void CodecSetHasReadKey(Codec* codec, int hasReadKey);
-void CodecSetHasWriteKey(Codec* codec, int hasWriteKey);
-void CodecSetBtree(Codec* codec, Btree* bt);
-
-int CodecIsEncrypted(Codec* codec);
-int CodecHasReadKey(Codec* codec);
-int CodecHasWriteKey(Codec* codec);
-Btree* CodecGetBtree(Codec* codec);
-unsigned char* CodecGetPageBuffer(Codec* codec);
-
-void CodecGenerateEncryptionKey(Codec* codec, char* userPassword, int passwordLength,
- unsigned char encryptionKey[KEYLENGTH]);
-
-void CodecPadPassword(Codec* codec, char* password, int pswdlen, unsigned char pswd[32]);
-
-void CodecRC4(Codec* codec, unsigned char* key, int keylen,
- unsigned char* textin, int textlen,
- unsigned char* textout);
-
-void CodecGetMD5Binary(Codec* codec, unsigned char* data, int length, unsigned char* digest);
-
-#if CODEC_TYPE == CODEC_TYPE_AES256
-void CodecGetSHABinary(Codec* codec, unsigned char* data, int length, unsigned char* digest);
-#endif
-
-void CodecGenerateInitialVector(Codec* codec, int seed, unsigned char iv[16]);
-
-void CodecAES(Codec* codec, int page, int encrypt, unsigned char encryptionKey[KEYLENGTH],
- unsigned char* datain, int datalen, unsigned char* dataout);
-
-#endif
-
+/*
+** Name: codec.h
+** Purpose: Header file for SQLite codecs
+** Author: Ulrich Telle
+** Created: 2006-12-06
+** Copyright: (c) 2006-2018 Ulrich Telle
+** License: LGPL-3.0+ WITH WxWindows-exception-3.1
+*/
+
+#ifndef _CODEC_H_
+#define _CODEC_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__BORLANDC__)
+#define __STDC__ 1
+#endif
+
+#if defined(__BORLANDC__)
+#undef __STDC__
+#endif
+
+/*
+// ATTENTION: Macro similar to that in pager.c
+// TODO: Check in case of new version of SQLite
+*/
+#define WX_PAGER_MJ_PGNO(x) ((PENDING_BYTE/(x))+1)
+
+#ifdef __cplusplus
+} /* End of the 'extern "C"' block */
+#endif
+
+#include "rijndael.h"
+
+#define CODEC_TYPE_UNKNOWN 0
+#define CODEC_TYPE_AES128 1
+#define CODEC_TYPE_AES256 2
+#define CODEC_TYPE_CHACHA20 3
+#define CODEC_TYPE_SQLCIPHER 4
+#define CODEC_TYPE_MAX 4
+
+#define CODEC_TYPE_DEFAULT CODEC_TYPE_CHACHA20
+
+#ifndef CODEC_TYPE
+#define CODEC_TYPE CODEC_TYPE_DEFAULT
+#endif
+
+#if CODEC_TYPE < 1 || CODEC_TYPE > CODEC_TYPE_MAX
+#error "Invalid codec type selected"
+#endif
+
+#define MAXKEYLENGTH 32
+#define KEYLENGTH_AES128 16
+#define KEYLENGTH_AES256 32
+
+#define CODEC_SHA_ITER 4001
+
+typedef struct _Codec
+{
+ int m_isEncrypted;
+ /* Read cipher */
+ int m_hasReadCipher;
+ int m_readCipherType;
+ void* m_readCipher;
+ /* Write cipher */
+ int m_hasWriteCipher;
+ int m_writeCipherType;
+ void* m_writeCipher;
+
+ wx_sqlite3* m_db; /* Pointer to DB */
+ Btree* m_bt; /* Pointer to B-tree used by DB */
+ unsigned char m_page[SQLITE_MAX_PAGE_SIZE+24];
+ int m_pageSize;
+ int m_reserved;
+} Codec;
+
+void wxwx_sqlite3_config_table(wx_sqlite3_context* context, int argc, wx_sqlite3_value** argv);
+void wxwx_sqlite3_config_params(wx_sqlite3_context* context, int argc, wx_sqlite3_value** argv);
+
+int wxwx_sqlite3_config(wx_sqlite3* db, const char* paramName, int newValue);
+int wxwx_sqlite3_config_cipher(wx_sqlite3* db, const char* cipherName, const char* paramName, int newValue);
+
+int GetCipherType(wx_sqlite3* db);
+void* GetCipherParams(wx_sqlite3* db, int cypherType);
+int CodecInit(Codec* codec);
+void CodecTerm(Codec* codec);
+
+int CodecCopy(Codec* codec, Codec* other);
+
+void CodecGenerateReadKey(Codec* codec, char* userPassword, int passwordLength);
+
+void CodecGenerateWriteKey(Codec* codec, char* userPassword, int passwordLength);
+
+int CodecEncrypt(Codec* codec, int page, unsigned char* data, int len, int useWriteKey);
+
+int CodecDecrypt(Codec* codec, int page, unsigned char* data, int len);
+
+int CodecCopyCipher(Codec* codec, int read2write);
+
+int CodecSetup(Codec* codec, int cipherType, char* userPassword, int passwordLength);
+int CodecSetupWriteCipher(Codec* codec, int cipherType, char* userPassword, int passwordLength);
+
+void CodecSetIsEncrypted(Codec* codec, int isEncrypted);
+void CodecSetReadCipherType(Codec* codec, int cipherType);
+void CodecSetWriteCipherType(Codec* codec, int cipherType);
+void CodecSetHasReadCipher(Codec* codec, int hasReadCipher);
+void CodecSetHasWriteCipher(Codec* codec, int hasWriteCipher);
+void CodecSetDb(Codec* codec, wx_sqlite3* db);
+void CodecSetBtree(Codec* codec, Btree* bt);
+
+int CodecIsEncrypted(Codec* codec);
+int CodecHasReadCipher(Codec* codec);
+int CodecHasWriteCipher(Codec* codec);
+Btree* CodecGetBtree(Codec* codec);
+unsigned char* CodecGetPageBuffer(Codec* codec);
+int CodecGetLegacyReadCipher(Codec* codec);
+int CodecGetLegacyWriteCipher(Codec* codec);
+int CodecGetPageSizeReadCipher(Codec* codec);
+int CodecGetPageSizeWriteCipher(Codec* codec);
+int CodecGetReservedReadCipher(Codec* codec);
+int CodecGetReservedWriteCipher(Codec* codec);
+int CodecReservedEqual(Codec* codec);
+
+void CodecPadPassword(char* password, int pswdlen, unsigned char pswd[32]);
+void CodecRC4(unsigned char* key, int keylen,
+ unsigned char* textin, int textlen,
+ unsigned char* textout);
+void CodecGetMD5Binary(unsigned char* data, int length, unsigned char* digest);
+void CodecGetSHABinary(unsigned char* data, int length, unsigned char* digest);
+void CodecGenerateInitialVector(int seed, unsigned char iv[16]);
+
+#endif
+