74 lines
3.2 KiB
C
74 lines
3.2 KiB
C
/*
|
|
** SQLCipher
|
|
** sqlcipher.h developed by Stephen Lombardo (Zetetic LLC)
|
|
** sjlombardo at zetetic dot net
|
|
** http://zetetic.net
|
|
**
|
|
** Copyright (c) 2008, ZETETIC LLC
|
|
** All rights reserved.
|
|
**
|
|
** Redistribution and use in source and binary forms, with or without
|
|
** modification, are permitted provided that the following conditions are met:
|
|
** * Redistributions of source code must retain the above copyright
|
|
** notice, this list of conditions and the following disclaimer.
|
|
** * Redistributions in binary form must reproduce the above copyright
|
|
** notice, this list of conditions and the following disclaimer in the
|
|
** documentation and/or other materials provided with the distribution.
|
|
** * Neither the name of the ZETETIC LLC nor the
|
|
** names of its contributors may be used to endorse or promote products
|
|
** derived from this software without specific prior written permission.
|
|
**
|
|
** THIS SOFTWARE IS PROVIDED BY ZETETIC LLC ''AS IS'' AND ANY
|
|
** EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
** DISCLAIMED. IN NO EVENT SHALL ZETETIC LLC BE LIABLE FOR ANY
|
|
** DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
**
|
|
*/
|
|
/* BEGIN SQLCIPHER */
|
|
#ifdef SQLITE_HAS_CODEC
|
|
#ifndef SQLCIPHER_H
|
|
#define SQLCIPHER_H
|
|
|
|
|
|
typedef struct {
|
|
int (*activate)(void *ctx);
|
|
int (*deactivate)(void *ctx);
|
|
const char* (*get_provider_name)(void *ctx);
|
|
int (*add_random)(void *ctx, void *buffer, int length);
|
|
int (*random)(void *ctx, void *buffer, int length);
|
|
int (*hmac)(void *ctx, unsigned char *hmac_key, int key_sz, unsigned char *in, int in_sz, unsigned char *in2, int in2_sz, unsigned char *out);
|
|
int (*kdf)(void *ctx, const unsigned char *pass, int pass_sz, unsigned char* salt, int salt_sz, int workfactor, int key_sz, unsigned char *key);
|
|
int (*cipher)(void *ctx, int mode, unsigned char *key, int key_sz, unsigned char *iv, unsigned char *in, int in_sz, unsigned char *out);
|
|
int (*set_cipher)(void *ctx, const char *cipher_name);
|
|
const char* (*get_cipher)(void *ctx);
|
|
int (*get_key_sz)(void *ctx);
|
|
int (*get_iv_sz)(void *ctx);
|
|
int (*get_block_sz)(void *ctx);
|
|
int (*get_hmac_sz)(void *ctx);
|
|
int (*ctx_copy)(void *target_ctx, void *source_ctx);
|
|
int (*ctx_cmp)(void *c1, void *c2);
|
|
int (*ctx_init)(void **ctx);
|
|
int (*ctx_free)(void **ctx);
|
|
} sqlcipher_provider;
|
|
|
|
/* utility functions */
|
|
void sqlcipher_free(void *ptr, int sz);
|
|
void* sqlcipher_malloc(int sz);
|
|
void* sqlcipher_memset(void *v, unsigned char value, int len);
|
|
int sqlcipher_ismemset(const void *v, unsigned char value, int len);
|
|
int sqlcipher_memcmp(const void *v0, const void *v1, int len);
|
|
void sqlcipher_free(void *, int);
|
|
|
|
int sqlcipher_register_provider(sqlcipher_provider *p);
|
|
|
|
#endif
|
|
#endif
|
|
/* END SQLCIPHER */
|
|
|