Home | History | Annotate | Download | only in common_files
      1 #!/bin/sh
      2 #
      3 # CDDL HEADER START
      4 #
      5 # The contents of this file are subject to the terms of the
      6 # Common Development and Distribution License (the "License").
      7 # You may not use this file except in compliance with the License.
      8 #
      9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10 # or http://www.opensolaris.org/os/licensing.
     11 # See the License for the specific language governing permissions
     12 # and limitations under the License.
     13 #
     14 # When distributing Covered Code, include this CDDL HEADER in each
     15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16 # If applicable, add the following below this CDDL HEADER, with the
     17 # fields enclosed by brackets "[]" replaced with your own identifying
     18 # information: Portions Copyright [yyyy] [name of copyright owner]
     19 #
     20 # CDDL HEADER END
     21 #
     22 #
     23 # Copyright 2008 Sun Microsystems, Inc.	 All rights reserved.
     24 # Use is subject to license terms.
     25 #
     26 # ident	"%Z%%M%	%I%	%E% SMI"
     27  
     28 while read src dest
     29 do
     30 	if [ ! -f $dest ] ; then
     31 		#
     32 		# new install or upgrade from much older OS revision
     33 		# just copy in the new base ipsecalgs file
     34 		#
     35 		cp $src $dest
     36 	else
     37 		#
     38 		# upgrade from a previous version of the ipsecalgs file
     39 		# There might be third party algorithms in this file and
     40 		# changes that need to be preserved, so we just substitute
     41 		# in the protocols and algorithms that we know we need to
     42 		# either update or revert from past mistakes.
     43 		#
     44 
     45 		#
     46 		# We construct the sed command like this to avoid
     47 		# lines greater than 80 characters
     48 		#
     49 		sedcmd="-e 's/CKM_BF_CBC/CKM_BLOWFISH_CBC/'"
     50 		sedcmd="${sedcmd} -e 's/CKM_BLOWFISH_CBC|128\/32-128,8/"
     51 		sedcmd="${sedcmd}CKM_BLOWFISH_CBC|128\/32-448,8/'"
     52 		sedcmd="${sedcmd} -e 's/AES_CBC|128|/AES_CBC|128\/128-256,64|/'"
     53 
     54 		eval sed $sedcmd $dest > $dest.$$
     55 		#
     56 		# Add in SHA-2 support if not already there
     57 		#
     58 		awk -F\| '\
     59 		BEGIN {sha256=0; sha384=0; sha512=0} \
     60 		/^#/ || /^$/ || /^PROTO/ {print; next}; \
     61 		{if ($2 == 2) {if ($3 == 5) {sha256=1}; \
     62 		    if ($3 == 6) {sha384=1}; if ($3 == 7) {sha512=1}; \
     63 		    print; next}}; \
     64 		{if ($2 == 3 && $3 == 0) \
     65 		    {if (!sha256) {print "ALG|2|5|hmac-sha256,sha256,sha-256,hmac-sha-256|CKM_SHA256_HMAC_GENERAL|256|16"; sha256=1}}; \
     66 		    {if (!sha384) {print "ALG|2|6|hmac-sha384,sha384,sha-384,hmac-sha-384|CKM_SHA384_HMAC_GENERAL|384|24";sha384=1}}; \
     67 		    {if (!sha512) {print "ALG|2|7|hmac-sha512,sha512,sha-512,hmac-sha-512|CKM_SHA512_HMAC_GENERAL|512|32";sha512=1}} print}' \
     68 		    $dest.$$ > $dest.2.$$
     69 		mv $dest.2.$$ $dest
     70 		rm $dest.$$
     71 	fi
     72 done
     73 exit 0
     74