mirror of
https://github.com/status-im/status-go.git
synced 2025-01-09 22:26:30 +00:00
e8c4b7647f
* chore(upgradeSQLCipher): Upgrading SQLCipher to version 5.4.5 Changes: ### github.com/mutecomm/go-sqlcipher 1. The improved crypto argorighms from go-sqlcipher v3 are merged in v4 Tags: v4.4.2-status.1 - merge `burn_stack` improvement v4.4.2-status.2 - merge `SHA1` improvement v4.4.2-status.4- merge 'AES' improvement 2. Fixed `go-sqlcipher` to support v3 database in compatibility mode (`sqlcipher` already supports this) (Tag: v4.4.2-status.3) 3. Upgrade `sqlcipher` to v5.4.5 (Tag: v4.5.4-status.1) ### github.com/status-im/migrate/v4 1. Upgrade `go-sqlcipher` version in `github.com/status-im/migrate/v4` ### status-go 1. Upgrade `go-sqlcipher` and `migrate` modules in status-go 2. Configure the DB connections to open the DB in v3 compatibility mode * chore(upgradeSQLCipher): Use sqlcipher v3 configuration to encrypt a plain text database * chore(upgradeSQLCipher): Scanning NULL BLOB value should return nil Fixing failing tests: TestSyncDeviceSuite/TestPairingSyncDeviceClientAsReceiver; TestSyncDeviceSuite/TestPairingSyncDeviceClientAsSender Considering the following configuration: 1. Table with BLOB column has 1 NULL value 2. Query the value 3. Rows.Scan(&dest sql.NullString) Expected: dest.Valid == false; dest.String == nil Actual: dest.Valid == true; dest.String == "" * chore: Bump go-sqlcipher version to include NULL BLOB fix
100 lines
4.3 KiB
C
100 lines
4.3 KiB
C
/* LibTomCrypt, modular cryptographic library -- Tom St Denis */
|
|
/* SPDX-License-Identifier: Unlicense */
|
|
|
|
/* PKCS Header Info */
|
|
|
|
/* ===> PKCS #1 -- RSA Cryptography <=== */
|
|
#ifdef LTC_PKCS_1
|
|
|
|
enum ltc_pkcs_1_v1_5_blocks
|
|
{
|
|
LTC_PKCS_1_EMSA = 1, /* Block type 1 (PKCS #1 v1.5 signature padding) */
|
|
LTC_PKCS_1_EME = 2 /* Block type 2 (PKCS #1 v1.5 encryption padding) */
|
|
};
|
|
|
|
enum ltc_pkcs_1_paddings
|
|
{
|
|
LTC_PKCS_1_V1_5 = 1, /* PKCS #1 v1.5 padding (\sa ltc_pkcs_1_v1_5_blocks) */
|
|
LTC_PKCS_1_OAEP = 2, /* PKCS #1 v2.0 encryption padding */
|
|
LTC_PKCS_1_PSS = 3, /* PKCS #1 v2.1 signature padding */
|
|
LTC_PKCS_1_V1_5_NA1 = 4 /* PKCS #1 v1.5 padding - No ASN.1 (\sa ltc_pkcs_1_v1_5_blocks) */
|
|
};
|
|
|
|
int pkcs_1_mgf1( int hash_idx,
|
|
const unsigned char *seed, unsigned long seedlen,
|
|
unsigned char *mask, unsigned long masklen);
|
|
|
|
int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out);
|
|
int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen);
|
|
|
|
/* *** v1.5 padding */
|
|
int pkcs_1_v1_5_encode(const unsigned char *msg,
|
|
unsigned long msglen,
|
|
int block_type,
|
|
unsigned long modulus_bitlen,
|
|
prng_state *prng,
|
|
int prng_idx,
|
|
unsigned char *out,
|
|
unsigned long *outlen);
|
|
|
|
int pkcs_1_v1_5_decode(const unsigned char *msg,
|
|
unsigned long msglen,
|
|
int block_type,
|
|
unsigned long modulus_bitlen,
|
|
unsigned char *out,
|
|
unsigned long *outlen,
|
|
int *is_valid);
|
|
|
|
/* *** v2.1 padding */
|
|
int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen,
|
|
const unsigned char *lparam, unsigned long lparamlen,
|
|
unsigned long modulus_bitlen, prng_state *prng,
|
|
int prng_idx, int hash_idx,
|
|
unsigned char *out, unsigned long *outlen);
|
|
|
|
int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen,
|
|
const unsigned char *lparam, unsigned long lparamlen,
|
|
unsigned long modulus_bitlen, int hash_idx,
|
|
unsigned char *out, unsigned long *outlen,
|
|
int *res);
|
|
|
|
int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen,
|
|
unsigned long saltlen, prng_state *prng,
|
|
int prng_idx, int hash_idx,
|
|
unsigned long modulus_bitlen,
|
|
unsigned char *out, unsigned long *outlen);
|
|
|
|
int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen,
|
|
const unsigned char *sig, unsigned long siglen,
|
|
unsigned long saltlen, int hash_idx,
|
|
unsigned long modulus_bitlen, int *res);
|
|
|
|
#endif /* LTC_PKCS_1 */
|
|
|
|
/* ===> PKCS #5 -- Password Based Cryptography <=== */
|
|
#ifdef LTC_PKCS_5
|
|
|
|
/* Algorithm #1 (PBKDF1) */
|
|
int pkcs_5_alg1(const unsigned char *password, unsigned long password_len,
|
|
const unsigned char *salt,
|
|
int iteration_count, int hash_idx,
|
|
unsigned char *out, unsigned long *outlen);
|
|
|
|
/* Algorithm #1 (PBKDF1) - OpenSSL-compatible variant for arbitrarily-long keys.
|
|
Compatible with EVP_BytesToKey() */
|
|
int pkcs_5_alg1_openssl(const unsigned char *password,
|
|
unsigned long password_len,
|
|
const unsigned char *salt,
|
|
int iteration_count, int hash_idx,
|
|
unsigned char *out, unsigned long *outlen);
|
|
|
|
/* Algorithm #2 (PBKDF2) */
|
|
int pkcs_5_alg2(const unsigned char *password, unsigned long password_len,
|
|
const unsigned char *salt, unsigned long salt_len,
|
|
int iteration_count, int hash_idx,
|
|
unsigned char *out, unsigned long *outlen);
|
|
|
|
int pkcs_5_test (void);
|
|
#endif /* LTC_PKCS_5 */
|
|
|