aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake.lock17
-rw-r--r--flake.nix13
-rw-r--r--nix/ippcryptoshim.nix26
-rw-r--r--standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile9
4 files changed, 58 insertions, 7 deletions
diff --git a/flake.lock b/flake.lock
index fe1045b..b2ef9c5 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,21 @@
{
"nodes": {
+ "custom-nixpkgs": {
+ "locked": {
+ "lastModified": 1721657519,
+ "narHash": "sha256-GX9DU5wHfUsUlBNX5WZzLLj1SbawinMDPMCfwKuOKlU=",
+ "owner": "quapka",
+ "repo": "nixpkgs",
+ "rev": "951e69f7ca8f1ade27297bac8e5dc6e292d9be3b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "quapka",
+ "ref": "add-ipp-crypto",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
"flake-utils": {
"inputs": {
"systems": "systems"
@@ -87,6 +103,7 @@
},
"root": {
"inputs": {
+ "custom-nixpkgs": "custom-nixpkgs",
"flake-utils": "flake-utils",
"gradle2nix": "gradle2nix",
"nixpkgs": "nixpkgs_2"
diff --git a/flake.nix b/flake.nix
index 6d85575..7a8256b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -5,13 +5,14 @@
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
gradle2nix.url = "github:tadfisher/gradle2nix/03c1b713ad139eb6dfc8d463b5bd348368125cf1";
+ custom-nixpkgs.url = "github:quapka/nixpkgs/add-ipp-crypto"; # custom for of nixpkgs with ipp-crypto packaged
# FIXME how to add submodule declaratively?
# submodule = {
# url = ./
# };
};
- outputs = { self, nixpkgs, flake-utils, gradle2nix, ... }:
+ outputs = { self, nixpkgs, custom-nixpkgs, flake-utils, gradle2nix, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
patched_boringssl = with pkgs; pkgs.boringssl.overrideAttrs (final: prev: rec {
@@ -79,10 +80,15 @@
libresslShim = import ./nix/libresslshim.nix { pkgs = pkgs; libressl = libressl; };
boringsslShim = import ./nix/boringsslshim.nix { pkgs = pkgs; boringssl = patched_boringssl; };
mbedtlsShim = import ./nix/mbedtlsshim.nix { pkgs = pkgs; };
+ ippcryptoShim = import ./nix/ippcryptoshim.nix { pkgs = pkgs; ipp-crypto = customPkgs.ipp-crypto; };
+
overlays = [];
pkgs = import nixpkgs {
inherit system overlays;
};
+ customPkgs = import custom-nixpkgs {
+ inherit system overlays;
+ };
buildECTesterStandalone = { opensslVersion, opensslHash }: (
let
patched_openssl = pkgs.openssl.overrideAttrs (_old: rec {
@@ -283,6 +289,8 @@
nettle
# libressl
+ customPkgs.ipp-crypto
+
gmp
libgpg-error
wget
@@ -392,6 +400,9 @@
# ${buildLibreSSL}
# popd
# '';
+ IPP_CRYPTO_HEADER = "${customPkgs.ipp-crypto.dev}/include";
+ IPP_CRYPTO_LIB = "${customPkgs.ipp-crypto}/lib/";
+
};
}
diff --git a/nix/ippcryptoshim.nix b/nix/ippcryptoshim.nix
new file mode 100644
index 0000000..b8e06f1
--- /dev/null
+++ b/nix/ippcryptoshim.nix
@@ -0,0 +1,26 @@
+{
+ pkgs
+ , ipp-crypto
+}:
+ with pkgs; stdenv.mkDerivation rec {
+ name = "IppCryptoShim";
+ src = ../standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni;
+
+ buildInputs = [
+ ipp-crypto
+ pkg-config
+ jdk11_headless
+ ];
+
+ IPP_CRYPTO_HEADER = "${ipp-crypto.dev}/include";
+ IPP_CRYPTO_LIB = "${ipp-crypto}/lib/"
+
+ buildPhase = ''
+ make ippcrypto
+ '';
+
+ installPhase = ''
+ mkdir --parents $out/lib
+ cp mbedtls_provider.so $out/lib
+ '';
+}
diff --git a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile
index 32df65f..1b3b761 100644
--- a/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile
+++ b/standalone/src/main/resources/cz/crcs/ectester/standalone/libs/jni/Makefile
@@ -173,14 +173,11 @@ mbedtls.o: mbedtls.c
# Intel Performance Primitives crypto shim
ippcp: ippcp_provider.so
-lib_ippcp.so:
- cp $(PROJECT_ROOT_PATH)/ext/ipp-crypto/build/.build/RELEASE/lib/libippcp.so lib_ippcp.so
-
-ippcp_provider.so: ippcp.o c_utils.o | lib_timing.so lib_csignals.so lib_ippcp.so
- $(CC) $(LFLAGS) -o $@ -Wl,-rpath,'$$ORIGIN/lib' $^ -L. lib_ippcp.so -l:lib_timing.so -l:lib_csignals.so
+ippcp_provider.so: ippcp.o c_utils.o | lib_timing.so lib_csignals.so
+ $(CC) $(LFLAGS) -o $@ -Wl,-rpath,'$$ORIGIN/lib' $^ -L$(IPP_CRYPTO_LIB) -Wl,-Bstatic -l:libippcp.a -L. -Wl,-Bdynamic -l:lib_timing.so -l:lib_csignals.so
ippcp.o: ippcp.c
- $(CC) -I$(PROJECT_ROOT_PATH)/ext/ipp-crypto/build/.build/RELEASE/include/ $(CFLAGS) -c $<
+ $(CC) -I$(IPP_CRYPTO_HEADER) $(CFLAGS) -c $<
# Nettle shim