This is an automated email from the ASF dual-hosted git repository. tballison pushed a commit to branch TIKA-2856-follow-ons in repository https://gitbox.apache.org/repos/asf/tika.git
commit 9566c33cbcc7f6aa48e6defabbf80e71cda35e7f Author: tallison <[email protected]> AuthorDate: Fri Jul 17 12:58:02 2026 -0400 TIKA-2856 - follow on from TIKA-1997 --- .../org/apache/tika/mime/tika-mimetypes.xml | 27 ++++++--------------- .../tika/parser/crypto/Pkcs7DetectionTest.java | 2 ++ .../apache/tika/parser/crypto/Pkcs7ParserTest.java | 3 +++ .../resources/test-documents/testPKCS7_digested.p7 | Bin 0 -> 97 bytes 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml b/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml index 2582d5cc93..6cd798ca80 100644 --- a/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml +++ b/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml @@ -909,26 +909,15 @@ <magic priority="50"> <!-- PEM encoded --> <match value="-----BEGIN PKCS7" type="string" offset="0"/> - <!-- DER encoded, sequence+length, object=pkcs7-signedData --> - <match value="0x3080" offset="0"> - <match value="0x06092a864886f70d0107FFa0" type="string" - mask="0xFFFFFFFFFFFFFFFFFFFF00FF" offset="2"/> - </match> - <match value="0x3081" offset="0"> - <match value="0x06092a864886f70d0107FFa0" type="string" - mask="0xFFFFFFFFFFFFFFFFFFFF00FF" offset="3"/> - </match> - <match value="0x3082" offset="0"> - <match value="0x06092a864886f70d0107FFa0" type="string" - mask="0xFFFFFFFFFFFFFFFFFFFF00FF" offset="4"/> - </match> - <match value="0x3083" offset="0"> - <match value="0x06092a864886f70d0107FFa0" type="string" - mask="0xFFFFFFFFFFFFFFFFFFFF00FF" offset="5"/> - </match> - <match value="0x3084" offset="0"> + <!-- DER encoded: SEQUENCE then a CMS ContentInfo whose contentType is in the pkcs7 arc + 1.2.840.113549.1.7.x (signedData .2, envelopedData .3, digestedData .5, encryptedData .6, + ... last OID byte masked) followed by the [0] content tag (a0). offset 2:6 spans the DER + SEQUENCE length forms (short-form + 80/81/82/83/84), so small short-form containers such + as a bare digestedData are matched too. This is the coarse family label; Pkcs7Parser + refines the exact smime-type. --> + <match value="0x30" offset="0"> <match value="0x06092a864886f70d0107FFa0" type="string" - mask="0xFFFFFFFFFFFFFFFFFFFF00FF" offset="6"/> + mask="0xFFFFFFFFFFFFFFFFFFFF00FF" offset="2:6"/> </match> </magic> </mime-type> diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7DetectionTest.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7DetectionTest.java index 36905eeb41..8e17722244 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7DetectionTest.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7DetectionTest.java @@ -50,5 +50,7 @@ public class Pkcs7DetectionTest { // existing masked CMS magic detects signed/enveloped coarsely as pkcs7-signature by content assertEquals("application/pkcs7-signature", detect("testPKCS7_signed_data_def.p7m")); assertEquals("application/pkcs7-signature", detect("testPKCS7_enveloped_def.p7m")); + // TIKA-2856: a short-form-length digestedData is now caught coarsely (routes to Pkcs7Parser) + assertEquals("application/pkcs7-signature", detect("testPKCS7_digested.p7")); } } diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7ParserTest.java b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7ParserTest.java index 36dffdc80e..a442af7bcb 100644 --- a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7ParserTest.java +++ b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/java/org/apache/tika/parser/crypto/Pkcs7ParserTest.java @@ -57,6 +57,9 @@ public class Pkcs7ParserTest { parsedType("testPKCS7_compressed_def_long.p7z")); assertEquals("application/pkcs7-mime; smime-type=compressed-data", parsedType("testPKCS7_compressed_ind.p7z")); + // TIKA-2856: digestedData refined at parse time (coarse magic now routes it here) + assertEquals("application/pkcs7-mime; smime-type=digested-data", + parsedType("testPKCS7_digested.p7")); } /** Detached signatures are labelled pkcs7-signature and no longer throw. */ diff --git a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/resources/test-documents/testPKCS7_digested.p7 b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/resources/test-documents/testPKCS7_digested.p7 new file mode 100644 index 0000000000..8069ee6e8c Binary files /dev/null and b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-crypto-module/src/test/resources/test-documents/testPKCS7_digested.p7 differ
