]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[image] Add the "imgdecrypt" command
authorMichael Brown <mcb30@ipxe.org>
Thu, 29 Aug 2024 13:00:34 +0000 (14:00 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 29 Aug 2024 14:11:30 +0000 (15:11 +0100)
commit72316b820d4bdbf3d75a0ae7e13f1c3bc8e6ac29
tree111872793eecfcd754e93491c8d352bfb4e0e627
parent486b15b3c11692af4325cd7d0220cdb72ec27586
[image] Add the "imgdecrypt" command

Add the "imgdecrypt" command that can be used to decrypt a detached
encrypted data image using a cipher key obtained from a separate CMS
envelope image.  For example:

  # Create non-detached encrypted CMS messages
  #
  openssl cms -encrypt -binary -aes-256-gcm -recip client.crt \
              -in vmlinuz -outform DER -out vmlinuz.cms
  openssl cms -encrypt -binary -aes-256-gcm -recip client.crt \
              -in initrd.img -outform DER -out initrd.img.cms

  # Detach data from envelopes (using iPXE's contrib/crypto/cmsdetach)
  #
  cmsdetach vmlinuz.cms -d vmlinuz.dat -e vmlinuz.env
  cmsdetach initrd.img.cms -d initrd.img.dat -e initrd.img.env

and then within iPXE:

  #!ipxe
  imgfetch http://192.168.0.1/vmlinuz.dat
  imgfetch http://192.168.0.1/initrd.img.dat
  imgdecrypt vmlinuz.dat    http://192.168.0.1/vmlinuz.env
  imgdecrypt initrd.img.dat http://192.168.0.1/initrd.img.env
  boot vmlinuz

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/config/config.c
src/config/general.h
src/hci/commands/image_crypt_cmd.c [new file with mode: 0644]
src/include/usr/imgcrypt.h [new file with mode: 0644]
src/usr/imgcrypt.c [new file with mode: 0644]