From c2033df432af87d0176347858c7d11acfe2ed89f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 3 Dec 2012 23:04:47 +0100 Subject: build: Include a copy of Nix's libstore and daemon; build it. * configure.ac: Call `AC_USE_SYSTEM_EXTENSIONS', and `GUIX_SYSTEM_TYPE'. Add `--with-store-dir' option, and substitute `storedir'. Include `config-daemon.ac'. * config-daemon.ac: New file. * Makefile.am [BUILD_DAEMON]: Include `daemon.am'. * daemon.am: New file. * m4/guix.m4 (GUIX_SYSTEM_TYPE): New macro. * nix/libutil/gcrypt-hash.cc, nix/libutil/gcrypt-hash.hh, nix/libutil/md5.h, nix/libutil/sha1.h, nix/libutil/sha256.h, nix/nix-daemon/guix-daemon.cc, nix/nix-daemon/shared.hh: New files. --- nix/libutil/gcrypt-hash.cc | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 nix/libutil/gcrypt-hash.cc (limited to 'nix/libutil/gcrypt-hash.cc') diff --git a/nix/libutil/gcrypt-hash.cc b/nix/libutil/gcrypt-hash.cc new file mode 100644 index 0000000000..de7e5afc1a --- /dev/null +++ b/nix/libutil/gcrypt-hash.cc @@ -0,0 +1,50 @@ +/* Guix --- Nix package management from Guile. -*- coding: utf-8 -*- + Copyright (C) 2012 Ludovic Courtès + + This file is part of Guix. + + Guix is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or (at + your option) any later version. + + Guix is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Guix. If not, see . */ + +#include + +#include +#include + +extern "C" { + +void +guix_hash_init (struct guix_hash_context *ctx, gcry_md_algo_t algo) +{ + gcry_error_t err; + + err = gcry_md_open (&ctx->md_handle, algo, 0); + assert (err == GPG_ERR_NO_ERROR); +} + +void +guix_hash_update (struct guix_hash_context *ctx, const void *buffer, size_t len) +{ + gcry_md_write (ctx->md_handle, buffer, len); +} + +void +guix_hash_final (void *resbuf, struct guix_hash_context *ctx, + gcry_md_algo_t algo) +{ + memcpy (resbuf, gcry_md_read (ctx->md_handle, algo), + gcry_md_get_algo_dlen (algo)); + gcry_md_close (ctx->md_handle); +} + +} -- cgit v1.2.3