From 3cfd20141aa1564fc6b37d2d3ebc72a37db17a25 Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Mon, 31 Oct 2022 10:32:59 -0400 Subject: [PATCH] Improved package signature verification --- helpers/DATA/keyring.gpg | Bin 0 -> 30904 bytes helpers/DATA/keyring.gpg.README | 5 ++++ helpers/config | 51 ++++++++++---------------------- 3 files changed, 21 insertions(+), 35 deletions(-) create mode 100644 helpers/DATA/keyring.gpg create mode 100644 helpers/DATA/keyring.gpg.README diff --git a/helpers/DATA/keyring.gpg b/helpers/DATA/keyring.gpg new file mode 100644 index 0000000000000000000000000000000000000000..c2c2169cec3bf65ad386262ef4f5c96d3df60c4c GIT binary patch literal 30904 zcmbsQb8w{Lp12Pu9oxplwr$(CZA>t+jfrh16DJefwrwX9>o;@u%)7g%PVINM-u%;* z?&s;Jy6URy!#fQ)A5^s5-x>)NsIF6SdO(0n%<)R6Nx1-KKe}2m>0ZxTVrAmOX}9z+ zDkqpqyIP|xvZjV`1{E8tGw^&WOdlDdWLgf!-)9PPrF;q0sNY+Ty`YpSt940&Mt8BlJYj5No- z)(k`I-h#3ns1a~P$8ZJ62XE??Ih`Q+^!MBWdq126XMpC+N1CJvz4bcB2WcnE!gcZPVaI_M5*9rY9_qk&H95_DRv=+E1xHu?09#eZM1-W0g&bpDVo$9c zhNZP>fJkVk;yYNzGM&?b$v5f33p*}}_C!NNVX@*iLTT+x`Vc`ubC6H(GuT58PP$Pl z8LAs|)vcD#wTy3~-{7)eq!z3nPi|iN@|Ufp)*(X!0E5HltXf{KxFMy5@XHV3Iu~>$ zS!J*lyf%*xSPE{V1a2mzt#{E8XE$YyK)LywVYCbImvSrq z1PF-{ORgcu*aJY>OmoURb!DR_J9$B0>JE?|VQ>`let-jk{QgBitpK<`_&Fj%0#)uu zAT)tQff`;$@-FWUVGkHP)EBKRKW5c_3$b{sR^_3#ENUovxshL$4Cwb_1xdFBnI~Ku z#|1zKL{Y2S9H%(aVXT)LSFxITIVaw9d-oom04qRHLKZcs7k${)hlE09gjO9{40P4m zNH5y~)gv+iy?pX5`(k!{GmbpkK@Z-aZCVxsL(cVr`?2rS4|8XLtXRr%`yVMg@I@CD9(7jXXc@G%oHzaA9Z0`gDqNe*u~a{^1jLAPU|F zX|Hju;tsWg7Vk&=gA7caKiBGK)5$JL%KSIcRH;OYX?#$NUvX4v;Jd@yC2c?;;1Hii z{`)P;o%=;zgI9ZIY?wzTQ-+Y`*gG|F2oJzke3-~8E*@U*_mwHC?`~;E(4hS`yXBw9 zX_xYXR1j{!4%Tk9{-P)!lVe*eX$1F4^hWm6&2)XM06;=vR};#et=aru5Bw_)VJd%v zOsYXbZli;>{iwinaF%(e>uvls0z9nKIcODXdKdBL-U_I8mPJ*PlY^9RCrNy9TX2tL zLE3(_!?oawUXv*J46Z50M_eKUe?Y1(GpOx#6L9?}KpP-)}!=~7`Z}Zd{lzlvrwsSkMvT|H{x6Y#)y@Wo{!cw5#Oi96OaMOxop>-=v5)|_{ zc~D@0KU4s4VE-#(6g)sV-tWNLYb?s-d0dS%(-tON+6|ycpp9gt>!*hO|MB=ZzDM zCvEK}fd)MTUTak~pj*jJc~|3(bSdte;|;cHbAO(o>HeM~Gb)#@YAah}?x&re5icAp z4=&QHh*jqop^xBRTq8J*<^x|6+FJq_7n2}9ZehI#I5Zw$qXrP-#WL;$Rjq6P(xy09 zS3U-66bn8%^N^91dD5@ZPYUMgPpfB{;PPif9wEJB&nBy9DLW7j4)x>fi=W}aN`|z7 z3Y`5zqORQG2XJdVo#bqNpSl?8)tII*_{b9KIKAUyk83gvpHdVc-9<(!njqHoqCQq~ zC@a_)1%~gQi>bZFII&WV!K67iO**7ssDhJ(BV;d$NJz?)EI^ z*=7wqCO*k6XXsP!1RA@s%|QZw?1?OuQtot8fC7M5(i4TR+C=X
    !a?ujHXde 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 Gng1V5MN9Pn literal 0 HcmV?d00001 diff --git a/helpers/DATA/keyring.gpg.README b/helpers/DATA/keyring.gpg.README new file mode 100644 index 0000000..2bff706 --- /dev/null +++ b/helpers/DATA/keyring.gpg.README @@ -0,0 +1,5 @@ +keyring.gpg contains a PGP/GPG key public ring (v4) with the Trisquel, Ubuntu, Debian and Tor archive signing keys. To add a new key to the keyring use this command: + +gpg --no-default-keyring --keyring gnupg-ring:$PWD/helpers/DATA/keyring.gpg --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys $KEYID +or +gpg --no-default-keyring --keyring gnupg-ring:$PWD/helpers/DATA/keyring.gpg --import key.asc diff --git a/helpers/config b/helpers/config index 4578d8a..1f49fb2 100755 --- a/helpers/config +++ b/helpers/config @@ -86,50 +86,36 @@ trap "rm -rf ${LOCAL_APT}" 0 HUP INT QUIT ILL ABRT FPE SEGV PIPE TERM mkdir -p ${LOCAL_APT}/var/lib/apt/partial mkdir -p ${LOCAL_APT}/var/cache/apt/archives/partial -mkdir -p ${LOCAL_APT}/etc/ +mkdir -p ${LOCAL_APT}/etc/apt/trusted.gpg.d mkdir -p ${LOCAL_APT}/var/lib/dpkg touch ${LOCAL_APT}/var/lib/dpkg/status -touch ${LOCAL_APT}/etc/trusted.gpg [ $UID = 0 ] && id _apt > /dev/null 2>&1 && chown _apt ${LOCAL_APT} -R cat << EOF > ${LOCAL_APT}/etc/apt.conf Dir::State "${LOCAL_APT}/var/lib/apt"; Dir::State::status "${LOCAL_APT}/var/lib/dpkg/status"; -Dir::Etc::SourceList "${LOCAL_APT}/etc/apt.sources.list"; +Dir::Etc::SourceList "${LOCAL_APT}/etc/apt/sources.list"; Dir::Etc::SourceParts ""; Dir::Cache "${LOCAL_APT}/var/cache/apt"; pkgCacheGen::Essential "none"; -Dir::Etc::Trusted "${LOCAL_APT}/etc/trusted.gpg"; +Dir::Etc::Trusted "${LOCAL_APT}/etc/apt/trusted.gpg.d/keyring.gpg"; Acquire::ForceIPv4 "true"; EOF -export TRUSTEDFILE=${LOCAL_APT}/etc/trusted.gpg +fetchkey(){ + echo Fetching key $1 from hkps://keyserver.ubuntu.com:443 + if ! gpg -q --no-default-keyring --keyring gnupg-ring:${LOCAL_APT}/etc/apt/trusted.gpg.d/keyring.gpg --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys $1 ; then + echo "W: invalid key from keyserver.ubuntu.com, fetching from db.debian.org" + gpg -q --no-default-keyring --keyring gnupg-ring:${LOCAL_APT}/etc/apt/trusted.gpg.d/keyring.gpg --keyserver hkps://keyring.debian.org:443 --recv-keys $1 + fi +} -if [ -f trusted.local.gpg ] -then -cp trusted.local.gpg "${LOCAL_APT}/etc/trusted.gpg" -else -# Trisquel key -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys B4EFB9F38D8AEBF1 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys B138CA450C05112F > /dev/null -# Ubuntu gpg keys -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 40976EAF437D05B5 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 3B4FE6ACC0B21F32 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 871920D1991BC93C > /dev/null -# Debian gpg keys -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 9D6D8F6BC857C906 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 8B48AD6246925553 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys DCC9EFBF77E11517 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 648ACFD622F3D138 > /dev/null -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --keyserver hkps://keyserver.ubuntu.com:443 --recv-keys 54404762BBB6E853 > /dev/null -# Tor gpg key -apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --import DATA/tor/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc -fi +cp DATA/keyring.gpg ${LOCAL_APT}/etc/apt/trusted.gpg.d/keyring.gpg # Also import the repository key optionally listed in the helper -[ "1$REPOKEY" != "1" ] && apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --recv-keys --keyserver hkps://keyserver.ubuntu.com:443 $REPOKEY +[ "1$REPOKEY" != "1" ] && fetchkey $REPOKEY -cat << EOF > ${LOCAL_APT}/etc/apt.sources.list +cat << EOF > ${LOCAL_APT}/etc/apt/sources.list deb-src $MIRROR $UPSTREAM main universe deb-src $MIRROR $UPSTREAM-updates main universe deb-src $MIRROR $UPSTREAM-security main universe @@ -171,14 +157,9 @@ fi # Verify it first if grep -q "BEGIN PGP SIGNATURE" *.dsc; then KEY=$(gpg2 --keyid-format 0xlong --verify *.dsc 2>&1 | grep 0x | sed 's/.*0x//' || true) - [ -z "$KEY" ] && KEY=$(gpgv --keyring ${LOCAL_APT}/etc/trusted.gpg *.dsc 2>&1 | egrep ".SA key" | sed 's/.*.SA key //' || true) - if ! apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --recv-keys --keyserver hkps://keyserver.ubuntu.com:443 $KEY > /dev/null; then - echo "W: invalid key from keyserver.ubuntu.com, fetching from db.debian.org" - apt-key --keyring ${LOCAL_APT}/etc/trusted.gpg adv --recv-keys --keyserver hkps://keyring.debian.org:443 $KEY > /dev/null - fi - touch ${LOCAL_APT}/keyring.gpg - gpg2 --keyring ${LOCAL_APT}/keyring.gpg --import ${LOCAL_APT}/etc/trusted.gpg - gpg2 --verify --keyring ${LOCAL_APT}/etc/trusted.gpg *.dsc + [ -z "$KEY" ] && KEY=$(gpgv --keyring ${LOCAL_APT}/etc/apt/trusted.gpg.d/keyring *.dsc 2>&1 | egrep ".SA key" | sed 's/.*.SA key //' || true) + fetchkey $KEY + gpg2 --verify --keyring ${LOCAL_APT}/etc/apt/trusted.gpg.d/keyring.gpg *.dsc [ -n SCHROOT_COMMAND ] && gpgconf --kill gpg-agent else echo WARNING! The dsc file is not gpg signed!