From afecd8751082649dec346cd1fc087f69b59bddf8 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Wed, 15 Apr 2009 12:41:42 +0000 Subject: initram: support for encrypted apkovls --- initramfs-init | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/initramfs-init b/initramfs-init index bec66db..c245a3a 100755 --- a/initramfs-init +++ b/initramfs-init @@ -64,6 +64,34 @@ retry_mount() { return 1 } +unpack_apkovl() { + local ovl="$1" + local dest="$2" + local suffix=${ovl##*.} + local i + if [ "$suffix" = "gz" ]; then + tar -C "$dest" -zxf "$ovl" + return $? + fi + + for i in $ALPINE_MNT/*/*/openssl-[0-9]*.apk $ALPINE_MNT/*/openssl-[0-9]*.apk; do + [ -f "$i" ] && tar -C / -zxf $i && break + done + + if ! openssl list-cipher-commands | grep "^$suffix$" > /dev/null; then + errstr="Cipher $suffix is not supported" + return 1 + fi + local count=0 + echo "" + while [ $count -lt 3 ]; do + openssl enc -d -$suffix -in "$ovl" | tar -C "$dest" -zx \ + 2>/dev/null && return 0 + count=$(( $count + 1 )) + done + return 1 +} + # gotta start from somewhere :) echo "Alpine Init $VERSION" @@ -222,8 +250,8 @@ fi if [ -f "$ovl" ]; then ebegin "Loading user settings from $ovl" - tar -C $NEWROOT -zxf "$ovl" - eend $? + unpack_apkovl "$ovl" $NEWROOT + eend $? $errstr umount /media/$i 2>/dev/null & pkgs=$(sed 's/\#.*//' $NEWROOT/etc/lbu/packages.list 2>/dev/null) fi -- cgit v1.2.3-60-g2f50