This is an automated email from the ASF dual-hosted git repository.
tballison pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new f280e51058 TIKA-2856 - follow on from TIKA-1997 (#2960)
f280e51058 is described below
commit f280e510587683015873a9a65200d1f5921ca795
Author: Tim Allison <[email protected]>
AuthorDate: Sat Jul 18 07:26:34 2026 -0400
TIKA-2856 - follow on from TIKA-1997 (#2960)
---
.../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