8fbd44b72fbc03d53a386ca8fa5f62253921f20a
[platform/upstream/cryptsetup.git] / misc / dracut_90reencrypt / parse-reencrypt.sh
1 #!/bin/sh
2
3 REENC=$(getargs rd.luks.reencrypt=)
4 REENC_DEV=$(echo $REENC | sed 's/:.*//')
5 REENC_SIZE=$(echo $REENC | sed -n 's/.*://p')
6
7 REENC_KEY=$(getargs rd.luks.reencrypt_key=)
8 if [ -z "$REENC_KEY" ] ; then
9     REENC_KEY=none
10 fi
11
12 REENC_SLOT=$(getargs rd.luks.reencrypt_keyslot=)
13 if [ -z "$REENC_SLOT" ] ; then
14     REENC_SLOT=any
15 fi
16
17 if [ -n "$REENC_DEV" ] ; then
18 {
19    printf 'SUBSYSTEM!="block", GOTO="reenc_end"\n'
20    printf 'ACTION!="add|change", GOTO="reenc_end"\n'
21    printf 'KERNEL!="%s", GOTO="reenc_end"\n' $REENC_DEV
22    printf 'ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="/sbin/initqueue \
23            --unique --onetime --name crypt-reencrypt-%%k \
24            /sbin/reencrypt $env{DEVNAME} %s"\n' "$REENC_KEY $REENC_SLOT $REENC_SIZE"
25    printf 'LABEL="reenc_end"\n'
26 } > /etc/udev/rules.d/69-reencryption.rules
27 fi