Commit 8a43a42a authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Support TLS 1.3 signature scheme names.

parent edbfba1a
Loading
Loading
Loading
Loading
+21 −10
Original line number Diff line number Diff line
@@ -1750,7 +1750,7 @@ static int sig_cb(const char *elem, int len, void *arg)
{
    sig_cb_st *sarg = arg;
    size_t i;
    char etmp[20], *p;
    char etmp[40], *p;
    int sig_alg = NID_undef, hash_alg = NID_undef;
    if (elem == NULL)
        return 0;
@@ -1761,15 +1761,26 @@ static int sig_cb(const char *elem, int len, void *arg)
    memcpy(etmp, elem, len);
    etmp[len] = 0;
    p = strchr(etmp, '+');
    if (!p)
        return 0;
    /* See if we have a match for TLS 1.3 names */
    if (p == NULL) {
        const SIGALG_LOOKUP *s;

        for (i = 0, s = sigalg_lookup_tbl; i < OSSL_NELEM(sigalg_lookup_tbl);
             i++, s++) {
            if (s->name != NULL && strcmp(etmp, s->name) == 0) {
                sig_alg = s->sig;
                hash_alg = s->hash;
                break;
            }
        }
    } else {
        *p = 0;
        p++;
    if (!*p)
        if (*p == 0)
            return 0;

        get_sigorhash(&sig_alg, &hash_alg, etmp);
        get_sigorhash(&sig_alg, &hash_alg, p);
    }

    if (sig_alg == NID_undef || hash_alg == NID_undef)
        return 0;