~ubuntu-branches/ubuntu/maverick/cryptsetup/maverick-proposed

« back to all changes in this revision

Viewing changes to lib/gcrypt.c

  • Committer: Bazaar Package Importer
  • Author(s): Steve Langasek
  • Date: 2010-06-14 21:47:28 UTC
  • mfrom: (0.1.12 sid)
  • Revision ID: james.westby@ubuntu.com-20100614214728-tm8kdwg6chjejlbq
Tags: 2:1.1.2-1ubuntu1
* Merge from Debian unstable (LP: #594365).  Remaining changes:
  - debian/control:
    + Bump initramfs-tools Suggests to Depends: so system is not
      potentially rendered unbootable.
    + Depend on plymouth.   
  - Add debian/cryptdisks-{enable,udev}.upstart.
  - debian/cryptdisks.functions:
    + new function, crypttab_start_one_disk, to look for the named source
      device in /etc/crypttab (by device name, UUID, or label) and start it
      if configured to do so
    + wrap the call to /lib/cryptsetup/askpass with watershed, to make sure
      we only ever have one of these running at a time; otherwise multiple
      invocations could steal each other's input and/or write over each
      other's output
    + initially create the device under a temporary name and rename it only
      at the end using 'dmsetup rename', to ensure that upstart/mountall
      doesn't see our device before it's ready to go.
    + do_tmp should mount under /var/run/cryptsetup for changing the
      permissions of the filesystem root, not directly on /tmp, since
      mounting on /tmp a) is racy, b) confuses mountall something fierce.
    + when called by cryptdisks-enable, check that we don't already have a
      corresponding cryptdisks-udev job running (probably waiting for a
      passphrase); if there is, wait until it's finished before continuing.
  - debian/cryptdisks{,-early}.init: Make the 'start' action of the init
    script a no-op, this should be handled entirely by the upstart job;
    and fix the LSB header to not declare this should be started in
    runlevel 'S'
  - debian/cryptsetup.postinst: Remove any symlinks from /etc/rcS.d on
    upgrade. 
  - debian/rules: Do not install start symlinks for init scripts, and
    install debian/cryptdisks-{enable,udev}.upstart scripts.
  - Add debian/cryptsetup.apport: Apport package hook. Install in
    debian/rules and create dir in debian/cryptsetup.dirs.
  - debian/rules: link dynamically against libgcrypt and libgpg-error.
  - debian/cryptsetup.postrm: call update-initramfs on package removal.
* Dropped changes, merged/superseded in Debian:
  - Add ext4 support to passdev.
  - cryptroot-hook: don't call copy_modules_dir with empty arguments when
    archcrypto isn't found
  - Set USPLASH=y and FRAMEBUFFER=y in the hook config to pull plymouth into
    the initramfs.
  - change interaction to use plymouth directly if present, and if not, to
    fall back to /lib/cryptsetup/askpass as before
  - cryptdisks.functions: replace 'echo -e' bashism with 'printf'.
  - debian/initramfs/cryptroot-script: if plymouth is present in the
    initramfs, use this directly, bypassing the cryptsetup askpass script
  - debian/initramfs/cryptroot-hook: Properly anchor our regexps when
    grepping /etc/crypttab so that we don't incorrectly match device names
    that are substrings of one another.
  - debian/initramfs/cryptroot-script: Don't leak /conf/conf.d/cryptroot
    file descriptor to subprocesses.
  - Fix grammar error in debian/initramfs/cryptroot-script
    ("setup" -> "set up")
  - debian/initramfs/cryptroot-script: Fix this to work with current
    initramfs-tools:
    + Source /scripts/functions after checking for prerequisites.
    + prereqs(): Do not assume we are running within initramfs, and
      calculate relative path correctly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include <stdlib.h>
2
2
#include <string.h>
3
3
#include <ctype.h>
 
4
#include <errno.h>
4
5
#include <gcrypt.h>
5
6
 
6
7
#include "libcryptsetup.h"
12
13
int init_crypto(void)
13
14
{
14
15
        if (!gcry_control (GCRYCTL_INITIALIZATION_FINISHED_P)) {
15
 
                //if (!gcry_check_version (GCRYPT_VERSION))
16
 
                //      return -ENOSYS;
 
16
                if (!gcry_check_version (GCRYPT_REQ_VERSION))
 
17
                        return -ENOSYS;
 
18
 
 
19
/* FIXME: If gcrypt compiled to support POSIX 1003.1e capabilities,
 
20
 * it drops all privileges during secure memory initialisation.
 
21
 * For now, the only workaround is to disable secure memory in gcrypt.
 
22
 * cryptsetup always need at least cap_sys_admin privilege for dm-ioctl
 
23
 * and it locks its memory space anyway.
 
24
 */
 
25
#if 0
 
26
                log_dbg("Initializing crypto backend (secure memory disabled).");
 
27
                gcry_control (GCRYCTL_DISABLE_SECMEM);
 
28
#else
 
29
                log_dbg("Initializing crypto backend (using secure memory).");
17
30
                gcry_control (GCRYCTL_SUSPEND_SECMEM_WARN);
18
31
                gcry_control (GCRYCTL_INIT_SECMEM, 16384, 0);
19
32
                gcry_control (GCRYCTL_RESUME_SECMEM_WARN);
 
33
#endif
20
34
                gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
21
35
        }
22
36