libsodium, libtoxcore
This commit is contained in:
parent
849b39b04b
commit
2489b3fd10
|
@ -75,17 +75,30 @@ in {
|
||||||
genodeSources =
|
genodeSources =
|
||||||
buildPackages.callPackage ../packages/genodelabs { inherit flake; };
|
buildPackages.callPackage ../packages/genodelabs { inherit flake; };
|
||||||
|
|
||||||
|
libconfig = overrideHostAttrs libconfig
|
||||||
|
(attrs: { configureFlags = [ "--disable-examples" ]; });
|
||||||
|
|
||||||
libcCrossChooser = name:
|
libcCrossChooser = name:
|
||||||
if stdenv.targetPlatform.isGenode then
|
if stdenv.targetPlatform.isGenode then
|
||||||
targetPackages.genodeLibcCross
|
targetPackages.genodeLibcCross
|
||||||
else
|
else
|
||||||
prev.libcCrossChooser name;
|
prev.libcCrossChooser name;
|
||||||
|
|
||||||
|
libsodium = overrideHostAttrs libsodium (attrs: {
|
||||||
|
patches = (attrs.patches or [ ]) ++ [ ./libsodium/genode.patch ];
|
||||||
|
});
|
||||||
|
|
||||||
libtool = overrideTargetAttrs libtool (attrs: {
|
libtool = overrideTargetAttrs libtool (attrs: {
|
||||||
nativeBuildInputs = attrs.nativeBuildInputs ++ [ autoconf automake115x ];
|
nativeBuildInputs = attrs.nativeBuildInputs ++ [ autoconf automake115x ];
|
||||||
patches = ./libtool/genode.patch;
|
patches = ./libtool/genode.patch;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
libtoxcore = overrideHost libtoxcore {
|
||||||
|
libopus = null;
|
||||||
|
libvpx = null;
|
||||||
|
ncurses = null;
|
||||||
|
};
|
||||||
|
|
||||||
llvmPackages_8 = callPackage ./llvm-8 ({
|
llvmPackages_8 = callPackage ./llvm-8 ({
|
||||||
inherit (stdenvAdapters) overrideCC;
|
inherit (stdenvAdapters) overrideCC;
|
||||||
inherit (targetPackages.genodeSources) genodeBase;
|
inherit (targetPackages.genodeSources) genodeBase;
|
||||||
|
|
691
overlay/libsodium/genode.patch
Normal file
691
overlay/libsodium/genode.patch
Normal file
|
@ -0,0 +1,691 @@
|
||||||
|
commit fa7ca48e401704446fcac8b3787cf2ad6c4db6c1
|
||||||
|
Author: Emery Hemingway <ehmry@posteo.net>
|
||||||
|
Date: Tue Oct 20 19:17:19 2020 +0200
|
||||||
|
|
||||||
|
Log sodium_misuses
|
||||||
|
|
||||||
|
diff --git a/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c b/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
|
||||||
|
index 69707a68..7e283e8e 100644
|
||||||
|
--- a/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
|
||||||
|
+++ b/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c
|
||||||
|
@@ -525,7 +525,7 @@ crypto_aead_aes256gcm_encrypt_detached_afternm(unsigned char *c,
|
||||||
|
(void) nsec;
|
||||||
|
memcpy(H, ctx->H, sizeof H);
|
||||||
|
if (mlen > crypto_aead_aes256gcm_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
memcpy(&n2[0], npub, 3 * 4);
|
||||||
|
n2[3] = 0x01000000;
|
||||||
|
@@ -663,7 +663,7 @@ crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, unsigned char *
|
||||||
|
|
||||||
|
(void) nsec;
|
||||||
|
if (clen > crypto_aead_aes256gcm_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
mlen = clen;
|
||||||
|
|
||||||
|
diff --git a/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c b/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c
|
||||||
|
index c3540879..107d0406 100644
|
||||||
|
--- a/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c
|
||||||
|
+++ b/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c
|
||||||
|
@@ -72,7 +72,7 @@ crypto_aead_chacha20poly1305_encrypt(unsigned char *c,
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (mlen > crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
ret = crypto_aead_chacha20poly1305_encrypt_detached(c,
|
||||||
|
c + mlen, NULL,
|
||||||
|
@@ -147,7 +147,7 @@ crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c,
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (mlen > crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached(c,
|
||||||
|
c + mlen, NULL,
|
||||||
|
diff --git a/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c b/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c
|
||||||
|
index 07e36557..afc2d0fe 100644
|
||||||
|
--- a/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c
|
||||||
|
+++ b/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c
|
||||||
|
@@ -158,7 +158,7 @@ crypto_aead_xchacha20poly1305_ietf_encrypt(unsigned char *c,
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (mlen > crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
ret = crypto_aead_xchacha20poly1305_ietf_encrypt_detached
|
||||||
|
(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k);
|
||||||
|
diff --git a/src/libsodium/crypto_box/crypto_box_easy.c b/src/libsodium/crypto_box/crypto_box_easy.c
|
||||||
|
index deb40b40..ea9594d9 100644
|
||||||
|
--- a/src/libsodium/crypto_box/crypto_box_easy.c
|
||||||
|
+++ b/src/libsodium/crypto_box/crypto_box_easy.c
|
||||||
|
@@ -42,7 +42,7 @@ crypto_box_easy_afternm(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_box_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_box_detached_afternm(c + crypto_box_MACBYTES, c, m, mlen, n,
|
||||||
|
k);
|
||||||
|
@@ -54,7 +54,7 @@ crypto_box_easy(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *pk, const unsigned char *sk)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_box_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_box_detached(c + crypto_box_MACBYTES, c, m, mlen, n,
|
||||||
|
pk, sk);
|
||||||
|
diff --git a/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c b/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c
|
||||||
|
index 5e2532ea..cbc0d744 100644
|
||||||
|
--- a/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c
|
||||||
|
+++ b/src/libsodium/crypto_box/curve25519xchacha20poly1305/box_curve25519xchacha20poly1305.c
|
||||||
|
@@ -88,7 +88,7 @@ crypto_box_curve25519xchacha20poly1305_easy_afternm(unsigned char *c,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_box_curve25519xchacha20poly1305_detached_afternm(
|
||||||
|
c + crypto_box_curve25519xchacha20poly1305_MACBYTES, c, m, mlen, n, k);
|
||||||
|
@@ -100,7 +100,7 @@ crypto_box_curve25519xchacha20poly1305_easy(
|
||||||
|
const unsigned char *n, const unsigned char *pk, const unsigned char *sk)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_box_curve25519xchacha20poly1305_detached(
|
||||||
|
c + crypto_box_curve25519xchacha20poly1305_MACBYTES, c, m, mlen, n, pk,
|
||||||
|
diff --git a/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c b/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c
|
||||||
|
index a1beacf3..c40dd7ce 100644
|
||||||
|
--- a/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c
|
||||||
|
+++ b/src/libsodium/crypto_generichash/blake2b/ref/blake2b-ref.c
|
||||||
|
@@ -128,7 +128,7 @@ blake2b_init(blake2b_state *S, const uint8_t outlen)
|
||||||
|
blake2b_param P[1];
|
||||||
|
|
||||||
|
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
P->digest_length = outlen;
|
||||||
|
P->key_length = 0;
|
||||||
|
@@ -151,7 +151,7 @@ blake2b_init_salt_personal(blake2b_state *S, const uint8_t outlen,
|
||||||
|
blake2b_param P[1];
|
||||||
|
|
||||||
|
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
P->digest_length = outlen;
|
||||||
|
P->key_length = 0;
|
||||||
|
@@ -182,10 +182,10 @@ blake2b_init_key(blake2b_state *S, const uint8_t outlen, const void *key,
|
||||||
|
blake2b_param P[1];
|
||||||
|
|
||||||
|
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (!key || !keylen || keylen > BLAKE2B_KEYBYTES) {
|
||||||
|
- sodium_misuse(); /* does not return */
|
||||||
|
+ sodium_misused(); /* does not return */
|
||||||
|
}
|
||||||
|
P->digest_length = outlen;
|
||||||
|
P->key_length = keylen;
|
||||||
|
@@ -200,7 +200,7 @@ blake2b_init_key(blake2b_state *S, const uint8_t outlen, const void *key,
|
||||||
|
memset(P->personal, 0, sizeof(P->personal));
|
||||||
|
|
||||||
|
if (blake2b_init_param(S, P) < 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
{
|
||||||
|
uint8_t block[BLAKE2B_BLOCKBYTES];
|
||||||
|
@@ -220,10 +220,10 @@ blake2b_init_key_salt_personal(blake2b_state *S, const uint8_t outlen,
|
||||||
|
blake2b_param P[1];
|
||||||
|
|
||||||
|
if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (!key || !keylen || keylen > BLAKE2B_KEYBYTES) {
|
||||||
|
- sodium_misuse(); /* does not return */
|
||||||
|
+ sodium_misused(); /* does not return */
|
||||||
|
}
|
||||||
|
P->digest_length = outlen;
|
||||||
|
P->key_length = keylen;
|
||||||
|
@@ -246,7 +246,7 @@ blake2b_init_key_salt_personal(blake2b_state *S, const uint8_t outlen,
|
||||||
|
}
|
||||||
|
|
||||||
|
if (blake2b_init_param(S, P) < 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
{
|
||||||
|
uint8_t block[BLAKE2B_BLOCKBYTES];
|
||||||
|
@@ -294,7 +294,7 @@ blake2b_final(blake2b_state *S, uint8_t *out, uint8_t outlen)
|
||||||
|
unsigned char buffer[BLAKE2B_OUTBYTES];
|
||||||
|
|
||||||
|
if (!outlen || outlen > BLAKE2B_OUTBYTES) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (blake2b_is_lastblock(S)) {
|
||||||
|
return -1;
|
||||||
|
@@ -339,27 +339,27 @@ blake2b(uint8_t *out, const void *in, const void *key, const uint8_t outlen,
|
||||||
|
|
||||||
|
/* Verify parameters */
|
||||||
|
if (NULL == in && inlen > 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (NULL == out) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (!outlen || outlen > BLAKE2B_OUTBYTES) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (NULL == key && keylen > 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (keylen > BLAKE2B_KEYBYTES) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (keylen > 0) {
|
||||||
|
if (blake2b_init_key(S, outlen, key, keylen) < 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (blake2b_init(S, outlen) < 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -377,28 +377,28 @@ blake2b_salt_personal(uint8_t *out, const void *in, const void *key,
|
||||||
|
|
||||||
|
/* Verify parameters */
|
||||||
|
if (NULL == in && inlen > 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (NULL == out) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (!outlen || outlen > BLAKE2B_OUTBYTES) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (NULL == key && keylen > 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (keylen > BLAKE2B_KEYBYTES) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if (keylen > 0) {
|
||||||
|
if (blake2b_init_key_salt_personal(S, outlen, key, keylen, salt,
|
||||||
|
personal) < 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (blake2b_init_salt_personal(S, outlen, salt, personal) < 0) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/libsodium/crypto_kx/crypto_kx.c b/src/libsodium/crypto_kx/crypto_kx.c
|
||||||
|
index 9f0c3aef..060e5373 100644
|
||||||
|
--- a/src/libsodium/crypto_kx/crypto_kx.c
|
||||||
|
+++ b/src/libsodium/crypto_kx/crypto_kx.c
|
||||||
|
@@ -49,7 +49,7 @@ crypto_kx_client_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES],
|
||||||
|
tx = rx;
|
||||||
|
}
|
||||||
|
if (rx == NULL) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
if (crypto_scalarmult(q, client_sk, server_pk) != 0) {
|
||||||
|
return -1;
|
||||||
|
@@ -90,7 +90,7 @@ crypto_kx_server_session_keys(unsigned char rx[crypto_kx_SESSIONKEYBYTES],
|
||||||
|
tx = rx;
|
||||||
|
}
|
||||||
|
if (rx == NULL) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
if (crypto_scalarmult(q, server_sk, client_pk) != 0) {
|
||||||
|
return -1;
|
||||||
|
diff --git a/src/libsodium/crypto_pwhash/crypto_pwhash.c b/src/libsodium/crypto_pwhash/crypto_pwhash.c
|
||||||
|
index a229b9f7..fd41b3f9 100644
|
||||||
|
--- a/src/libsodium/crypto_pwhash/crypto_pwhash.c
|
||||||
|
+++ b/src/libsodium/crypto_pwhash/crypto_pwhash.c
|
||||||
|
@@ -166,7 +166,7 @@ crypto_pwhash_str_alg(char out[crypto_pwhash_STRBYTES],
|
||||||
|
return crypto_pwhash_argon2id_str(out, passwd, passwdlen,
|
||||||
|
opslimit, memlimit);
|
||||||
|
}
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
/* NOTREACHED */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
diff --git a/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c b/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c
|
||||||
|
index 42cab61f..ded48295 100644
|
||||||
|
--- a/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c
|
||||||
|
+++ b/src/libsodium/crypto_pwhash/scryptsalsa208sha256/pbkdf2-sha256.c
|
||||||
|
@@ -60,7 +60,7 @@ PBKDF2_SHA256(const uint8_t *passwd, size_t passwdlen, const uint8_t *salt,
|
||||||
|
COMPILER_ASSERT(crypto_pwhash_scryptsalsa208sha256_BYTES_MAX
|
||||||
|
<= 0x1fffffffe0ULL);
|
||||||
|
if (dkLen > 0x1fffffffe0ULL) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
crypto_auth_hmacsha256_init(&PShctx, passwd, passwdlen);
|
||||||
|
diff --git a/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c b/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c
|
||||||
|
index b1203849..233ec20e 100644
|
||||||
|
--- a/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c
|
||||||
|
+++ b/src/libsodium/crypto_secretbox/crypto_secretbox_easy.c
|
||||||
|
@@ -73,7 +73,7 @@ crypto_secretbox_easy(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_secretbox_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_secretbox_detached(c + crypto_secretbox_MACBYTES,
|
||||||
|
c, m, mlen, n, k);
|
||||||
|
diff --git a/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c b/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c
|
||||||
|
index e76167d2..c1ecffcd 100644
|
||||||
|
--- a/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c
|
||||||
|
+++ b/src/libsodium/crypto_secretbox/xchacha20poly1305/secretbox_xchacha20poly1305.c
|
||||||
|
@@ -79,7 +79,7 @@ crypto_secretbox_xchacha20poly1305_easy(unsigned char *c,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_secretbox_xchacha20poly1305_detached
|
||||||
|
(c + crypto_secretbox_xchacha20poly1305_MACBYTES, c, m, mlen, n, k);
|
||||||
|
diff --git a/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c b/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c
|
||||||
|
index 2754a91c..47449bc0 100644
|
||||||
|
--- a/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c
|
||||||
|
+++ b/src/libsodium/crypto_secretstream/xchacha20poly1305/secretstream_xchacha20poly1305.c
|
||||||
|
@@ -126,7 +126,7 @@ crypto_secretstream_xchacha20poly1305_push
|
||||||
|
COMPILER_ASSERT(crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX
|
||||||
|
<= crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX);
|
||||||
|
if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
|
||||||
|
crypto_onetimeauth_poly1305_init(&poly1305_state, block);
|
||||||
|
@@ -202,7 +202,7 @@ crypto_secretstream_xchacha20poly1305_pull
|
||||||
|
}
|
||||||
|
mlen = inlen - crypto_secretstream_xchacha20poly1305_ABYTES;
|
||||||
|
if (mlen > crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
crypto_stream_chacha20_ietf(block, sizeof block, state->nonce, state->k);
|
||||||
|
crypto_onetimeauth_poly1305_init(&poly1305_state, block);
|
||||||
|
diff --git a/src/libsodium/crypto_stream/chacha20/stream_chacha20.c b/src/libsodium/crypto_stream/chacha20/stream_chacha20.c
|
||||||
|
index 427c3fb0..e753055d 100644
|
||||||
|
--- a/src/libsodium/crypto_stream/chacha20/stream_chacha20.c
|
||||||
|
+++ b/src/libsodium/crypto_stream/chacha20/stream_chacha20.c
|
||||||
|
@@ -56,7 +56,7 @@ crypto_stream_chacha20(unsigned char *c, unsigned long long clen,
|
||||||
|
const unsigned char *n, const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (clen > crypto_stream_chacha20_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return implementation->stream(c, clen, n, k);
|
||||||
|
}
|
||||||
|
@@ -68,7 +68,7 @@ crypto_stream_chacha20_xor_ic(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return implementation->stream_xor_ic(c, m, mlen, n, ic, k);
|
||||||
|
}
|
||||||
|
@@ -79,7 +79,7 @@ crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return implementation->stream_xor_ic(c, m, mlen, n, 0U, k);
|
||||||
|
}
|
||||||
|
@@ -89,7 +89,7 @@ crypto_stream_chacha20_ietf_ext(unsigned char *c, unsigned long long clen,
|
||||||
|
const unsigned char *n, const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (clen > crypto_stream_chacha20_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return implementation->stream_ietf_ext(c, clen, n, k);
|
||||||
|
}
|
||||||
|
@@ -101,7 +101,7 @@ crypto_stream_chacha20_ietf_ext_xor_ic(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return implementation->stream_ietf_ext_xor_ic(c, m, mlen, n, ic, k);
|
||||||
|
}
|
||||||
|
@@ -112,7 +112,7 @@ crypto_stream_chacha20_ietf_ext_xor(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_stream_chacha20_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return implementation->stream_ietf_ext_xor_ic(c, m, mlen, n, 0U, k);
|
||||||
|
}
|
||||||
|
@@ -122,7 +122,7 @@ crypto_stream_chacha20_ietf(unsigned char *c, unsigned long long clen,
|
||||||
|
const unsigned char *n, const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (clen > crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_stream_chacha20_ietf_ext(c, clen, n, k);
|
||||||
|
}
|
||||||
|
@@ -135,7 +135,7 @@ crypto_stream_chacha20_ietf_xor_ic(unsigned char *c, const unsigned char *m,
|
||||||
|
{
|
||||||
|
if ((unsigned long long) ic >
|
||||||
|
(64ULL * (1ULL << 32)) / 64ULL - (mlen + 63ULL) / 64ULL) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_stream_chacha20_ietf_ext_xor_ic(c, m, mlen, n, ic, k);
|
||||||
|
}
|
||||||
|
@@ -146,7 +146,7 @@ crypto_stream_chacha20_ietf_xor(unsigned char *c, const unsigned char *m,
|
||||||
|
const unsigned char *k)
|
||||||
|
{
|
||||||
|
if (mlen > crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
return crypto_stream_chacha20_ietf_ext_xor(c, m, mlen, n, k);
|
||||||
|
}
|
||||||
|
diff --git a/src/libsodium/include/sodium/core.h b/src/libsodium/include/sodium/core.h
|
||||||
|
index dd088d2c..3e0c944f 100644
|
||||||
|
--- a/src/libsodium/include/sodium/core.h
|
||||||
|
+++ b/src/libsodium/include/sodium/core.h
|
||||||
|
@@ -21,6 +21,12 @@ SODIUM_EXPORT
|
||||||
|
void sodium_misuse(void)
|
||||||
|
__attribute__ ((noreturn));
|
||||||
|
|
||||||
|
+#define sodium_misused() \
|
||||||
|
+{ \
|
||||||
|
+ printf("%s %s:%d", __func__, __FILE__, __LINE__); \
|
||||||
|
+ sodium_misuse(); \
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
diff --git a/src/libsodium/randombytes/internal/randombytes_internal_random.c b/src/libsodium/randombytes/internal/randombytes_internal_random.c
|
||||||
|
index f0794f80..7374c458 100644
|
||||||
|
--- a/src/libsodium/randombytes/internal/randombytes_internal_random.c
|
||||||
|
+++ b/src/libsodium/randombytes/internal/randombytes_internal_random.c
|
||||||
|
@@ -155,7 +155,7 @@ sodium_hrtime(void)
|
||||||
|
struct timeval tv;
|
||||||
|
|
||||||
|
if (gettimeofday(&tv, NULL) != 0) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
return ((uint64_t) tv.tv_sec) * 1000000U + (uint64_t) tv.tv_usec;
|
||||||
|
}
|
||||||
|
@@ -374,14 +374,14 @@ randombytes_internal_random_init(void)
|
||||||
|
assert((global.getentropy_available | global.getrandom_available) == 0);
|
||||||
|
if ((global.random_data_source_fd =
|
||||||
|
randombytes_internal_random_random_dev_open()) == -1) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
errno = errno_save;
|
||||||
|
return;
|
||||||
|
# endif
|
||||||
|
/* LCOV_EXCL_STOP */
|
||||||
|
# ifndef HAVE_SAFE_ARC4RANDOM
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -411,13 +411,13 @@ randombytes_internal_random_stir(void)
|
||||||
|
# ifdef HAVE_GETENTROPY
|
||||||
|
if (global.getentropy_available != 0) {
|
||||||
|
if (randombytes_getentropy(stream.key, sizeof stream.key) != 0) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# elif defined(HAVE_LINUX_COMPATIBLE_GETRANDOM)
|
||||||
|
if (global.getrandom_available != 0) {
|
||||||
|
if (randombytes_linux_getrandom(stream.key, sizeof stream.key) != 0) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# elif defined(NONEXISTENT_DEV_RANDOM) && defined(HAVE_SAFE_ARC4RANDOM)
|
||||||
|
@@ -426,15 +426,15 @@ randombytes_internal_random_stir(void)
|
||||||
|
if (global.random_data_source_fd == -1 ||
|
||||||
|
safe_read(global.random_data_source_fd, stream.key,
|
||||||
|
sizeof stream.key) != (ssize_t) sizeof stream.key) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
# else
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else /* _WIN32 */
|
||||||
|
if (! RtlGenRandom((PVOID) stream.key, (ULONG) sizeof stream.key)) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -452,7 +452,7 @@ randombytes_internal_random_stir_if_needed(void)
|
||||||
|
if (stream.initialized == 0) {
|
||||||
|
randombytes_internal_random_stir();
|
||||||
|
} else if (global.pid != getpid()) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (stream.initialized == 0) {
|
||||||
|
diff --git a/src/libsodium/randombytes/randombytes.c b/src/libsodium/randombytes/randombytes.c
|
||||||
|
index 8ac085fc..5615c8c6 100644
|
||||||
|
--- a/src/libsodium/randombytes/randombytes.c
|
||||||
|
+++ b/src/libsodium/randombytes/randombytes.c
|
||||||
|
@@ -169,7 +169,7 @@ randombytes_buf_deterministic(void * const buf, const size_t size,
|
||||||
|
#if SIZE_MAX > 0x4000000000ULL
|
||||||
|
COMPILER_ASSERT(randombytes_BYTES_MAX <= 0x4000000000ULL);
|
||||||
|
if (size > 0x4000000000ULL) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
crypto_stream_chacha20_ietf((unsigned char *) buf, (unsigned long long) size,
|
||||||
|
diff --git a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
|
||||||
|
index 6f0e3c09..a2c6ccad 100644
|
||||||
|
--- a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
|
||||||
|
+++ b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
|
||||||
|
@@ -280,7 +280,7 @@ randombytes_sysrandom_init(void)
|
||||||
|
|
||||||
|
if ((stream.random_data_source_fd =
|
||||||
|
randombytes_sysrandom_random_dev_open()) == -1) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
errno = errno_save;
|
||||||
|
}
|
||||||
|
@@ -350,22 +350,22 @@ randombytes_sysrandom_buf(void * const buf, const size_t size)
|
||||||
|
# ifdef HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||||
|
if (stream.getrandom_available != 0) {
|
||||||
|
if (randombytes_linux_getrandom(buf, size) != 0) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
if (stream.random_data_source_fd == -1 ||
|
||||||
|
safe_read(stream.random_data_source_fd, buf, size) != (ssize_t) size) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
# else /* _WIN32 */
|
||||||
|
COMPILER_ASSERT(randombytes_BYTES_MAX <= 0xffffffffUL);
|
||||||
|
if (size > (size_t) 0xffffffffUL) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
if (! RtlGenRandom((PVOID) buf, (ULONG) size)) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
# endif /* _WIN32 */
|
||||||
|
}
|
||||||
|
diff --git a/src/libsodium/sodium/codecs.c b/src/libsodium/sodium/codecs.c
|
||||||
|
index 77fa464c..168413f3 100644
|
||||||
|
--- a/src/libsodium/sodium/codecs.c
|
||||||
|
+++ b/src/libsodium/sodium/codecs.c
|
||||||
|
@@ -20,7 +20,7 @@ sodium_bin2hex(char *const hex, const size_t hex_maxlen,
|
||||||
|
int c;
|
||||||
|
|
||||||
|
if (bin_len >= SIZE_MAX / 2 || hex_maxlen <= bin_len * 2U) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
while (i < bin_len) {
|
||||||
|
c = bin[i] & 0xf;
|
||||||
|
@@ -163,7 +163,7 @@ static void
|
||||||
|
sodium_base64_check_variant(const int variant)
|
||||||
|
{
|
||||||
|
if ((((unsigned int) variant) & ~ 0x6U) != 0x1U) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -200,7 +200,7 @@ sodium_bin2base64(char * const b64, const size_t b64_maxlen,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (b64_maxlen <= b64_len) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
if ((((unsigned int) variant) & VARIANT_URLSAFE_MASK) != 0U) {
|
||||||
|
while (bin_pos < bin_len) {
|
||||||
|
diff --git a/src/libsodium/sodium/utils.c b/src/libsodium/sodium/utils.c
|
||||||
|
index 1fbd3a37..baa7d461 100644
|
||||||
|
--- a/src/libsodium/sodium/utils.c
|
||||||
|
+++ b/src/libsodium/sodium/utils.c
|
||||||
|
@@ -106,7 +106,7 @@ sodium_memzero(void * const pnt, const size_t len)
|
||||||
|
SecureZeroMemory(pnt, len);
|
||||||
|
#elif defined(HAVE_MEMSET_S)
|
||||||
|
if (len > 0U && memset_s(pnt, (rsize_t) len, 0, (rsize_t) len) != 0) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
#elif defined(HAVE_EXPLICIT_BZERO)
|
||||||
|
explicit_bzero(pnt, len);
|
||||||
|
@@ -395,7 +395,7 @@ _sodium_alloc_init(void)
|
||||||
|
page_size = (size_t) si.dwPageSize;
|
||||||
|
# endif
|
||||||
|
if (page_size < CANARY_SIZE || page_size < sizeof(size_t)) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
randombytes_buf(canary, sizeof canary);
|
||||||
|
@@ -549,7 +549,7 @@ _unprotected_ptr_from_user_ptr(void *const ptr)
|
||||||
|
page_mask = page_size - 1U;
|
||||||
|
unprotected_ptr_u = ((uintptr_t) canary_ptr & (uintptr_t) ~page_mask);
|
||||||
|
if (unprotected_ptr_u <= page_size * 2U) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
return (unsigned char *) unprotected_ptr_u;
|
||||||
|
}
|
||||||
|
@@ -579,7 +579,7 @@ _sodium_malloc(const size_t size)
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (page_size <= sizeof canary || page_size < sizeof unprotected_size) {
|
||||||
|
- sodium_misuse(); /* LCOV_EXCL_LINE */
|
||||||
|
+ sodium_misused(); /* LCOV_EXCL_LINE */
|
||||||
|
}
|
||||||
|
size_with_canary = (sizeof canary) + size;
|
||||||
|
unprotected_size = _page_round(size_with_canary);
|
||||||
|
@@ -732,7 +732,7 @@ sodium_pad(size_t *padded_buflen_p, unsigned char *buf,
|
||||||
|
xpadlen -= unpadded_buflen % blocksize;
|
||||||
|
}
|
||||||
|
if ((size_t) SIZE_MAX - unpadded_buflen <= xpadlen) {
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
}
|
||||||
|
xpadded_len = unpadded_buflen + xpadlen;
|
||||||
|
if (xpadded_len >= max_buflen) {
|
||||||
|
diff --git a/test/default/sodium_core.c b/test/default/sodium_core.c
|
||||||
|
index a3985b0e..74b21b27 100644
|
||||||
|
--- a/test/default/sodium_core.c
|
||||||
|
+++ b/test/default/sodium_core.c
|
||||||
|
@@ -32,7 +32,7 @@ main(void)
|
||||||
|
|
||||||
|
sodium_set_misuse_handler(misuse_handler);
|
||||||
|
#ifndef __EMSCRIPTEN__
|
||||||
|
- sodium_misuse();
|
||||||
|
+ sodium_misused();
|
||||||
|
printf("Misuse handler returned\n");
|
||||||
|
#else
|
||||||
|
printf("misuse_handler()\n");
|
||||||
|
|
||||||
|
commit d73eccad9a23f83eb2caadbc492b149380215289
|
||||||
|
Author: Emery Hemingway <ehmry@posteo.net>
|
||||||
|
Date: Tue Oct 20 19:17:50 2020 +0200
|
||||||
|
|
||||||
|
Define HAVE_LINUX_COMPATIBLE_GETRANDOM for Genode
|
||||||
|
|
||||||
|
diff --git a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
|
||||||
|
index 6657e8e6..6f0e3c09 100644
|
||||||
|
--- a/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
|
||||||
|
+++ b/src/libsodium/randombytes/sysrandom/randombytes_sysrandom.c
|
||||||
|
@@ -36,6 +36,8 @@
|
||||||
|
# if defined(__FreeBSD_version) && __FreeBSD_version >= 1200000
|
||||||
|
# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||||
|
# endif
|
||||||
|
+#elif defined(__GENODE__)
|
||||||
|
+# define HAVE_LINUX_COMPATIBLE_GETRANDOM
|
||||||
|
#endif
|
||||||
|
#if !defined(NO_BLOCKING_RANDOM_POLL) && defined(__linux__)
|
||||||
|
# define BLOCK_ON_DEV_RANDOM
|
Loading…
Reference in New Issue
Block a user