You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by ni...@apache.org on 2020/09/29 16:07:38 UTC

[tika] 04/05: Split the Certificate and Key mimetypes into DER and PEM subtypes, add test EC files. TIKA-3205

This is an automated email from the ASF dual-hosted git repository.

nick pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git

commit c6b30c578e98373496f895cd7caa8317f4212d51
Author: Nick Burch <ni...@gagravarr.org>
AuthorDate: Tue Sep 29 16:48:40 2020 +0100

    Split the Certificate and Key mimetypes into DER and PEM subtypes, add test EC files. TIKA-3205
---
 .../org/apache/tika/mime/tika-mimetypes.xml        |  41 +++++++++++++++++----
 .../java/org/apache/tika/mime/TestMimeTypes.java   |  19 +++++++---
 .../test/resources/test-documents/testDSAKEY.der   | Bin 0 -> 834 bytes
 .../test/resources/test-documents/testDSAKEY.pem   |  15 ++++++++
 .../resources/test-documents/testDSAPARAMS.pem     |  14 +++++++
 .../test/resources/test-documents/testECKEY.der    | Bin 0 -> 167 bytes
 .../test/resources/test-documents/testECKEY.pem    |   6 +++
 .../test/resources/test-documents/testECPARAMS.pem |   3 ++
 8 files changed, 84 insertions(+), 14 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 630b429..abcc5d5 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
@@ -4631,13 +4631,19 @@
   <mime-type type="application/x-x509-cert">
     <alias type="application/x-x509-ca-cert"/>
     <alias type="application/x-x509-user-cert"/>
-    <glob pattern="*.der"/>
-    <glob pattern="*.pem"/>
     <glob pattern="*.crt"/>
+  </mime-type>
+  <mime-type type="application/x-x509-cert;format=pem">
+    <sub-class-of type="application/x-x509-cert"/>
+    <glob pattern="*.pem"/>
     <magic priority="50">
-      <!-- PEM encoded -->
       <match value="-----BEGIN CERTIFICATE-----" type="string" offset="0"/>
-      <!-- DER encoded -->
+    </magic>
+  </mime-type>
+  <mime-type type="application/x-x509-cert;format=der">
+    <sub-class-of type="application/x-x509-cert"/>
+    <glob pattern="*.der"/>
+    <magic priority="50">
       <match value="0x3080" type="string"
               mask="0xFFF8" offset="0">
          <!-- SHA with RSA Encryption -->
@@ -4652,9 +4658,12 @@
       </match>
     </magic>
   </mime-type>
+
   <mime-type type="application/x-x509-key">
+  </mime-type>
+  <mime-type type="application/x-x509-key;format=pem">
+    <sub-class-of type="application/x-x509-key"/>
     <magic priority="50">
-      <!-- PEM encoded -->
       <match value="-----BEGIN PRIVATE KEY-----" type="string" offset="0"/>
       <match value="-----BEGIN PUBLIC KEY-----" type="string" offset="0"/>
       <match value="-----BEGIN KEY-----" type="string" offset="0"/>
@@ -4662,16 +4671,32 @@
       <match value="-----BEGIN RSA PRIVATE KEY-----" type="string" offset="0"/>
       <match value="-----BEGIN DSA KEY-----" type="string" offset="0"/>
       <match value="-----BEGIN DSA PRIVATE KEY-----" type="string" offset="0"/>
-      <!-- DER encoded -->
-      <match value="0x3082025e0201" type="string" offset="0"/>
     </magic>
   </mime-type>
+  <mime-type type="application/x-x509-key;format=der">
+    <sub-class-of type="application/x-x509-key"/>
+    <!-- These are just a bunch of magic integers as defined by the key format... -->
+    <!-- Always seem to have an integer=01 as their first entry, check for that -->
+    <magic priority="40">
+      <match value="0x3081FF0201" type="string"
+              mask="0xFFFF00FFFF" offset="0"/>
+      <match value="0x3082FFFF0201" type="string"
+              mask="0xFFFF0000FFFF" offset="0"/>
+    </magic>
+  </mime-type>
+
   <mime-type type="application/x-x509-dsa-parameters">
     <magic priority="50">
-      <!-- PEM encoded -->
+      <!-- PEM encoded only -->
       <match value="-----BEGIN DSA PARAMETERS-----" type="string" offset="0"/>
     </magic>
   </mime-type>
+  <mime-type type="application/x-x509-ec-parameters">
+    <magic priority="50">
+      <!-- PEM encoded only -->
+      <match value="-----BEGIN EC PARAMETERS-----" type="string" offset="0"/>
+    </magic>
+  </mime-type>
 
   <mime-type type="application/x-xfig">
     <glob pattern="*.fig"/>
diff --git a/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java b/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java
index a80dc8e..de45faf 100644
--- a/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java
+++ b/tika-parsers/src/test/java/org/apache/tika/mime/TestMimeTypes.java
@@ -1137,13 +1137,20 @@ public class TestMimeTypes {
 
     @Test
     public void testCertificatesKeys() throws Exception {
-        assertType("application/x-x509-cert", "testCERT.pem");
-        assertType("application/x-x509-cert", "testCERT.der");
-        assertTypeByData("application/x-x509-cert", "testCERT.pem");
-        assertTypeByData("application/x-x509-cert", "testCERT.der");
+        assertType("application/x-x509-cert; format=pem", "testCERT.pem");
+        assertType("application/x-x509-cert; format=der", "testCERT.der");
+        assertTypeByData("application/x-x509-cert; format=pem", "testCERT.pem");
+        assertTypeByData("application/x-x509-cert; format=der", "testCERT.der");
         // Keys need the data to identify, name isn't enough
-        assertTypeByData("application/x-x509-key", "testRSAKEY.pem");
-        assertTypeByData("application/x-x509-key", "testRSAKEY.der");
+        assertTypeByData("application/x-x509-key; format=pem", "testECKEY.pem");
+        assertTypeByData("application/x-x509-key; format=der", "testECKEY.der");
+        assertTypeByData("application/x-x509-key; format=pem", "testRSAKEY.pem");
+        assertTypeByData("application/x-x509-key; format=der", "testRSAKEY.der");
+        assertTypeByData("application/x-x509-key; format=pem", "testDSAKEY.pem");
+        assertTypeByData("application/x-x509-key; format=der", "testDSAKEY.der");
+        // Parameters only have PEM form, always need data
+        assertTypeByData("application/x-x509-dsa-parameters", "testDSAPARAMS.pem");
+        assertTypeByData("application/x-x509-ec-parameters", "testECPARAMS.pem");
     }
 
     @Test
diff --git a/tika-parsers/src/test/resources/test-documents/testDSAKEY.der b/tika-parsers/src/test/resources/test-documents/testDSAKEY.der
new file mode 100644
index 0000000..9ed2eb9
Binary files /dev/null and b/tika-parsers/src/test/resources/test-documents/testDSAKEY.der differ
diff --git a/tika-parsers/src/test/resources/test-documents/testDSAKEY.pem b/tika-parsers/src/test/resources/test-documents/testDSAKEY.pem
new file mode 100644
index 0000000..2b8781a
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testDSAKEY.pem
@@ -0,0 +1,15 @@
+-----BEGIN PRIVATE KEY-----
+MIICTQIBADCCAi0GByqGSM44BAEwggIgAoIBAQDRXU0Be5k0MI3skB6K0PhyptBh
+WSJ1l+NVSOX7wpXC37upcH7a0ZCfU9RyWqcX9dQFw+TWjlH2ANll/FO4osXkkJVY
+oylJ+p0599v6WRPBS/yQpKuvfqEm5HA78J8ILhnyCCw8hqdlrADBOMGf7tGF5Agw
+hEZJdtHjYRzPWzY0eogptg3wQPd/wO6ZztdW/T9wPK1RDTEhraQwuJTp1tldWjkm
+KutogVR327yAImJ7jhevM6ayCQFybT+mI3h48ixgkewPydU7hUIpEWtXjnwxLecu
+P6hsggyuykxtPFlcK4xb/XKjN4AVEfFA6CJUrkk+FSi+RQfupCraeUXSCS3DAhUA
+xkpKBq0v1k5JA/XlzNFVYgPqah8CggEAWhpzc9y5nYRz/uADJ2DBsk9ho3MovK9i
+FGZyxwD6L66Gf+KqPglRABKa2vfkAVIhzysyaMB7sN0WhGFf9SX2gGnH48YoJHtD
+eNNe8Izd1blIcg71lyT4HLCJDmURTVVQIxzzm97BpW5cYjEAFJAWXQ4lqqJzqnpv
+HrXs4ljAq12tbaGIwBgY5G2f+R2NhKpbdDut423M3CCfM8XnxXlZiHV5x9BvjOWm
+uw2mrsmZI1k2blr+lezA4m6fr9t4iwtDC+0cIpfuAC3/7FSaTcKC7ubMh1cyv/kV
+6AoWtBXCCkctGNsQIJ0GibPKJZ7E9JoOPBwB16fOTknbXtxBF8klsQQXAhUAwFDM
+4JZXXO/04oTAZw7IMqVCOLE=
+-----END PRIVATE KEY-----
diff --git a/tika-parsers/src/test/resources/test-documents/testDSAPARAMS.pem b/tika-parsers/src/test/resources/test-documents/testDSAPARAMS.pem
new file mode 100644
index 0000000..3cbef08
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testDSAPARAMS.pem
@@ -0,0 +1,14 @@
+-----BEGIN DSA PARAMETERS-----
+MIICIAKCAQEA0V1NAXuZNDCN7JAeitD4cqbQYVkidZfjVUjl+8KVwt+7qXB+2tGQ
+n1PUclqnF/XUBcPk1o5R9gDZZfxTuKLF5JCVWKMpSfqdOffb+lkTwUv8kKSrr36h
+JuRwO/CfCC4Z8ggsPIanZawAwTjBn+7RheQIMIRGSXbR42Ecz1s2NHqIKbYN8ED3
+f8Dumc7XVv0/cDytUQ0xIa2kMLiU6dbZXVo5JirraIFUd9u8gCJie44XrzOmsgkB
+cm0/piN4ePIsYJHsD8nVO4VCKRFrV458MS3nLj+obIIMrspMbTxZXCuMW/1yozeA
+FRHxQOgiVK5JPhUovkUH7qQq2nlF0gktwwIVAMZKSgatL9ZOSQP15czRVWID6mof
+AoIBAFoac3PcuZ2Ec/7gAydgwbJPYaNzKLyvYhRmcscA+i+uhn/iqj4JUQASmtr3
+5AFSIc8rMmjAe7DdFoRhX/Ul9oBpx+PGKCR7Q3jTXvCM3dW5SHIO9Zck+BywiQ5l
+EU1VUCMc85vewaVuXGIxABSQFl0OJaqic6p6bx617OJYwKtdrW2hiMAYGORtn/kd
+jYSqW3Q7reNtzNwgnzPF58V5WYh1ecfQb4zlprsNpq7JmSNZNm5a/pXswOJun6/b
+eIsLQwvtHCKX7gAt/+xUmk3Cgu7mzIdXMr/5FegKFrQVwgpHLRjbECCdBomzyiWe
+xPSaDjwcAdenzk5J217cQRfJJbE=
+-----END DSA PARAMETERS-----
diff --git a/tika-parsers/src/test/resources/test-documents/testECKEY.der b/tika-parsers/src/test/resources/test-documents/testECKEY.der
new file mode 100644
index 0000000..24cbe9a
Binary files /dev/null and b/tika-parsers/src/test/resources/test-documents/testECKEY.der differ
diff --git a/tika-parsers/src/test/resources/test-documents/testECKEY.pem b/tika-parsers/src/test/resources/test-documents/testECKEY.pem
new file mode 100644
index 0000000..f8a7f8e
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testECKEY.pem
@@ -0,0 +1,6 @@
+-----BEGIN PRIVATE KEY-----
+MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDC/CFlieW48GC1RB2Nh
+19wlRZO4QNAVsmttUmwXh46i9dWSs1hnaENPcn9b0kPtFQShZANiAATd5hKUV7K/
+sTuBHS1FDOVqXrKOBp7t+tRZTaOV3/gkKyXSfzDRGxVIJR/hL0c5f7A7PzC994yV
+JvHbi1XtfeaSWZojKI/4Dxvcy8vpL2Cwf4+jpWLDpF3zAP7W9CwMAjE=
+-----END PRIVATE KEY-----
diff --git a/tika-parsers/src/test/resources/test-documents/testECPARAMS.pem b/tika-parsers/src/test/resources/test-documents/testECPARAMS.pem
new file mode 100644
index 0000000..ceed209
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testECPARAMS.pem
@@ -0,0 +1,3 @@
+-----BEGIN EC PARAMETERS-----
+BgUrgQQAIg==
+-----END EC PARAMETERS-----