[Bug 2154120] Re: [SRU] gpg buggy on RISC-V when vector length /= 128B
Valentin Haudiquet
2154120 at bugs.launchpad.net
Fri May 29 11:45:36 UTC 2026
Can confirm that the upstream commit fixes the issue.
Fix is available for stonking in ppa:
https://launchpad.net/~vhaudiquet/+archive/ubuntu/lp2154120-gpg/+packages
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gnupg2 in Ubuntu.
https://bugs.launchpad.net/bugs/2154120
Title:
[SRU] gpg buggy on RISC-V when vector length /= 128B
Status in gnupg2 package in Ubuntu:
Invalid
Status in libgcrypt20 package in Ubuntu:
In Progress
Status in gnupg2 source package in Questing:
Invalid
Status in libgcrypt20 source package in Questing:
Invalid
Status in gnupg2 source package in Resolute:
Invalid
Status in libgcrypt20 source package in Resolute:
In Progress
Status in gnupg2 source package in Stonking:
Invalid
Status in libgcrypt20 source package in Stonking:
In Progress
Bug description:
[ Impact ]
GPG is broken on RISC-V when vector length (VLEN) doesn't equal 128B.
This has been fixed upstream:
https://github.com/gpg/libgcrypt/commit/3f684fc6ab3ac98320e245a06b3563ad37ec56f5
The upload backports the upstream commit as debian patch.
[ Test Plan ]
Start a RISC-V VM with QEMU, setting vector length to >128.
For this, check
https://documentation.ubuntu.com/hardware-support/boards/how-
to/ubuntu_supported/qemu-riscv/
for the full command, and modify it to set vlen:
qemu-system-riscv64 -cpu max,vlen=256 ...
Then, in the VM, run the following commands:
head -c 10000 /dev/urandom > in.bin
PW="testpw-correct-horse-battery-staple"
gpg --batch --pinentry-mode loopback --passphrase "$PW" --yes --symmetric \
--cipher-algo AES256 --output out.gpg in.bin
gpg --batch --pinentry-mode loopback --passphrase "$PW" --yes \
--decrypt --output dec.bin out.gpg
This should succeed with only a success message from gpg. However, it
currently returns:
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: encrypted message has been manipulated!
It might also be useful to check that basic GPG functionality still
works.
[ Where problems could occur ]
Given that this is a change in a library used by GPG, we need to make
sure that basic GPG features still work, or that could introduce
issues around apt and any other GPG user.
[ Other Info ]
Only Resolute and Stonking are affected. Questing does not have the
bug. Plucky, Noble and below do not have RISC-V vector support.
Original bug report:
GPG is broken on RISC-V when vector length (VLEN) doesn't equal 128B.
This has been fixed upstream:
https://github.com/gpg/libgcrypt/commit/3f684fc6ab3ac98320e245a06b3563ad37ec56f5
Test:
head -c 10000 /dev/urandom > in.bin
PW="testpw-correct-horse-battery-staple"
gpg --batch --pinentry-mode loopback --passphrase "$PW" --yes --symmetric \
--cipher-algo AES256 --output out.gpg in.bin
gpg --batch --pinentry-mode loopback --passphrase "$PW" --yes \
--decrypt --output dec.bin out.gpg
if cmp -s in.bin dec.bin; then
echo "PASS encrypt/decrypt"
else
echo "MISMATCH"
fi
Run this on x86 it works fine but run it on SpacemiT K3 with VLEN=256
it fails.
ProblemType: Bug
DistroRelease: Ubuntu 26.04
Package: gpg 2.4.8-4ubuntu3
Uname: Linux 6.18.3-5-spacemit-generic riscv64
ApportVersion: 2.34.0-0ubuntu2
Architecture: riscv64
CasperMD5CheckResult: unknown
CloudArchitecture: riscv64
CloudID: nocloud
CloudName: unknown
CloudPlatform: nocloud
CloudSubPlatform: config-disk (/dev/sda2)
Date: Sun May 24 10:40:29 2026
ProcEnviron:
LANG=C.UTF-8
PATH=(custom, no user)
SHELL=/bin/bash
TERM=tmux-256color
XDG_RUNTIME_DIR=<set>
SourcePackage: gnupg2
UpgradeStatus: No upgrade log present (probably fresh install)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gnupg2/+bug/2154120/+subscriptions
More information about the foundations-bugs
mailing list