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