case OID_sha512:
                ctx->digest_algo = "sha512";
                break;
+       case OID_sha3_256:
+               ctx->digest_algo = "sha3-256";
+               break;
+       case OID_sha3_384:
+               ctx->digest_algo = "sha3-384";
+               break;
+       case OID_sha3_512:
+               ctx->digest_algo = "sha3-512";
+               break;
 
        case OID__NR:
                sprint_oid(value, vlen, buffer, sizeof(buffer));
 
        case OID_gost2012Digest512:
                ctx->sinfo->sig->hash_algo = "streebog512";
                break;
+       case OID_sha3_256:
+               ctx->sinfo->sig->hash_algo = "sha3-256";
+               break;
+       case OID_sha3_384:
+               ctx->sinfo->sig->hash_algo = "sha3-384";
+               break;
+       case OID_sha3_512:
+               ctx->sinfo->sig->hash_algo = "sha3-512";
+               break;
        default:
                printk("Unsupported digest algo: %u\n", ctx->last_oid);
                return -ENOPKG;
        case OID_id_ecdsa_with_sha256:
        case OID_id_ecdsa_with_sha384:
        case OID_id_ecdsa_with_sha512:
+       case OID_id_ecdsa_with_sha3_256:
+       case OID_id_ecdsa_with_sha3_384:
+       case OID_id_ecdsa_with_sha3_512:
                ctx->sinfo->sig->pkey_algo = "ecdsa";
                ctx->sinfo->sig->encoding = "x962";
                break;
 
                if (strcmp(hash_algo, "sha224") != 0 &&
                    strcmp(hash_algo, "sha256") != 0 &&
                    strcmp(hash_algo, "sha384") != 0 &&
-                   strcmp(hash_algo, "sha512") != 0)
+                   strcmp(hash_algo, "sha512") != 0 &&
+                   strcmp(hash_algo, "sha3-256") != 0 &&
+                   strcmp(hash_algo, "sha3-384") != 0 &&
+                   strcmp(hash_algo, "sha3-512") != 0)
                        return -EINVAL;
        } else if (strcmp(pkey->pkey_algo, "sm2") == 0) {
                if (strcmp(encoding, "raw") != 0)
 
                ctx->cert->sig->hash_algo = "sha224";
                goto rsa_pkcs1;
 
+       case OID_id_rsassa_pkcs1_v1_5_with_sha3_256:
+               ctx->cert->sig->hash_algo = "sha3-256";
+               goto rsa_pkcs1;
+
+       case OID_id_rsassa_pkcs1_v1_5_with_sha3_384:
+               ctx->cert->sig->hash_algo = "sha3-384";
+               goto rsa_pkcs1;
+
+       case OID_id_rsassa_pkcs1_v1_5_with_sha3_512:
+               ctx->cert->sig->hash_algo = "sha3-512";
+               goto rsa_pkcs1;
+
        case OID_id_ecdsa_with_sha224:
                ctx->cert->sig->hash_algo = "sha224";
                goto ecdsa;
                ctx->cert->sig->hash_algo = "sha512";
                goto ecdsa;
 
+       case OID_id_ecdsa_with_sha3_256:
+               ctx->cert->sig->hash_algo = "sha3-256";
+               goto ecdsa;
+
+       case OID_id_ecdsa_with_sha3_384:
+               ctx->cert->sig->hash_algo = "sha3-384";
+               goto ecdsa;
+
+       case OID_id_ecdsa_with_sha3_512:
+               ctx->cert->sig->hash_algo = "sha3-512";
+               goto ecdsa;
+
        case OID_gost2012Signature256:
                ctx->cert->sig->hash_algo = "streebog256";
                goto ecrdsa;