Index: trunk/src/VBox/Runtime/common/asn1/oiddb.cfg
===================================================================
--- trunk/src/VBox/Runtime/common/asn1/oiddb.cfg	(revision 85628)
+++ trunk/src/VBox/Runtime/common/asn1/oiddb.cfg	(revision 85629)
@@ -54,4 +54,6 @@
 1.2.840.113549.1.1.13           = pkcs1-Sha512WithRsaEncryption
 1.2.840.113549.1.1.14           = pkcs1-Sha224WithRsaEncryption
+1.2.840.113549.1.1.15           = pkcs1-Sha512-224WithRsaEncryption
+1.2.840.113549.1.1.16           = pkcs1-Sha512-256WithRsaEncryption
 1.2.840.113549.1.7              = pkcs7
 1.2.840.113549.1.7.1            = pkcs7-data
@@ -224,8 +226,33 @@
 2.16.840.1.101.3.4.1            = nist-aes-algorithms
 2.16.840.1.101.3.4.2            = nist-hash-algorithms
-2.16.840.1.101.3.4.2.1          = nist-Sha256
-2.16.840.1.101.3.4.2.2          = nist-Sha384
-2.16.840.1.101.3.4.2.3          = nist-Sha512
-2.16.840.1.101.3.4.2.4          = nist-Sha224
+2.16.840.1.101.3.4.2.1          = nist-sha256
+2.16.840.1.101.3.4.2.2          = nist-sha384
+2.16.840.1.101.3.4.2.3          = nist-sha512
+2.16.840.1.101.3.4.2.4          = nist-sha224
+2.16.840.1.101.3.4.2.5          = nist-sha512-224
+2.16.840.1.101.3.4.2.6          = nist-sha512-256
+2.16.840.1.101.3.4.2.7          = nist-sha3-224
+2.16.840.1.101.3.4.2.8          = nist-sha3-256
+2.16.840.1.101.3.4.2.9          = nist-sha3-384
+2.16.840.1.101.3.4.2.10         = nist-sha3-512
+2.16.840.1.101.3.4.2.11         = nist-shake128
+2.16.840.1.101.3.4.2.12         = nist-shake256
+2.16.840.1.101.3.4.3            = nist-sigAlgs
+2.16.840.1.101.3.4.3.1          = nist-dsa-with-sha224
+2.16.840.1.101.3.4.3.2          = nist-dsa-with-sha256
+2.16.840.1.101.3.4.3.3          = nist-dsa-with-sha384
+2.16.840.1.101.3.4.3.4          = nist-dsa-with-sha512
+2.16.840.1.101.3.4.3.5          = nist-id-dsa-with-sha224
+2.16.840.1.101.3.4.3.6          = nist-id-dsa-with-sha256
+2.16.840.1.101.3.4.3.7          = nist-id-dsa-with-sha384
+2.16.840.1.101.3.4.3.8          = nist-id-dsa-with-sha512
+2.16.840.1.101.3.4.3.9          = nist-id-ecdsa-with-sha3-224
+2.16.840.1.101.3.4.3.10         = nist-id-ecdsa-with-sha3-256
+2.16.840.1.101.3.4.3.11         = nist-id-ecdsa-with-sha3-384
+2.16.840.1.101.3.4.3.12         = nist-id-ecdsa-with-sha3-512
+2.16.840.1.101.3.4.3.13         = nist-id-rsassa-pkcs1-v1-5-with-sha3-224
+2.16.840.1.101.3.4.3.14         = nist-id-rsassa-pkcs1-v1-5-with-sha3-256
+2.16.840.1.101.3.4.3.15         = nist-id-rsassa-pkcs1-v1-5-with-sha3-384
+2.16.840.1.101.3.4.3.16         = nist-id-rsassa-pkcs1-v1-5-with-sha3-512
 2.16.840.1.113730               = netscape
 2.16.840.1.113730.1.1           = netscape-cert-type
Index: trunk/src/VBox/Runtime/common/crypto/pkix-signature-rsa.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/crypto/pkix-signature-rsa.cpp	(revision 85628)
+++ trunk/src/VBox/Runtime/common/crypto/pkix-signature-rsa.cpp	(revision 85629)
@@ -112,11 +112,27 @@
     0x30,0x2d, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x04,   0x05,0x00,  0x04,0x1c
 };
-static const uint8_t g_abSha512T224[] =
+static const uint8_t g_abSha512t224[] =
 {/* {          {          2.16.840.1.101.3.4.2.5 (SHA-512T224),                     NULL },     hash octet-string } */
     0x30,0x2d, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x05,   0x05,0x00,  0x04,0x1c
 };
-static const uint8_t g_abSha512T256[] =
+static const uint8_t g_abSha512t256[] =
 {/* {          {          2.16.840.1.101.3.4.2.6 (SHA-512T256),                     NULL },     hash octet-string } */
     0x30,0x31, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x06,   0x05,0x00,  0x04,0x20
+};
+static const uint8_t g_abSha3t224[] =
+{/* {          {          2.16.840.1.101.3.4.2.7 (SHA3-224),                        NULL },     hash octet-string } */
+    0x30,0x31, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x07,   0x05,0x00,  0x04,0x1c
+};
+static const uint8_t g_abSha3t256[] =
+{/* {          {          2.16.840.1.101.3.4.2.8 (SHA3-256),                        NULL },     hash octet-string } */
+    0x30,0x31, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x08,   0x05,0x00,  0x04,0x20
+};
+static const uint8_t g_abSha3t384[] =
+{/* {          {          2.16.840.1.101.3.4.2.9 (SHA3-384),                        NULL },     hash octet-string } */
+    0x30,0x31, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x09,   0x05,0x00,  0x04,0x30
+};
+static const uint8_t g_abSha3t512[] =
+{/* {          {          2.16.840.1.101.3.4.2.10 (SHA3-512),                       NULL },     hash octet-string } */
+    0x30,0x31, 0x30,0x0d, 0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x0a,   0x05,0x00,  0x04,0x40
 };
 /** @} */
@@ -138,6 +154,10 @@
     { RTDIGESTTYPE_SHA384,      g_abSha384,     sizeof(g_abSha384) },
     { RTDIGESTTYPE_SHA224,      g_abSha224,     sizeof(g_abSha224) },
-    { RTDIGESTTYPE_SHA512T224,  g_abSha512T224, sizeof(g_abSha512T224)},
-    { RTDIGESTTYPE_SHA512T256,  g_abSha512T256, sizeof(g_abSha512T256)},
+    { RTDIGESTTYPE_SHA512T224,  g_abSha512t224, sizeof(g_abSha512t224)},
+    { RTDIGESTTYPE_SHA512T256,  g_abSha512t256, sizeof(g_abSha512t256)},
+    { RTDIGESTTYPE_SHA3_224,    g_abSha3t224,   sizeof(g_abSha3t224) },
+    { RTDIGESTTYPE_SHA3_256,    g_abSha3t256,   sizeof(g_abSha3t256) },
+    { RTDIGESTTYPE_SHA3_384,    g_abSha3t384,   sizeof(g_abSha3t384) },
+    { RTDIGESTTYPE_SHA3_512,    g_abSha3t512,   sizeof(g_abSha3t512) },
 };
 
Index: trunk/src/VBox/Runtime/common/crypto/x509-core.cpp
===================================================================
--- trunk/src/VBox/Runtime/common/crypto/x509-core.cpp	(revision 85628)
+++ trunk/src/VBox/Runtime/common/crypto/x509-core.cpp	(revision 85629)
@@ -83,4 +83,13 @@
     if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA512T256))
         return RTDIGESTTYPE_SHA512T256;
+
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_224))
+        return RTDIGESTTYPE_SHA3_224;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_256))
+        return RTDIGESTTYPE_SHA3_256;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_384))
+        return RTDIGESTTYPE_SHA3_384;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_512))
+        return RTDIGESTTYPE_SHA3_512;
     return RTDIGESTTYPE_INVALID;
 }
@@ -114,4 +123,12 @@
     if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA512T256))
         return 256 / 8;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_224))
+        return 224 / 8;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_256))
+        return 256 / 8;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_384))
+        return 384 / 8;
+    if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_SHA3_512))
+        return 512 / 8;
     if (!strcmp(pThis->Algorithm.szObjId, RTCRX509ALGORITHMIDENTIFIERID_WHIRLPOOL))
         return 512 / 8;
@@ -180,4 +197,24 @@
     {
         if (!strcmp(pszEncryptedDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA512T256_WITH_RSA))
+            return 0;
+    }
+    else if (!strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_224))
+    {
+        if (!strcmp(pszEncryptedDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_224_WITH_RSA))
+            return 0;
+    }
+    else if (!strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_256))
+    {
+        if (!strcmp(pszEncryptedDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_256_WITH_RSA))
+            return 0;
+    }
+    else if (!strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_384))
+    {
+        if (!strcmp(pszEncryptedDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_384_WITH_RSA))
+            return 0;
+    }
+    else if (!strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_512))
+    {
+        if (!strcmp(pszEncryptedDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_512_WITH_RSA))
             return 0;
     }
@@ -235,4 +272,16 @@
             || !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA512T256_WITH_RSA))
             return RTCRX509ALGORITHMIDENTIFIERID_SHA512T256_WITH_RSA;
+        if (   !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_224)
+            || !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_224_WITH_RSA))
+            return RTCRX509ALGORITHMIDENTIFIERID_SHA3_224_WITH_RSA;
+        if (   !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_256)
+            || !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_256_WITH_RSA))
+            return RTCRX509ALGORITHMIDENTIFIERID_SHA3_256_WITH_RSA;
+        if (   !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_384)
+            || !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_384_WITH_RSA))
+            return RTCRX509ALGORITHMIDENTIFIERID_SHA3_384_WITH_RSA;
+        if (   !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_512)
+            || !strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_SHA3_512_WITH_RSA))
+            return RTCRX509ALGORITHMIDENTIFIERID_SHA3_512_WITH_RSA;
 
         /* if (!strcmp(pszDigestOid, RTCRX509ALGORITHMIDENTIFIERID_WHIRLPOOL))
