Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sbin/cgdconfig Initial checkin of cgdconfig(8), a program to...



details:   https://anonhg.NetBSD.org/src/rev/2a2d07f7ebea
branches:  trunk
changeset: 537688:2a2d07f7ebea
user:      elric <elric%NetBSD.org@localhost>
date:      Fri Oct 04 18:37:19 2002 +0000

description:
Initial checkin of cgdconfig(8), a program to configure a cgd.

diffstat:

 sbin/cgdconfig/Makefile       |   14 +
 sbin/cgdconfig/cgdconfig.8    |  249 ++++++++++++++++++
 sbin/cgdconfig/cgdconfig.c    |  575 +++++++++++++++++++++++++++++++++++++++++
 sbin/cgdconfig/params.c       |  580 ++++++++++++++++++++++++++++++++++++++++++
 sbin/cgdconfig/params.h       |   84 ++++++
 sbin/cgdconfig/pkcs5_pbkdf2.c |  161 +++++++++++
 sbin/cgdconfig/pkcs5_pbkdf2.h |   40 ++
 sbin/cgdconfig/utils.c        |  122 ++++++++
 sbin/cgdconfig/utils.h        |   44 +++
 9 files changed, 1869 insertions(+), 0 deletions(-)

diffs (truncated from 1905 to 300 lines):

diff -r a83bf0ec97fd -r 2a2d07f7ebea sbin/cgdconfig/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/cgdconfig/Makefile   Fri Oct 04 18:37:19 2002 +0000
@@ -0,0 +1,14 @@
+# $NetBSD: Makefile,v 1.1 2002/10/04 18:37:19 elric Exp $
+
+PROG=  cgdconfig
+MAN=   cgdconfig.8
+
+SRCS=  cgdconfig.c             \
+       pkcs5_pbkdf2.c          \
+       params.c                \
+       utils.c
+
+DPADD=  ${LIBUTIL} ${LIBCRYPTO}
+LDADD=  -lutil -lcrypto
+
+.include <bsd.prog.mk>
diff -r a83bf0ec97fd -r 2a2d07f7ebea sbin/cgdconfig/cgdconfig.8
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/cgdconfig/cgdconfig.8        Fri Oct 04 18:37:19 2002 +0000
@@ -0,0 +1,249 @@
+.\" $NetBSD: cgdconfig.8,v 1.1 2002/10/04 18:37:19 elric Exp $
+.\"
+.\" Copyright (c) 2002, The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Roland C. Dowdeswell.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\"    must display the following acknowledgement:
+.\"        This product includes software developed by the NetBSD
+.\"        Foundation, Inc. and its contributors.
+.\" 4. Neither the name of The NetBSD Foundation nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd September 23, 2002
+.Dt CGDCONFIG 8
+.Os
+.Sh NAME
+.Nm cgdconfig
+.Nd configuration utility for the cryptographic disk driver
+.Sh SYNOPSIS
+.Nm ""
+.Op Fl nv
+.Ar cgd dev
+.Op Ar paramsfile
+.Nm ""
+.Fl C
+.Op Fl nv
+.Op Fl f Ar configfile
+.Nm ""
+.Fl U
+.Op Fl nv
+.Op Fl f Ar configfile
+.Nm ""
+.Fl g
+.Op Fl nrv
+.Op Fl i Ar ivmeth
+.Op Fl k Ar kgmeth
+.Op Fl o Ar outfile
+.Ar alg
+.Op Ar keylen
+.Nm ""
+.Fl s
+.Op Fl nv
+.Op Fl i Ar ivmeth
+.Ar cgd
+.Ar dev
+.Ar alg
+.Op Ar keylen
+.Nm ""
+.Fl u
+.Op Fl nv
+.Ar cgd
+.Sh DESCRIPTION
+.Nm
+is used to configure and unconfigure cryptographic disk devices (cgds)
+and to maintain the configuration files that are associated with them.
+For more information about cgd see
+.Xr cgd 4 .
+.Pp
+The options are as follows:
+.Bl -tag -width configfilexxxx
+.It Fl C
+Configure all the devices listed in the cgd configuration file.
+.It Fl f Ar configfile
+Specify the configuration file explicitly, rather than defaulting to
+.Pa /etc/cgd/cgd.conf .
+.It Fl g
+Generate a paramsfile, stored as
+.Pa paramsfile .
+.It Fl i Ar ivmeth
+Specify the IV method.
+.It Fl k Ar kgmeth
+Specify the key generation method.
+.It Fl o Ar outfile
+When generating a
+.Ar paramsfile ,
+store it in
+.Ar outfile .
+.It Fl s
+Read the key from stdin.
+.It Fl U
+Unconfigure all the devices listed in the cgd configuration file.
+.It Fl u
+Unconfigure a cgd.
+.It Fl v
+Be verbose.  May be specified multiple times.
+.El
+.Pp
+For more information about the cryptographic algorithms and IV methods
+supported, please refer to
+.Xr cgd 4 .
+.Ss Key Generation Methods
+The Key Generation Method refers to how the key should be generated.
+The methods and descriptions are as follows:
+.Bl -tag -width indentxxxxxx
+.It pkcs5_pbkdf2
+This method requires a passphrase which is entered at configuration
+time.  It is a salted hmac-based scheme detailed in ``PKCS#5 v2.0:
+Password-Based Cryptography Standard'', RSA Laboratories, March
+25, 1999, pages 8-10.  PKCS #5 was also republished as RFC 2898.
+.It randomkey
+The method simply reads
+.Pa /dev/random
+and uses the resulting bits as the key.  It does not require a
+passphrase to be entered.  This method is typically used to present
+disk devices that do not need to survive a reboot, such as the swap
+partition.
+.El
+.Ss /etc/cgd/cgd.conf
+The file
+.Pa /etc/cgd/cgd.conf
+is used to configure
+.Nm
+if either of
+.Fl C
+or
+.Fl U
+are specified.  Each line of the file is composed of either two or three
+tokens: cgd, target, and optional paramsfile.
+.Pp
+A
+.Sq \&#
+character is interpreted as a comment and indicated that the
+rest of the line should be ignored.  A
+.Sq \e
+at the end of a line indicates that the next line is a continuation of
+the current line.
+.Pp
+See
+.Sx EXAMPLES
+for an example of
+.Pa /etc/cgd/cgd.conf .
+.Ss Parameters File
+The Parameters File contains the required information to generate the
+key and configure a device.  These files are typically generated by with
+the
+.Fl g
+flag and not edited by hand.  When a device is configured the default
+parameters file is constructed by taking the basename of the target disk
+and prepending
+.Pa /etc/cgd/
+to it.  E.g.: if the target is
+.Pa /dev/sd0h ,
+then the default parameters file will be
+.Pa /etc/cgd/sd0h .
+.Pp
+The parameters file contains a list of key-value pairs which are
+specified one per line.  Comments and line continuation work in the
+same way as for
+.Pa /etc/cgd/cgd.conf .
+.Pp
+The keys are as follows:
+.Bl -tag -width indentxxxxxxx
+.It algorithm
+The cryptographic algorithm.
+.It iv-method
+The IV generation method.
+.It keylength
+The length of the key.
+.It keygen_method
+The method used to generate the key.
+.It keygen_salt
+If the keygen_method requires a salt, then this is the salt.  It is
+base64 encoded.
+.It xor_key
+If this is present, then it will be XOR'ed with the generated key before
+the device is configured.  This can be used if the parameters file is
+stored on separate removable media, e.g. USB mass storage, to ensure that
+the generated key is immune to passphrase-guessing attacks.  It is not
+valuable unless the parameters file is stored on removable media.  It is
+base64 encoded.
+.El
+.Sh FILES
+.Bl -tag -width indentxxxxxxxxxxxxxxxxxx -compact
+.It Pa /etc/cgd/
+configuration directory, used to store paramsfiles.
+.It Pa /etc/cgd/cgd.conf
+cgd configuration file.
+.El
+.Sh EXAMPLES
+To set up and configure a cgd that uses AES with a 192 bit key
+in CBC mode with the IV Method "encblkno" (encrypted block number):
+.Bd -literal
+       # cgdconfig -g /etc/cgd/wd0e aes-cbc 192
+       # cgdconfig cgd0 /dev/wd0e
+       /dev/wd0e's passphrase:
+.Ed
+.Pp
+To configure a cgd that uses Blowfish with a 200 bit key that it
+reads from stdin:
+.Bd -literal
+       # cgdconfig -s cgd0 /dev/sd0h blowfish-cbc 200
+.Ed
+.Pp
+An example
+.Pa /etc/cgd/cgd.conf :
+.Bd -literal
+       #
+       # /etc/cgd/cgd.conf
+       # Configuration file for cryptographic disk devices
+       #
+
+       # cgd           target          [paramsfile]
+       cgd0            /dev/wd0e
+       cgd1            /dev/sd0h       /usr/local/etc/cgd/sd0h
+.Ed
+.Pp
+Note that this will store the parameters file as
+.Pa /etc/cgd/wd0e .
+And use the entered passphrase to generate the key.
+.Sh SEE ALSO
+.Xr cgd 4
+.Pp
+``PKCS #5 v2.0: Password-Based Cryptography Standard'', RSA Laboratories,
+March 25, 1999.
+.Sh HISTORY
+A
+.Nm
+utility appeared in
+.Nx 1.6.1 .
+.Sh BUGS
+Since
+.Nm
+uses
+.Xr getpass 3
+to read in the passphrase, it is limited to 128 characters.
diff -r a83bf0ec97fd -r 2a2d07f7ebea sbin/cgdconfig/cgdconfig.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/cgdconfig/cgdconfig.c        Fri Oct 04 18:37:19 2002 +0000
@@ -0,0 +1,575 @@
+/* $NetBSD: cgdconfig.c,v 1.1 2002/10/04 18:37:20 elric Exp $ */
+
+/*-
+ * Copyright (c) 2002 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Roland C. Dowdeswell.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *        This product includes software developed by the NetBSD
+ *        Foundation, Inc. and its contributors.
+ * 4. Neither the name of The NetBSD Foundation nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *



Home | Main Index | Thread Index | Old Index