i.kcfconf revision 7c478bd95313f5f23a4c958a745db2134aa03244
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt#
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater# Use is subject to license terms.
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater#
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# CDDL HEADER START
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt#
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater# The contents of this file are subject to the terms of the
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# Common Development and Distribution License, Version 1.0 only
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# (the "License"). You may not use this file except in compliance
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater# with the License.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt#
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# or http://www.opensolaris.org/os/licensing.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# See the License for the specific language governing permissions
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# and limitations under the License.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt#
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# When distributing Covered Code, include this CDDL HEADER in each
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater# If applicable, add the following below this CDDL HEADER, with the
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# fields enclosed by brackets "[]" replaced with your own identifying
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# information: Portions Copyright [yyyy] [name of copyright owner]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# CDDL HEADER END
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# ident "%Z%%M% %I% %E% SMI"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# Class action script for "kcfconf" class files.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# This script appends the input file from the package to the
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# /etc/crypto/kcf.conf file.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# The syntax of the input file for a kernel software provider package is
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <provider_name>:supportedlist=<mechlist>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# where
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# <provider_name> ::= the kernel software module base name
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <mechlist> ::= <mechanism>{,<mechanism>}*
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <mechanism> ::= a mechanism name as specified by the RSA PKCS#11 spec.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# The syntax of the input file for a cryptographic provider device driver(s)
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# package is
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# driver_names=<driver_name_list>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# where
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <driver_name_list> ::= <name>{,<name>}*
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <name> ::= a device driver name
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User#
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userpkg_start="# Start $PKGINST"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userpkg_end="# End $PKGINST"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Usertmpfile=/tmp/$$kcfconf
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Usererror=no
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userwhile read src dest
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userdo
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User [ "$src" = /dev/null ] && continue
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ -f "$dest" ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # For multiple input files; exit if error occurred in previous
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # input file.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ "$error" = yes ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: failed to update $lastdest for $PKGINST."
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User exit 2
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater fi
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt lastdest=$dest
f8e3e03cacd16ffb923a9603fca23a9e1a1fee07Automatic Updater
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater #
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # If the package has been already installed, remove old entries
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater #
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater start=0;
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt end=0;
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User egrep -s "$pkg_start" $dest && start=1
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt egrep -s "$pkg_end" $dest && end=1
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt if [ $start -ne $end ]
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: missing Start or End delimiters for \
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater $PKGINST in $dest."
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater echo "$0: $dest may be corrupted and was not updated."
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater error=yes
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater continue
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater fi
77dccf2a5d9327d16b4374a135cdb99bdd48620eAutomatic Updater
77dccf2a5d9327d16b4374a135cdb99bdd48620eAutomatic Updater if [ $start -eq 1 ]
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User sed -e "/$pkg_start/,/$pkg_end/d" $dest > $tmpfile \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User else
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User cp $dest $tmpfile || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User fi
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User #
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater # Check the input file syntax and append the input entries
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # with the package delimiters.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User #
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater line_count=`wc -l $src | awk '{ print $1}'`
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater grep "driver_names" $src > /dev/null
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater if [ $? -eq 0 ]
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater then
7717ec7a6a898cdd3c35cbfba66010b7304ffd9bAutomatic Updater #
7717ec7a6a898cdd3c35cbfba66010b7304ffd9bAutomatic Updater # This is a device driver package.
7717ec7a6a898cdd3c35cbfba66010b7304ffd9bAutomatic Updater # - $src should contain only one line.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # - If syntax of $src is correct, append the package
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # start delimiter with the driver_names string.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt #
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ $line_count -ne 1 ]; then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: Syntax Error - $src for $PKGINST."
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User continue
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User else
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater echo "$pkg_start `cat $src`" >> $tmpfile \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User fi
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater else
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater #
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater # This is a kernel software provider package.
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater # - Each line in $src should contain "supportedlist".
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User # - If syntax of $src is correct, append the package
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User # start delimiter and the $src file.
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User #
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User supported_count=`grep supportedlist $src |wc -l`
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ $line_count -ne $supported_count ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User then
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater echo "$0: Syntax Error - $src for $PKGINST."
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User continue
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater else
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$pkg_start" >> $tmpfile || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User cat $src >> $tmpfile || error=yes
6f1205897504b8f50b1785975482c995888dd630Tinderbox User fi
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User fi
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$pkg_end" >> $tmpfile || error=yes
6f1205897504b8f50b1785975482c995888dd630Tinderbox User
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # Install the updated config file and clean up the tmp file
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ "$error" = no ]
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User mv $tmpfile $dest || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User fi
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater rm -f $tmpfile
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User else
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: ERROR - $dest doesn't exist for $PKGINST."
8ec3c085233cedb22b05da36e2773c8f357a7e45Automatic Updater exit 2
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User fi
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userdone
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox Userif [ "$error" = yes ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userthen
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User echo "$0: ERROR - failed to update $lastdest for $PKGINST."
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User exit 2
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox Userfi
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox Userexit 0
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User