From 1c972cba145dc95cb0930a83caf191f1ef722f8b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 10 Feb 2015 11:54:06 +0100 Subject: Make libsodium an optional dependency --- perl/lib/Nix/Store.xs | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'perl') diff --git a/perl/lib/Nix/Store.xs b/perl/lib/Nix/Store.xs index 792d2f649..4c550cdb7 100644 --- a/perl/lib/Nix/Store.xs +++ b/perl/lib/Nix/Store.xs @@ -11,7 +11,9 @@ #include #include +#if HAVE_SODIUM #include +#endif using namespace nix; @@ -228,6 +230,7 @@ SV * hashString(char * algo, int base32, char * s) SV * signString(SV * secretKey_, char * msg) PPCODE: try { +#if HAVE_SODIUM STRLEN secretKeyLen; unsigned char * secretKey = (unsigned char *) SvPV(secretKey_, secretKeyLen); if (secretKeyLen != crypto_sign_SECRETKEYBYTES) @@ -237,6 +240,9 @@ SV * signString(SV * secretKey_, char * msg) unsigned long long sigLen; crypto_sign_detached(sig, &sigLen, (unsigned char *) msg, strlen(msg), secretKey); XPUSHs(sv_2mortal(newSVpv((char *) sig, sigLen))); +#else + throw Error("Nix was not compiled with libsodium, required for signed binary cache support"); +#endif } catch (Error & e) { croak(e.what()); } @@ -245,6 +251,7 @@ SV * signString(SV * secretKey_, char * msg) int checkSignature(SV * publicKey_, SV * sig_, char * msg) CODE: try { +#if HAVE_SODIUM STRLEN publicKeyLen; unsigned char * publicKey = (unsigned char *) SvPV(publicKey_, publicKeyLen); if (publicKeyLen != crypto_sign_PUBLICKEYBYTES) @@ -256,6 +263,9 @@ int checkSignature(SV * publicKey_, SV * sig_, char * msg) throw Error("signature is not valid"); RETVAL = crypto_sign_verify_detached(sig, (unsigned char *) msg, strlen(msg), publicKey) == 0; +#else + throw Error("Nix was not compiled with libsodium, required for signed binary cache support"); +#endif } catch (Error & e) { croak(e.what()); } -- cgit v1.2.3