bcachefs-tools has both libscrypt and libsodium as build dependencies,
but libsodium already includes the same scrypt implementation as libscrypt,
originally written by Colin Percival.
Use the libsodium copy, dropping the extra libscrypt dependency.
Explicitly adopt the default scrypt N, r and p values from libscrypt to
avoid unintended changes in the default work parameters for bcachefs.
Signed-off-by: Chris Webb <chris@arachsys.com>
- libblkid-dev
- libkeyutils-dev
- liblz4-dev
- libblkid-dev
- libkeyutils-dev
- liblz4-dev
- libsodium-dev
- liburcu-dev
- libzstd-dev
- libsodium-dev
- liburcu-dev
- libzstd-dev
* libblkid
* libkeyutils
* liblz4
* libblkid
* libkeyutils
* liblz4
* libsodium
* liburcu
* libuuid
* libsodium
* liburcu
* libuuid
Debian (Bullseye or later) and Ubuntu (20.04 or later): you can install these with
apt install -y pkg-config libaio-dev libblkid-dev libkeyutils-dev \
Debian (Bullseye or later) and Ubuntu (20.04 or later): you can install these with
apt install -y pkg-config libaio-dev libblkid-dev libkeyutils-dev \
- liblz4-dev libscrypt-dev libsodium-dev liburcu-dev libzstd-dev \
+ liblz4-dev libsodium-dev liburcu-dev libzstd-dev \
uuid-dev zlib1g-dev valgrind libudev-dev git build-essential \
python3 python3-docutils
uuid-dev zlib1g-dev valgrind libudev-dev git build-essential \
python3 python3-docutils
dnf install -y libaio-devel libsodium-devel \
libblkid-devel libzstd-devel zlib-devel userspace-rcu-devel \
lz4-devel libuuid-devel valgrind-devel keyutils-libs-devel \
dnf install -y libaio-devel libsodium-devel \
libblkid-devel libzstd-devel zlib-devel userspace-rcu-devel \
lz4-devel libuuid-devel valgrind-devel keyutils-libs-devel \
- libscrypt-devel findutils
Arch: install bcachefs-tools-git from the AUR.
Arch: install bcachefs-tools-git from the AUR.
-Or to build from source, install libscrypt from the AUR along with,
+Or to build from source, install build dependencies with
pacman -S base-devel libaio keyutils libsodium liburcu zstd valgrind
Then, just make && make install
pacman -S base-devel libaio keyutils libsodium liburcu zstd valgrind
Then, just make && make install
CFLAGS+=$(PKGCONFIG_CFLAGS)
LDLIBS+=$(PKGCONFIG_LDLIBS)
CFLAGS+=$(PKGCONFIG_CFLAGS)
LDLIBS+=$(PKGCONFIG_LDLIBS)
-LDLIBS+=-lm -lpthread -lrt -lscrypt -lkeyutils -laio -ldl
+LDLIBS+=-lm -lpthread -lrt -lkeyutils -laio -ldl
LDLIBS+=$(EXTRA_LDLIBS)
ifeq ($(PREFIX),/usr)
LDLIBS+=$(EXTRA_LDLIBS)
ifeq ($(PREFIX),/usr)
#include <keyutils.h>
#include <linux/random.h>
#include <keyutils.h>
#include <linux/random.h>
+#include <sodium/crypto_pwhash_scryptsalsa208sha256.h>
#include <uuid/uuid.h>
#include "libbcachefs/checksum.h"
#include <uuid/uuid.h>
#include "libbcachefs/checksum.h"
switch (BCH_CRYPT_KDF_TYPE(crypt)) {
case BCH_KDF_SCRYPT:
switch (BCH_CRYPT_KDF_TYPE(crypt)) {
case BCH_KDF_SCRYPT:
- ret = libscrypt_scrypt((void *) passphrase, strlen(passphrase),
- salt, sizeof(salt),
- 1ULL << BCH_KDF_SCRYPT_N(crypt),
- 1ULL << BCH_KDF_SCRYPT_R(crypt),
- 1ULL << BCH_KDF_SCRYPT_P(crypt),
- (void *) &key, sizeof(key));
+ ret = crypto_pwhash_scryptsalsa208sha256_ll(
+ (void *) passphrase, strlen(passphrase),
+ salt, sizeof(salt),
+ 1ULL << BCH_KDF_SCRYPT_N(crypt),
+ 1ULL << BCH_KDF_SCRYPT_R(crypt),
+ 1ULL << BCH_KDF_SCRYPT_P(crypt),
+ (void *) &key, sizeof(key));
if (ret)
die("scrypt error: %i", ret);
break;
if (ret)
die("scrypt error: %i", ret);
break;
if (passphrase) {
SET_BCH_CRYPT_KDF_TYPE(crypt, BCH_KDF_SCRYPT);
if (passphrase) {
SET_BCH_CRYPT_KDF_TYPE(crypt, BCH_KDF_SCRYPT);
- SET_BCH_KDF_SCRYPT_N(crypt, ilog2(SCRYPT_N));
- SET_BCH_KDF_SCRYPT_R(crypt, ilog2(SCRYPT_r));
- SET_BCH_KDF_SCRYPT_P(crypt, ilog2(SCRYPT_p));
+ SET_BCH_KDF_SCRYPT_N(crypt, ilog2(16384));
+ SET_BCH_KDF_SCRYPT_R(crypt, ilog2(8));
+ SET_BCH_KDF_SCRYPT_P(crypt, ilog2(16));
struct bch_key passphrase_key = derive_passphrase(crypt, passphrase);
struct bch_key passphrase_key = derive_passphrase(crypt, passphrase);
Priority: optional
Standards-Version: 3.9.5
Build-Depends: debhelper (>= 9), pkg-config, libaio-dev, libblkid-dev,
Priority: optional
Standards-Version: 3.9.5
Build-Depends: debhelper (>= 9), pkg-config, libaio-dev, libblkid-dev,
- libkeyutils-dev, liblz4-dev, libscrypt-dev, libsodium-dev, liburcu-dev,
+ libkeyutils-dev, liblz4-dev, libsodium-dev, liburcu-dev,
libzstd-dev, uuid-dev, zlib1g-dev, python3, python3-docutils
Homepage: https://bcachefs.org/
libzstd-dev, uuid-dev, zlib1g-dev, python3, python3-docutils
Homepage: https://bcachefs.org/
, pkg-config
, attr
, libuuid
, pkg-config
, attr
, libuuid
keyutils # libkeyutils
lz4 # liblz4
keyutils # libkeyutils
lz4 # liblz4
libsodium
liburcu
libuuid
libsodium
liburcu
libuuid
BuildRequires: libaio-devel
BuildRequires: libattr-devel
BuildRequires: libblkid-devel
BuildRequires: libaio-devel
BuildRequires: libattr-devel
BuildRequires: libblkid-devel
-BuildRequires: libscrypt-devel
BuildRequires: libsodium-devel
BuildRequires: libtool-ltdl-devel
BuildRequires: libuuid-devel
BuildRequires: libsodium-devel
BuildRequires: libtool-ltdl-devel
BuildRequires: libuuid-devel
Requires: libaio
Requires: libattr
Requires: libblkid
Requires: libaio
Requires: libattr
Requires: libblkid
Requires: libsodium
Requires: libtool-ltdl
Requires: libuuid
Requires: libsodium
Requires: libtool-ltdl
Requires: libuuid