summaryrefslogtreecommitdiff
path: root/app-crypt/gnupg
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-06-11 14:17:10 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-06-11 14:17:10 +0100
commit5adfd733728a4f14df5665f4c2a604a7356e5f19 (patch)
treef2938c4a08576b45508b02481edfec55eac3ac8b /app-crypt/gnupg
parentfbba40085f5d1591a67b49f5aa48b4071b7560f1 (diff)
gentoo auto-resync : 11:06:2023 - 14:17:09
Diffstat (limited to 'app-crypt/gnupg')
-rw-r--r--app-crypt/gnupg/Manifest2
-rw-r--r--app-crypt/gnupg/files/gnupg-2.4.2-fix-emacs.patch564
-rw-r--r--app-crypt/gnupg/gnupg-2.4.2-r1.ebuild192
3 files changed, 758 insertions, 0 deletions
diff --git a/app-crypt/gnupg/Manifest b/app-crypt/gnupg/Manifest
index 2bcb710a2f62..ed1f1c8d0b4a 100644
--- a/app-crypt/gnupg/Manifest
+++ b/app-crypt/gnupg/Manifest
@@ -3,6 +3,7 @@ AUX dirmngr.service 212 BLAKE2B 7a3af856305eb4b00929aaf029dd4e5c84376df4f30add76
AUX dirmngr.socket 204 BLAKE2B 7cf60bfd5eaf1809e0a0eb86efaa8f7f07681e351e9c0cf12127f8b29bd4f989f5fee159e7978343d45112945483b3e7b72ea9c085d00f7ee3bc0480b269b36d SHA512 9495cdc61a9cca3156d4739e5f72c2f7d3a80e45030f1a5ae14cba7f9de98ef7fabd8d40eb18eb8824b792ed03c566e317d36183372cd4245b8bd86b6167d4b5
AUX gnupg-2.1.20-gpgscm-Use-shorter-socket-path-lengts-to-improve-tes.patch 1048 BLAKE2B 36f37b74da309100191f4d8f9c27d08a1b00d2d30fbaf169dbb74ebbe42293357a4fb62332e286fe5725dcfdc30645a602dc2a51c51924b06215b68fd5235658 SHA512 fd12827150e96cd7979ea9611d64ed4ab9e6c61cfecdd697b8fb4d162f20985b734c2bfc365a921809b9029e86a85a9b36c10ec472b3dd49c25ea18f5aef56ce
AUX gnupg-2.2.40-fix-no-ldap-build.patch 1017 BLAKE2B b260be86597a20ac1daa331d87fa741f1e17bdf65ca81f1e24d5465292567f16c6320271adbdf74cc2f93f2b8d8fda799a23bfedc45de9ce63fe34803da4eea2 SHA512 5a08a2e6737203761358adadfbc781f81923cf1add2614666dc47d25cd012e71779d749cc614f86c73f41d38ff05c2223bfe2b1f409879f020f1343edcb4b0a5
+AUX gnupg-2.4.2-fix-emacs.patch 16897 BLAKE2B 8d810abf26b4fbc3a6119d5b0b3c8048a82262249b2b61fbfaa01792229d4ac6277cb2b20f8e8b2fac36a201d4c0b8980e6f7c63293d2edbdb379b5d1123112e SHA512 1b2d89c5203cabcc7bdce9e4a665e708d9610e7da347a653e8c60e0a95f95605234ea953ca0ba6eb0157743d231ed52c00240f02a181640aee3b87e963e42322
AUX gpg-agent-browser.socket 298 BLAKE2B 0b08e5e60ced5e09a485506a52c1da35ed6e557fc36021d0c5f5f1ade19e7dd1d67096110eebe7955246eea53f21b2bdc3ab9f3a660ed8be90ab609ce7126008 SHA512 8dfdd132f991be23aa29ea36d2cfbfd36cdd5c3f7243636fb82ee99e5a427eccbdec69d51732ad78b9592a307eb2a0044c413635e03a6cadc94b7719388b86a7
AUX gpg-agent-extra.socket 281 BLAKE2B 2b8edd4454fece75535e84a2ee7daffa764395a99fbfbcc1d17673220795955b4bd62a447776cbe8a2b1a790da9104465c15f47ae0ea3c5d20514cf93db27922 SHA512 b0bfa5c7ecdb541684c56938f97660fd9efce7df2ec6bdf8de95cca9ed90323a7ca796c3e886fc081b11eeff1c2632e6c20ddcbf23e14286993fa8ff0ba08804
AUX gpg-agent-ssh.socket 308 BLAKE2B bacd09131082ee4bd440568b68065fb148c90a620e6628796bb9f3a2957a13860d15ce548e39ce10bc8749ebeabd7dcd0e893db49df295c9126078fc3de76619 SHA512 202bc5c9c7f9c4e97f53626c906ea455d6d4497cc03272c52f7b653cb5d5dc23850b85f939b88d04bbe70e309ad007415401298c9d04cb9b60329ad9e550e93d
@@ -16,5 +17,6 @@ DIST gnupg-2.4.2.tar.bz2 7346587 BLAKE2B 7a5aecca25d87f5f531576c8db1629908d97381
DIST gnupg-2.4.2.tar.bz2.sig 119 BLAKE2B da10bc6d93e5bd96572d6e03b99595eb3f3a5e2e53767a235f9e28878a294e6f444c5cee3a44579f6593582e5c4d85e99e963f2eb7ad2d64aa3a54136c39ffef SHA512 d08cb718a8656efb922f2591ec295e678687fe5f3a26459498952d28f4eea4f8368ea896c2908f58e3d3d8ea49faf865a1c146dda1b24f15bf8d37dce3eac868
EBUILD gnupg-2.2.41.ebuild 5518 BLAKE2B abcaa31dea56b63a50618745aadc8833329f6320403408a7291bcd3de3e9ed2286a9a0285c8a4abda1645246f56b8a0a31789f6ab40a67a6e137c999af97fa06 SHA512 6d5a8a10914c49c6ed65a59dc3f136d2929b98e64f78d3fd47d1242f8ac5729d888256411e96b7d2adffda6e1e2bd29ec1f07ec7d3800e8f52e1683541e9c4e0
EBUILD gnupg-2.4.1.ebuild 6065 BLAKE2B 13bf5d706a1db6c17a8fa178271bba7fa92b01fbc1200cba07cb7adb9a8764af94e28f278bae5bebcf0470a54e5e04cb96919c71139348ffa1a1eeeba9938379 SHA512 12bb9c684af775cd014aa0afae35c65cecd679afc8c8027f267030540e02fcdbb8a1555af070174d11948bda2beac7484ddbf6d193693ab42bdf1aa31ff0e1e9
+EBUILD gnupg-2.4.2-r1.ebuild 6108 BLAKE2B 84339e0dd69d11a6278d07a3e169250dea964a3ab52ae1213d3d04e7ecfae855f73ccf576cb4c9da6489ea0ff4e379fb5db3006f8643d5db1bd8e4735eecb440 SHA512 a5fe1abc39a3bcac72b9df9c10623a87284d24565cc1125b356e8e6cf8cb4558229166fc205755066365275df8395c619874b8830d9e4ff9f135fb9a94698b13
EBUILD gnupg-2.4.2.ebuild 6065 BLAKE2B 13bf5d706a1db6c17a8fa178271bba7fa92b01fbc1200cba07cb7adb9a8764af94e28f278bae5bebcf0470a54e5e04cb96919c71139348ffa1a1eeeba9938379 SHA512 12bb9c684af775cd014aa0afae35c65cecd679afc8c8027f267030540e02fcdbb8a1555af070174d11948bda2beac7484ddbf6d193693ab42bdf1aa31ff0e1e9
MISC metadata.xml 1189 BLAKE2B dae783678abfe0bae095970d96d952f591a569debad411708d29a2f128c6a291b73a33ee0b3491a6a5ec44c11f56d33c1531022e0ef9eaad3326c9cd0f79e3fb SHA512 bc7d6a9ceda213c134d9afc527fe0b0c87a4886a171b7a1e1f662f3978fec5e71323bae4c9f3882e1d763d5738446f161265070a8e513a59fa62ef0f792e9fa5
diff --git a/app-crypt/gnupg/files/gnupg-2.4.2-fix-emacs.patch b/app-crypt/gnupg/files/gnupg-2.4.2-fix-emacs.patch
new file mode 100644
index 000000000000..2e9141ab579b
--- /dev/null
+++ b/app-crypt/gnupg/files/gnupg-2.4.2-fix-emacs.patch
@@ -0,0 +1,564 @@
+https://bugs.gentoo.org/907839
+https://dev.gnupg.org/T6481
+https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=2f872fa68c6576724b9dabee9fb0844266f55d0d
+
+From 2f872fa68c6576724b9dabee9fb0844266f55d0d Mon Sep 17 00:00:00 2001
+From: NIIBE Yutaka <gniibe@fsij.org>
+Date: Wed, 24 May 2023 10:36:04 +0900
+Subject: [PATCH] gpg: Report BEGIN_* status before examining the input.
+
+* common/miscellaneous.c (is_openpgp_compressed_packet)
+(is_file_compressed): Moved to ...
+* common/iobuf.c: ... in this file.
+(is_file_compressed): Change the argument to INP, the iobuf.
+* common/util.h (is_file_compressed): Remove.
+* common/iobuf.h (is_file_compressed): Add.
+* g10/cipher-aead.c (write_header): Don't call write_status_printf
+here.
+(cipher_filter_aead): Call write_status_printf when called with
+IOBUFCTRL_INIT.
+* g10/cipher-cfb.c (write_header): Don't call write_status_printf
+here.
+(cipher_filter_cfb): Call write_status_printf when called with
+IOBUFCTRL_INIT.
+* g10/encrypt.c (encrypt_simple): Use new is_file_compressed function,
+after call of iobuf_push_filter.
+(encrypt_crypt): Likewise.
+* g10/sign.c (sign_file): Likewise.
+
+--
+
+GnuPG-bug-id: 6481
+Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
+--- a/common/iobuf.c
++++ b/common/iobuf.c
+@@ -3057,3 +3057,123 @@ iobuf_skip_rest (iobuf_t a, unsigned long n, int partial)
+ }
+ }
+ }
++
++
++/* Check whether (BUF,LEN) is valid header for an OpenPGP compressed
++ * packet. LEN should be at least 6. */
++static int
++is_openpgp_compressed_packet (const unsigned char *buf, size_t len)
++{
++ int c, ctb, pkttype;
++ int lenbytes;
++
++ ctb = *buf++; len--;
++ if (!(ctb & 0x80))
++ return 0; /* Invalid packet. */
++
++ if ((ctb & 0x40)) /* New style (OpenPGP) CTB. */
++ {
++ pkttype = (ctb & 0x3f);
++ if (!len)
++ return 0; /* Expected first length octet missing. */
++ c = *buf++; len--;
++ if (c < 192)
++ ;
++ else if (c < 224)
++ {
++ if (!len)
++ return 0; /* Expected second length octet missing. */
++ }
++ else if (c == 255)
++ {
++ if (len < 4)
++ return 0; /* Expected length octets missing */
++ }
++ }
++ else /* Old style CTB. */
++ {
++ pkttype = (ctb>>2)&0xf;
++ lenbytes = ((ctb&3)==3)? 0 : (1<<(ctb & 3));
++ if (len < lenbytes)
++ return 0; /* Not enough length bytes. */
++ }
++
++ return (pkttype == 8);
++}
++
++
++/*
++ * Check if the file is compressed, by peeking the iobuf. You need to
++ * pass the iobuf with INP. Returns true if the buffer seems to be
++ * compressed.
++ */
++int
++is_file_compressed (iobuf_t inp)
++{
++ int i;
++ char buf[32];
++ int buflen;
++
++ struct magic_compress_s
++ {
++ byte len;
++ byte extchk;
++ byte magic[5];
++ } magic[] =
++ {
++ { 3, 0, { 0x42, 0x5a, 0x68, 0x00 } }, /* bzip2 */
++ { 3, 0, { 0x1f, 0x8b, 0x08, 0x00 } }, /* gzip */
++ { 4, 0, { 0x50, 0x4b, 0x03, 0x04 } }, /* (pk)zip */
++ { 5, 0, { '%', 'P', 'D', 'F', '-'} }, /* PDF */
++ { 4, 1, { 0xff, 0xd8, 0xff, 0xe0 } }, /* Maybe JFIF */
++ { 5, 2, { 0x89, 'P','N','G', 0x0d} } /* Likely PNG */
++ };
++
++ if (!inp)
++ return 0;
++
++ for ( ; inp->chain; inp = inp->chain )
++ ;
++
++ buflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof buf, buf);
++ if (buflen < 0)
++ {
++ buflen = 0;
++ log_debug ("peeking at input failed\n");
++ }
++
++ if ( buflen < 6 )
++ {
++ return 0; /* Too short to check - assume uncompressed. */
++ }
++
++ for ( i = 0; i < DIM (magic); i++ )
++ {
++ if (!memcmp( buf, magic[i].magic, magic[i].len))
++ {
++ switch (magic[i].extchk)
++ {
++ case 0:
++ return 1; /* Is compressed. */
++ case 1:
++ if (buflen > 11 && !memcmp (buf + 6, "JFIF", 5))
++ return 1; /* JFIF: this likely a compressed JPEG. */
++ break;
++ case 2:
++ if (buflen > 8
++ && buf[5] == 0x0a && buf[6] == 0x1a && buf[7] == 0x0a)
++ return 1; /* This is a PNG. */
++ break;
++ default:
++ break;
++ }
++ }
++ }
++
++ if (buflen >= 6 && is_openpgp_compressed_packet (buf, buflen))
++ {
++ return 1; /* Already compressed. */
++ }
++
++ return 0; /* Not detected as compressed. */
++}
+--- a/common/iobuf.h
++++ b/common/iobuf.h
+@@ -629,6 +629,9 @@ void iobuf_set_partial_body_length_mode (iobuf_t a, size_t len);
+ from the following filter (which may or may not return EOF). */
+ void iobuf_skip_rest (iobuf_t a, unsigned long n, int partial);
+
++/* Check if the file is compressed, by peeking the iobuf. */
++int is_file_compressed (iobuf_t inp);
++
+ #define iobuf_where(a) "[don't know]"
+
+ /* Each time a filter is allocated (via iobuf_alloc()), a
+--- a/common/miscellaneous.c
++++ b/common/miscellaneous.c
+@@ -415,112 +415,6 @@ decode_c_string (const char *src)
+ }
+
+
+-/* Check whether (BUF,LEN) is valid header for an OpenPGP compressed
+- * packet. LEN should be at least 6. */
+-static int
+-is_openpgp_compressed_packet (const unsigned char *buf, size_t len)
+-{
+- int c, ctb, pkttype;
+- int lenbytes;
+-
+- ctb = *buf++; len--;
+- if (!(ctb & 0x80))
+- return 0; /* Invalid packet. */
+-
+- if ((ctb & 0x40)) /* New style (OpenPGP) CTB. */
+- {
+- pkttype = (ctb & 0x3f);
+- if (!len)
+- return 0; /* Expected first length octet missing. */
+- c = *buf++; len--;
+- if (c < 192)
+- ;
+- else if (c < 224)
+- {
+- if (!len)
+- return 0; /* Expected second length octet missing. */
+- }
+- else if (c == 255)
+- {
+- if (len < 4)
+- return 0; /* Expected length octets missing */
+- }
+- }
+- else /* Old style CTB. */
+- {
+- pkttype = (ctb>>2)&0xf;
+- lenbytes = ((ctb&3)==3)? 0 : (1<<(ctb & 3));
+- if (len < lenbytes)
+- return 0; /* Not enough length bytes. */
+- }
+-
+- return (pkttype == 8);
+-}
+-
+-
+-
+-/*
+- * Check if the file is compressed. You need to pass the first bytes
+- * of the file as (BUF,BUFLEN). Returns true if the buffer seems to
+- * be compressed.
+- */
+-int
+-is_file_compressed (const byte *buf, unsigned int buflen)
+-{
+- int i;
+-
+- struct magic_compress_s
+- {
+- byte len;
+- byte extchk;
+- byte magic[5];
+- } magic[] =
+- {
+- { 3, 0, { 0x42, 0x5a, 0x68, 0x00 } }, /* bzip2 */
+- { 3, 0, { 0x1f, 0x8b, 0x08, 0x00 } }, /* gzip */
+- { 4, 0, { 0x50, 0x4b, 0x03, 0x04 } }, /* (pk)zip */
+- { 5, 0, { '%', 'P', 'D', 'F', '-'} }, /* PDF */
+- { 4, 1, { 0xff, 0xd8, 0xff, 0xe0 } }, /* Maybe JFIF */
+- { 5, 2, { 0x89, 'P','N','G', 0x0d} } /* Likely PNG */
+- };
+-
+- if ( buflen < 6 )
+- {
+- return 0; /* Too short to check - assume uncompressed. */
+- }
+-
+- for ( i = 0; i < DIM (magic); i++ )
+- {
+- if (!memcmp( buf, magic[i].magic, magic[i].len))
+- {
+- switch (magic[i].extchk)
+- {
+- case 0:
+- return 1; /* Is compressed. */
+- case 1:
+- if (buflen > 11 && !memcmp (buf + 6, "JFIF", 5))
+- return 1; /* JFIF: this likely a compressed JPEG. */
+- break;
+- case 2:
+- if (buflen > 8
+- && buf[5] == 0x0a && buf[6] == 0x1a && buf[7] == 0x0a)
+- return 1; /* This is a PNG. */
+- break;
+- default:
+- break;
+- }
+- }
+- }
+-
+- if (buflen >= 6 && is_openpgp_compressed_packet (buf, buflen))
+- {
+- return 1; /* Already compressed. */
+- }
+-
+- return 0; /* Not detected as compressed. */
+-}
+-
+-
+ /* Try match against each substring of multistr, delimited by | */
+ int
+ match_multistr (const char *multistr,const char *match)
+--- a/common/util.h
++++ b/common/util.h
+@@ -360,8 +360,6 @@ char *try_make_printable_string (const void *p, size_t n, int delim);
+ char *make_printable_string (const void *p, size_t n, int delim);
+ char *decode_c_string (const char *src);
+
+-int is_file_compressed (const byte *buf, unsigned int buflen);
+-
+ int match_multistr (const char *multistr,const char *match);
+
+ int gnupg_compare_version (const char *a, const char *b);
+--- a/g10/cipher-aead.c
++++ b/g10/cipher-aead.c
+@@ -174,8 +174,6 @@ write_header (cipher_filter_context_t *cfx, iobuf_t a)
+ log_debug ("aead packet: len=%lu extralen=%d\n",
+ (unsigned long)ed.len, ed.extralen);
+
+- write_status_printf (STATUS_BEGIN_ENCRYPTION, "0 %d %d",
+- cfx->dek->algo, ed.aead_algo);
+ print_cipher_algo_note (cfx->dek->algo);
+
+ if (build_packet( a, &pkt))
+@@ -488,6 +486,11 @@ cipher_filter_aead (void *opaque, int control,
+ {
+ mem2str (buf, "cipher_filter_aead", *ret_len);
+ }
++ else if (control == IOBUFCTRL_INIT)
++ {
++ write_status_printf (STATUS_BEGIN_ENCRYPTION, "0 %d %d",
++ cfx->dek->algo, cfx->dek->use_aead);
++ }
+
+ return rc;
+ }
+--- a/g10/cipher-cfb.c
++++ b/g10/cipher-cfb.c
+@@ -72,9 +72,6 @@ write_header (cipher_filter_context_t *cfx, iobuf_t a)
+ log_info (_("Hint: Do not use option %s\n"), "--rfc2440");
+ }
+
+- write_status_printf (STATUS_BEGIN_ENCRYPTION, "%d %d",
+- ed.mdc_method, cfx->dek->algo);
+-
+ init_packet (&pkt);
+ pkt.pkttype = cfx->dek->use_mdc? PKT_ENCRYPTED_MDC : PKT_ENCRYPTED;
+ pkt.pkt.encrypted = &ed;
+@@ -182,6 +179,12 @@ cipher_filter_cfb (void *opaque, int control,
+ {
+ mem2str (buf, "cipher_filter_cfb", *ret_len);
+ }
++ else if (control == IOBUFCTRL_INIT)
++ {
++ write_status_printf (STATUS_BEGIN_ENCRYPTION, "%d %d",
++ cfx->dek->use_mdc ? DIGEST_ALGO_SHA1 : 0,
++ cfx->dek->algo);
++ }
+
+ return rc;
+ }
+--- a/g10/encrypt.c
++++ b/g10/encrypt.c
+@@ -410,8 +410,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey)
+ text_filter_context_t tfx;
+ progress_filter_context_t *pfx;
+ int do_compress = !!default_compress_algo();
+- char peekbuf[32];
+- int peekbuflen;
+
+ if (!gnupg_rng_is_compliant (opt.compliance))
+ {
+@@ -448,14 +446,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey)
+ return rc;
+ }
+
+- peekbuflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof peekbuf, peekbuf);
+- if (peekbuflen < 0)
+- {
+- peekbuflen = 0;
+- if (DBG_FILTER)
+- log_debug ("peeking at input failed\n");
+- }
+-
+ handle_progress (pfx, inp, filename);
+
+ if (opt.textmode)
+@@ -517,17 +507,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey)
+ /**/ : "CFB");
+ }
+
+- if (do_compress
+- && cfx.dek
+- && (cfx.dek->use_mdc || cfx.dek->use_aead)
+- && !opt.explicit_compress_option
+- && is_file_compressed (peekbuf, peekbuflen))
+- {
+- if (opt.verbose)
+- log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]");
+- do_compress = 0;
+- }
+-
+ if ( rc || (rc = open_outfile (-1, filename, opt.armor? 1:0, 0, &out )))
+ {
+ iobuf_cancel (inp);
+@@ -598,6 +577,24 @@ encrypt_simple (const char *filename, int mode, int use_seskey)
+ else
+ filesize = opt.set_filesize ? opt.set_filesize : 0; /* stdin */
+
++ /* Register the cipher filter. */
++ if (mode)
++ iobuf_push_filter (out,
++ cfx.dek->use_aead? cipher_filter_aead
++ /**/ : cipher_filter_cfb,
++ &cfx );
++
++ if (do_compress
++ && cfx.dek
++ && (cfx.dek->use_mdc || cfx.dek->use_aead)
++ && !opt.explicit_compress_option
++ && is_file_compressed (inp))
++ {
++ if (opt.verbose)
++ log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]");
++ do_compress = 0;
++ }
++
+ if (!opt.no_literal)
+ {
+ /* Note that PT has been initialized above in !no_literal mode. */
+@@ -617,13 +614,6 @@ encrypt_simple (const char *filename, int mode, int use_seskey)
+ pkt.pkt.generic = NULL;
+ }
+
+- /* Register the cipher filter. */
+- if (mode)
+- iobuf_push_filter (out,
+- cfx.dek->use_aead? cipher_filter_aead
+- /**/ : cipher_filter_cfb,
+- &cfx );
+-
+ /* Register the compress filter. */
+ if ( do_compress )
+ {
+@@ -783,7 +773,7 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
+ PKT_plaintext *pt = NULL;
+ DEK *symkey_dek = NULL;
+ STRING2KEY *symkey_s2k = NULL;
+- int rc = 0, rc2 = 0;
++ int rc = 0;
+ u32 filesize;
+ cipher_filter_context_t cfx;
+ armor_filter_context_t *afx = NULL;
+@@ -792,8 +782,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
+ progress_filter_context_t *pfx;
+ PK_LIST pk_list;
+ int do_compress;
+- char peekbuf[32];
+- int peekbuflen;
+
+ if (filefd != -1 && filename)
+ return gpg_error (GPG_ERR_INV_ARG); /* Both given. */
+@@ -866,14 +854,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
+ if (opt.verbose)
+ log_info (_("reading from '%s'\n"), iobuf_get_fname_nonnull (inp));
+
+- peekbuflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof peekbuf, peekbuf);
+- if (peekbuflen < 0)
+- {
+- peekbuflen = 0;
+- if (DBG_FILTER)
+- log_debug ("peeking at input failed\n");
+- }
+-
+ handle_progress (pfx, inp, filename);
+
+ if (opt.textmode)
+@@ -900,25 +880,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
+ if (!cfx.dek->use_aead)
+ cfx.dek->use_mdc = !!use_mdc (pk_list, cfx.dek->algo);
+
+- /* Only do the is-file-already-compressed check if we are using a
+- * MDC or AEAD. This forces compressed files to be re-compressed if
+- * we do not have a MDC to give some protection against chosen
+- * ciphertext attacks. */
+- if (do_compress
+- && (cfx.dek->use_mdc || cfx.dek->use_aead)
+- && !opt.explicit_compress_option
+- && is_file_compressed (peekbuf, peekbuflen))
+- {
+- if (opt.verbose)
+- log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]");
+- do_compress = 0;
+- }
+- if (rc2)
+- {
+- rc = rc2;
+- goto leave;
+- }
+-
+ make_session_key (cfx.dek);
+ if (DBG_CRYPTO)
+ log_printhex (cfx.dek->key, cfx.dek->keylen, "DEK is: ");
+@@ -960,6 +921,26 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
+ else
+ filesize = opt.set_filesize ? opt.set_filesize : 0; /* stdin */
+
++ /* Register the cipher filter. */
++ iobuf_push_filter (out,
++ cfx.dek->use_aead? cipher_filter_aead
++ /**/ : cipher_filter_cfb,
++ &cfx);
++
++ /* Only do the is-file-already-compressed check if we are using a
++ * MDC or AEAD. This forces compressed files to be re-compressed if
++ * we do not have a MDC to give some protection against chosen
++ * ciphertext attacks. */
++ if (do_compress
++ && (cfx.dek->use_mdc || cfx.dek->use_aead)
++ && !opt.explicit_compress_option
++ && is_file_compressed (inp))
++ {
++ if (opt.verbose)
++ log_info(_("'%s' already compressed\n"), filename? filename: "[stdin]");
++ do_compress = 0;
++ }
++
+ if (!opt.no_literal)
+ {
+ pt->timestamp = make_timestamp();
+@@ -974,12 +955,6 @@ encrypt_crypt (ctrl_t ctrl, int filefd, const char *filename,
+ else
+ cfx.datalen = filesize && !do_compress ? filesize : 0;
+
+- /* Register the cipher filter. */
+- iobuf_push_filter (out,
+- cfx.dek->use_aead? cipher_filter_aead
+- /**/ : cipher_filter_cfb,
+- &cfx);
+-
+ /* Register the compress filter. */
+ if (do_compress)
+ {
+--- a/g10/sign.c
++++ b/g10/sign.c
+@@ -1035,9 +1035,6 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr,
+ int multifile = 0;
+ u32 duration=0;
+ pt_extra_hash_data_t extrahash = NULL;
+- char peekbuf[32];
+- int peekbuflen = 0;
+-
+
+ pfx = new_progress_context ();
+ afx = new_armor_context ();
+@@ -1096,14 +1093,6 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr,
+ goto leave;
+ }
+
+- peekbuflen = iobuf_ioctl (inp, IOBUF_IOCTL_PEEK, sizeof peekbuf, peekbuf);
+- if (peekbuflen < 0)
+- {
+- peekbuflen = 0;
+- if (DBG_FILTER)
+- log_debug ("peeking at input failed\n");
+- }
+-
+ handle_progress (pfx, inp, fname);
+ }
+
+@@ -1261,7 +1250,7 @@ sign_file (ctrl_t ctrl, strlist_t filenames, int detached, strlist_t locusr,
+ int compr_algo = opt.compress_algo;
+
+ if (!opt.explicit_compress_option
+- && is_file_compressed (peekbuf, peekbuflen))
++ && is_file_compressed (inp))
+ {
+ if (opt.verbose)
+ log_info(_("'%s' already compressed\n"), fname? fname: "[stdin]");
+--
+2.11.0
diff --git a/app-crypt/gnupg/gnupg-2.4.2-r1.ebuild b/app-crypt/gnupg/gnupg-2.4.2-r1.ebuild
new file mode 100644
index 000000000000..6fd1932406ef
--- /dev/null
+++ b/app-crypt/gnupg/gnupg-2.4.2-r1.ebuild
@@ -0,0 +1,192 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# Maintainers should:
+# 1. Join the "Gentoo" project at https://dev.gnupg.org/project/view/27/
+# 2. Subscribe to release tasks like https://dev.gnupg.org/T6159
+# (find the one for the current release then subscribe to it +
+# any subsequent ones linked within so you're covered for a while.)
+
+VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/usr/share/openpgp-keys/gnupg.asc
+# in-source builds are not supported: https://dev.gnupg.org/T6313#166339
+inherit flag-o-matic out-of-source multiprocessing systemd toolchain-funcs verify-sig
+
+MY_P="${P/_/-}"
+
+DESCRIPTION="The GNU Privacy Guard, a GPL OpenPGP implementation"
+HOMEPAGE="https://gnupg.org/"
+SRC_URI="mirror://gnupg/gnupg/${MY_P}.tar.bz2"
+SRC_URI+=" verify-sig? ( mirror://gnupg/gnupg/${P}.tar.bz2.sig )"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
+IUSE="bzip2 doc ldap nls readline selinux +smartcard ssl test +tofu tpm tools usb user-socket wks-server"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="test? ( tofu )"
+
+# Existence of executables is checked during configuration.
+# Note: On each bump, update dep bounds on each version from configure.ac!
+DEPEND="
+ >=dev-libs/libassuan-2.5.0
+ >=dev-libs/libgcrypt-1.9.1:=
+ >=dev-libs/libgpg-error-1.46
+ >=dev-libs/libksba-1.6.3
+ >=dev-libs/npth-1.2
+ >=net-misc/curl-7.10
+ sys-libs/zlib
+ bzip2? ( app-arch/bzip2 )
+ ldap? ( net-nds/openldap:= )
+ readline? ( sys-libs/readline:0= )
+ smartcard? ( usb? ( virtual/libusb:1 ) )
+ tofu? ( >=dev-db/sqlite-3.27 )
+ tpm? ( >=app-crypt/tpm2-tss-2.4.0:= )
+ ssl? ( >=net-libs/gnutls-3.0:0= )
+"
+RDEPEND="
+ ${DEPEND}
+ app-crypt/pinentry
+ nls? ( virtual/libintl )
+ selinux? ( sec-policy/selinux-gpg )
+ wks-server? ( virtual/mta )
+"
+BDEPEND="
+ virtual/pkgconfig
+ doc? ( sys-apps/texinfo )
+ nls? ( sys-devel/gettext )
+ verify-sig? ( sec-keys/openpgp-keys-gnupg )
+"
+
+DOCS=(
+ ChangeLog NEWS README THANKS TODO VERSION
+ doc/FAQ doc/DETAILS doc/HACKING doc/TRANSLATE doc/OpenPGP doc/KEYSERVER
+)
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.1.20-gpgscm-Use-shorter-socket-path-lengts-to-improve-tes.patch
+ "${FILESDIR}"/${PN}-2.4.2-fix-emacs.patch
+)
+
+src_prepare() {
+ default
+
+ GNUPG_SYSTEMD_UNITS=(
+ dirmngr.service
+ dirmngr.socket
+ gpg-agent-browser.socket
+ gpg-agent-extra.socket
+ gpg-agent.service
+ gpg-agent.socket
+ gpg-agent-ssh.socket
+ )
+
+ cp "${GNUPG_SYSTEMD_UNITS[@]/#/${FILESDIR}/}" "${T}" || die
+
+ # Inject SSH_AUTH_SOCK into user's sessions after enabling gpg-agent-ssh.socket in systemctl --user mode,
+ # idea borrowed from libdbus, see
+ # https://gitlab.freedesktop.org/dbus/dbus/-/blob/master/bus/systemd-user/dbus.socket.in#L6
+ #
+ # This cannot be upstreamed, as it requires determining the exact prefix of 'systemctl',
+ # which in turn requires discovery in Autoconf, something that upstream deeply resents.
+ sed -e "/DirectoryMode=/a ExecStartPost=-${EPREFIX}/bin/systemctl --user set-environment SSH_AUTH_SOCK=%t/gnupg/S.gpg-agent.ssh" \
+ -i "${T}"/gpg-agent-ssh.socket || die
+}
+
+my_src_configure() {
+ local myconf=(
+ $(use_enable bzip2)
+ $(use_enable nls)
+ $(use_enable smartcard scdaemon)
+ $(use_enable ssl gnutls)
+ $(use_enable test all-tests)
+ $(use_enable test tests)
+ $(use_enable tofu)
+ $(use_enable tofu keyboxd)
+ $(use_enable tofu sqlite)
+ $(usex tpm '--with-tss=intel' '--disable-tpm2d')
+ $(use smartcard && use_enable usb ccid-driver || echo '--disable-ccid-driver')
+ $(use_enable wks-server wks-tools)
+ $(use_with ldap)
+ $(use_with readline)
+
+ # Hardcode mailprog to /usr/libexec/sendmail even if it does not exist.
+ # As of GnuPG 2.3, the mailprog substitution is used for the binary called
+ # by wks-client & wks-server; and if it's autodetected but not not exist at
+ # build time, then then 'gpg-wks-client --send' functionality will not
+ # work. This has an unwanted side-effect in stage3 builds: there was a
+ # [R]DEPEND on virtual/mta, which also brought in virtual/logger, bloating
+ # the build where the install guide previously make the user chose the
+ # logger & mta early in the install.
+ --with-mailprog=/usr/libexec/sendmail
+
+ --disable-ntbtls
+ --enable-gpgsm
+ --enable-large-secmem
+
+ CC_FOR_BUILD="$(tc-getBUILD_CC)"
+ GPG_ERROR_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-gpg-error-config"
+ KSBA_CONFIG="${ESYSROOT}/usr/bin/ksba-config"
+ LIBASSUAN_CONFIG="${ESYSROOT}/usr/bin/libassuan-config"
+ LIBGCRYPT_CONFIG="${ESYSROOT}/usr/bin/${CHOST}-libgcrypt-config"
+ NPTH_CONFIG="${ESYSROOT}/usr/bin/npth-config"
+
+ $("${S}/configure" --help | grep -o -- '--without-.*-prefix')
+ )
+
+ if use prefix && use usb; then
+ # bug #649598
+ append-cppflags -I"${ESYSROOT}/usr/include/libusb-1.0"
+ fi
+
+ # bug #663142
+ if use user-socket; then
+ myconf+=( --enable-run-gnupg-user-socket )
+ fi
+
+ # glib fails and picks up clang's internal stdint.h causing weird errors
+ tc-is-clang && export gl_cv_absolute_stdint_h="${ESYSROOT}"/usr/include/stdint.h
+
+ econf "${myconf[@]}"
+}
+
+my_src_compile() {
+ default
+
+ use doc && emake -C doc html
+}
+
+my_src_test() {
+ export TESTFLAGS="--parallel=$(makeopts_jobs)"
+
+ default
+}
+
+my_src_install() {
+ emake DESTDIR="${D}" install
+
+ use tools && dobin tools/{gpgconf,gpgsplit,gpg-check-pattern} tools/make-dns-cert
+
+ dosym gpg /usr/bin/gpg2
+ dosym gpgv /usr/bin/gpgv2
+ echo ".so man1/gpg.1" > "${ED}"/usr/share/man/man1/gpg2.1 || die
+ echo ".so man1/gpgv.1" > "${ED}"/usr/share/man/man1/gpgv2.1 || die
+
+ dodir /etc/env.d
+ echo "CONFIG_PROTECT=/usr/share/gnupg/qualified.txt" >> "${ED}"/etc/env.d/30gnupg || die
+
+ use doc && dodoc doc/gnupg.html/*
+}
+
+my_src_install_all() {
+ einstalldocs
+
+ use tools && dobin tools/{convert-from-106,mail-signed-keys,lspgpot}
+ use doc && dodoc doc/*.png
+
+ # Dropped upstream in https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commitdiff;h=eae28f1bd4a5632e8f8e85b7248d1c4d4a10a5ed.
+ dodoc "${FILESDIR}"/README-systemd
+ systemd_douserunit "${GNUPG_SYSTEMD_UNITS[@]/#/${T}/}"
+}