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 20:04:57 UTC

[tika] branch main updated (6591b32 -> 75c2ff5)

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

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


    from 6591b32  TIKA-3196 -- ensure that entryCnt is thread-safe across parses; add integration test; clean up existing unused imports.
     new ad0d98b  Add test certificate and key for TIKA-3205
     new ecd1d62  TIKA-3205 Add magic for X509 PEM certificate, and tweak default type
     new b0ae63a  Add some more DER magic for certificates, and add tests TIKA-3205
     new fa1b2ef  Split the Certificate and Key mimetypes into DER and PEM subtypes, add test EC files. TIKA-3205
     new 75c2ff5  Make the DER private key mostly-match a bit more specific

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/tika/mime/tika-mimetypes.xml        |  72 ++++++++++++++++++++-
 .../java/org/apache/tika/TikaDetectionTest.java    |   5 +-
 .../java/org/apache/tika/mime/TestMimeTypes.java   |  18 ++++++
 .../src/test/resources/test-documents/testCERT.der | Bin 0 -> 702 bytes
 .../src/test/resources/test-documents/testCERT.pem |  17 +++++
 .../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 +
 .../test/resources/test-documents/testRSAKEY.der   | Bin 0 -> 610 bytes
 .../test/resources/test-documents/testRSAKEY.pem   |  16 +++++
 13 files changed, 162 insertions(+), 4 deletions(-)
 create mode 100644 tika-parsers/src/test/resources/test-documents/testCERT.der
 create mode 100644 tika-parsers/src/test/resources/test-documents/testCERT.pem
 create mode 100644 tika-parsers/src/test/resources/test-documents/testDSAKEY.der
 create mode 100644 tika-parsers/src/test/resources/test-documents/testDSAKEY.pem
 create mode 100644 tika-parsers/src/test/resources/test-documents/testDSAPARAMS.pem
 create mode 100644 tika-parsers/src/test/resources/test-documents/testECKEY.der
 create mode 100644 tika-parsers/src/test/resources/test-documents/testECKEY.pem
 create mode 100644 tika-parsers/src/test/resources/test-documents/testECPARAMS.pem
 create mode 100644 tika-parsers/src/test/resources/test-documents/testRSAKEY.der
 create mode 100644 tika-parsers/src/test/resources/test-documents/testRSAKEY.pem


[tika] 01/05: Add test certificate and key for TIKA-3205

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ad0d98b9a155e483b815eb01e36ebd02a101695a
Author: Nick Burch <ni...@gagravarr.org>
AuthorDate: Tue Sep 29 15:26:48 2020 +0100

    Add test certificate and key for TIKA-3205
---
 .../src/test/resources/test-documents/testCERT.der     | Bin 0 -> 702 bytes
 .../src/test/resources/test-documents/testCERT.pem     |  17 +++++++++++++++++
 .../src/test/resources/test-documents/testRSAKEY.der   | Bin 0 -> 610 bytes
 .../src/test/resources/test-documents/testRSAKEY.pem   |  16 ++++++++++++++++
 4 files changed, 33 insertions(+)

diff --git a/tika-parsers/src/test/resources/test-documents/testCERT.der b/tika-parsers/src/test/resources/test-documents/testCERT.der
new file mode 100644
index 0000000..935f1f6
Binary files /dev/null and b/tika-parsers/src/test/resources/test-documents/testCERT.der differ
diff --git a/tika-parsers/src/test/resources/test-documents/testCERT.pem b/tika-parsers/src/test/resources/test-documents/testCERT.pem
new file mode 100644
index 0000000..dbfd849
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testCERT.pem
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICujCCAiOgAwIBAgIUKOX/l1c68ya6jnfeRJ8uP9kvVx8wDQYJKoZIhvcNAQEL
+BQAwbzELMAkGA1UEBhMCWloxFDASBgNVBAgMC0FwYWNoZSBUaWthMQ8wDQYDVQQH
+DAZBcGFjaGUxDTALBgNVBAoMBFRpa2ExFDASBgNVBAsMC0FwYWNoZSBUaWthMRQw
+EgYDVQQDDAtBcGFjaGUgVGlrYTAeFw0yMDA5MjkxNDIzNDRaFw0zMDA5MjcxNDIz
+NDRaMG8xCzAJBgNVBAYTAlpaMRQwEgYDVQQIDAtBcGFjaGUgVGlrYTEPMA0GA1UE
+BwwGQXBhY2hlMQ0wCwYDVQQKDARUaWthMRQwEgYDVQQLDAtBcGFjaGUgVGlrYTEU
+MBIGA1UEAwwLQXBhY2hlIFRpa2EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+AMeVjMm2uyhe7HkNFFBU6nnI9niJnn+hv+3TTDw23/GH2/d1T3JSpuSFstHvwS0t
+umrSb6Py7igD4fz3+aeZU1gDrby4f9KemnLBlAU63VuPyCDyWj2XqbsZDGdnbIy2
+FnBBy2LBn5p0gDwoDpnmhHPHIJZo9OMGH/5hWQUt6+rtAgMBAAGjUzBRMB0GA1Ud
+DgQWBBTM8K2WIAuPiv0VgrRoMn2fAGua1jAfBgNVHSMEGDAWgBTM8K2WIAuPiv0V
+grRoMn2fAGua1jAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4GBALqE
++ja5Hx78Dpym/HxP50TfadwmEes+JXYptykWnuOWgLlqLuGAqJctLOKoR73r7d9d
+zJBtdr3A5uTg9vWNMSA2lPdBr/NplNaI8bso+8dRWdkiMut+j7xqTFl8MVMriRSR
+a2cA9BsUlpHjJdVjcFweAtdlINZDACoZubCTM7ng
+-----END CERTIFICATE-----
diff --git a/tika-parsers/src/test/resources/test-documents/testRSAKEY.der b/tika-parsers/src/test/resources/test-documents/testRSAKEY.der
new file mode 100644
index 0000000..22c4f86
Binary files /dev/null and b/tika-parsers/src/test/resources/test-documents/testRSAKEY.der differ
diff --git a/tika-parsers/src/test/resources/test-documents/testRSAKEY.pem b/tika-parsers/src/test/resources/test-documents/testRSAKEY.pem
new file mode 100644
index 0000000..0971b76
--- /dev/null
+++ b/tika-parsers/src/test/resources/test-documents/testRSAKEY.pem
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMeVjMm2uyhe7HkN
+FFBU6nnI9niJnn+hv+3TTDw23/GH2/d1T3JSpuSFstHvwS0tumrSb6Py7igD4fz3
++aeZU1gDrby4f9KemnLBlAU63VuPyCDyWj2XqbsZDGdnbIy2FnBBy2LBn5p0gDwo
+DpnmhHPHIJZo9OMGH/5hWQUt6+rtAgMBAAECgYBdb1TGxiYeQzoffZEJ/ob61qsU
+SRELnVS16RqigeobL8g5tBCqa6k4CKNrhvt/xA2mnrenID6AOzkb7ZdR8ATEtojF
+JjLZ8zmXACU3WetoRUvh2uxlFpxFeK0yQlaEWcvE4Z9MQe3V8pBvMQUNEZxN4bHT
+1eMla9O65TR49uxaPQJBAO/Spm9ln02CjnxCHiGmRQ77gUNz39AtrKRLQBv/uEB2
+fhHAvFoSPGXaIgd73GgZEnM/a+faLrMu9NvemMd5aYMCQQDVDAsjaa72+5ZS87zE
+xLDrFT1cKM8U1G0ikdGl6rejDnSoiwfZ8DXpSBOOiSkf/PX9zDXDPQl9nHLjmDn9
+wN7PAkEAxsPTF66lGoujZk8yQ/dXczR2DR7Dl/nTBZQsvUfzQNI0aKhSM2C72Dqz
+S3qX0Vs+VHBzEYVegTngzT4vZ9wz2wJBAMNXCZdsvUokIA7rALgCCJ1jmiE4Ibdd
+lrtNrEZO0hWlmX04DPjc8PF2bsgQJy73R61vYhQjkOIlYoof93wdLa0CQQDTLHSB
+8e8f81Jq+zbLReAQ6ch+fEulaMPlPY0OqgExBxdbwXnlPENw09+EiQkKSSo8qhY1
+guri/IWyq3LYm8nE
+-----END PRIVATE KEY-----


[tika] 03/05: Add some more DER magic for certificates, and add tests TIKA-3205

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit b0ae63a1c59ef60ac6b134cadf2053f2e73152d4
Author: Nick Burch <ni...@gagravarr.org>
AuthorDate: Tue Sep 29 16:23:08 2020 +0100

    Add some more DER magic for certificates, and add tests TIKA-3205
---
 .../org/apache/tika/mime/tika-mimetypes.xml        | 28 ++++++++++++++++++----
 .../java/org/apache/tika/mime/TestMimeTypes.java   | 11 +++++++++
 2 files changed, 34 insertions(+), 5 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 bdbeee5..a995563 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
@@ -4690,10 +4690,16 @@
       <match value="-----BEGIN CERTIFICATE-----" type="string" offset="0"/>
       <!-- DER encoded -->
       <match value="0x3080" type="string"
-              mask="0xFFFC" offset="0">
-         <!-- TODO other algs -->
-         <match value="0x300d06092a864886f70d01010b0500" 
-                type="string" offset="10:50" />
+              mask="0xFFF8" offset="0">
+         <!-- SHA with RSA Encryption -->
+         <match value="0x300d06092a864886f70d01010b0500" type="string"
+                 mask="0xFFFFFFFFFFFFFFFFFFFFFFFF00FFFF" offset="10:50" />
+         <!-- SHA with DSA Encryption -->
+         <match value="0x300b0609608648016503040301" type="string"
+                 mask="0xFFFFFFFFFFFFFFFFFFFFFFFF00" offset="10:50" />
+         <!-- SHA with ECDSA Encryption -->
+         <match value="0x300a06082a8648ce3d040301" type="string"
+                 mask="0xFFFFFFFFFFFFFFFFFFFFFF00" offset="10:50" />
       </match>
     </magic>
   </mime-type>
@@ -4701,8 +4707,20 @@
     <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"/>
+      <match value="-----BEGIN RSA KEY-----" type="string" offset="0"/>
+      <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 -->
-      <!-- TODO -->
+      <match value="0x3082025e0201" type="string" offset="0"/>
+    </magic>
+  </mime-type>
+  <mime-type type="application/x-x509-dsa-parameters">
+    <magic priority="50">
+      <!-- PEM encoded -->
+      <match value="-----BEGIN DSA PARAMETERS-----" type="string" offset="0"/>
     </magic>
   </mime-type>
 
diff --git a/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java b/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
index c507986..dc3f303 100644
--- a/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
+++ b/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
@@ -1141,6 +1141,17 @@ 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");
+        // Keys need the data to identify, name isn't enough
+        assertTypeByData("application/x-x509-key", "testRSAKEY.pem");
+        assertTypeByData("application/x-x509-key", "testRSAKEY.der");
+    }
+
+    @Test
     public void testVandICalendars() throws Exception {
         assertType("text/calendar", "testICalendar.ics");
         assertType("text/x-vcalendar", "testVCalendar.vcs");


[tika] 05/05: Make the DER private key mostly-match a bit more specific

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 75c2ff5686a70c0fb15c4b52534c1be09669af1b
Author: Nick Burch <ni...@gagravarr.org>
AuthorDate: Tue Sep 29 16:51:19 2020 +0100

    Make the DER private key mostly-match a bit more specific
---
 .../main/resources/org/apache/tika/mime/tika-mimetypes.xml    | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 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 2c4a5e5..404e462 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
@@ -4727,12 +4727,13 @@
   <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 -->
+    <!-- Always seem to have a version integer as their first entry, -->
+    <!--  normally 00, 01 or 02, check for that -->
     <magic priority="40">
-      <match value="0x3081FF0201" type="string"
-              mask="0xFFFF00FFFF" offset="0"/>
-      <match value="0x3082FFFF0201" type="string"
-              mask="0xFFFF0000FFFF" offset="0"/>
+      <match value="0x3081FF020100" type="string"
+              mask="0xFFFF00FFFFFC" offset="0"/>
+      <match value="0x3082FFFF020100" type="string"
+              mask="0xFFFF0000FFFFFC" offset="0"/>
     </magic>
   </mime-type>
 


[tika] 02/05: TIKA-3205 Add magic for X509 PEM certificate, and tweak default type

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ecd1d62ad9e4d2ddd53abf204539e5d765e6c624
Author: Nick Burch <ni...@gagravarr.org>
AuthorDate: Tue Sep 29 15:49:14 2020 +0100

    TIKA-3205 Add magic for X509 PEM certificate, and tweak default type
---
 .../org/apache/tika/mime/tika-mimetypes.xml        | 26 +++++++++++++++++++++-
 .../java/org/apache/tika/TikaDetectionTest.java    |  5 +++--
 2 files changed, 28 insertions(+), 3 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 396fb9a..bdbeee5 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
@@ -4678,10 +4678,34 @@
     <sub-class-of type="application/x-bplist"/>
     <glob pattern="*.webarchive"/>
   </mime-type>
-  <mime-type type="application/x-x509-ca-cert">
+
+  <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"/>
+    <magic priority="50">
+      <!-- PEM encoded -->
+      <match value="-----BEGIN CERTIFICATE-----" type="string" offset="0"/>
+      <!-- DER encoded -->
+      <match value="0x3080" type="string"
+              mask="0xFFFC" offset="0">
+         <!-- TODO other algs -->
+         <match value="0x300d06092a864886f70d01010b0500" 
+                type="string" offset="10:50" />
+      </match>
+    </magic>
   </mime-type>
+  <mime-type type="application/x-x509-key">
+    <magic priority="50">
+      <!-- PEM encoded -->
+      <match value="-----BEGIN PRIVATE KEY-----" type="string" offset="0"/>
+      <!-- DER encoded -->
+      <!-- TODO -->
+    </magic>
+  </mime-type>
+
   <mime-type type="application/x-xfig">
     <glob pattern="*.fig"/>
   </mime-type>
diff --git a/tika-core/src/test/java/org/apache/tika/TikaDetectionTest.java b/tika-core/src/test/java/org/apache/tika/TikaDetectionTest.java
index eb3bb19..2364daa 100644
--- a/tika-core/src/test/java/org/apache/tika/TikaDetectionTest.java
+++ b/tika-core/src/test/java/org/apache/tika/TikaDetectionTest.java
@@ -624,8 +624,9 @@ public class TikaDetectionTest {
         assertEquals("application/x-texinfo", tika.detect("x.texi"));
         assertEquals("application/x-ustar", tika.detect("x.ustar"));
         assertEquals("application/x-wais-source", tika.detect("x.src"));
-        assertEquals("application/x-x509-ca-cert", tika.detect("x.der"));
-        assertEquals("application/x-x509-ca-cert", tika.detect("x.crt"));
+        // Differ from httpd - use a common parent for CA and User certs
+        //assertEquals("application/x-x509-ca-cert", tika.detect("x.der"));
+        //assertEquals("application/x-x509-ca-cert", tika.detect("x.crt"));
         assertEquals("application/x-xfig", tika.detect("x.fig"));
         assertEquals("application/x-xpinstall", tika.detect("x.xpi"));
         assertEquals("application/xenc+xml", tika.detect("x.xenc"));


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

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fa1b2ef87157f51797d0dcaed36ebc990e538910
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 a995563..2c4a5e5 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
@@ -4682,13 +4682,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 -->
@@ -4703,9 +4709,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"/>
@@ -4713,16 +4722,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-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java b/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
index dc3f303..2960b56 100644
--- a/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
+++ b/tika-parser-modules/tika-parser-integration-tests/src/test/java/org/apache/tika/mime/TestMimeTypes.java
@@ -1142,13 +1142,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-----