Commit 57d0c4c0 authored by Doug MacEachern's avatar Doug MacEachern
Browse files

folding more duplication in ssl_tmp_keys_init


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/ssl@93886 13f79535-47bb-0310-9956-ffa450edef68
parent a5b174c2
Loading
Loading
Loading
Loading
+34 −35
Changes for ssl_engine_init.c: 34 added lines, 35 removed lines.
Original line number Diff line number Diff line
@@ -141,60 +141,59 @@ static void ssl_tmp_keys_free(server_rec *s)
    MODSSL_TMP_KEYS_FREE(mc, DH);
}

static void ssl_tmp_keys_init(server_rec *s, apr_pool_t *p)
static void ssl_tmp_key_init_rsa(server_rec *s,
                                 int bits, int idx)
{
    SSLModConfigRec *mc = myModConfig(s);

    /* seed PRNG */
    ssl_rand_seed(s, p, SSL_RSCTX_STARTUP, "Init: ");

    /* generate 512 bit RSA key */
    ssl_log(s, SSL_LOG_INFO,
            "Init: Generating temporary RSA private keys (512/1024 bits)");

    /* generate 512 bit RSA key */
    if (!(mc->pTmpKeys[SSL_TMP_KEY_RSA_512] = 
          RSA_generate_key(512, RSA_F4, NULL, NULL)))
    if (!(mc->pTmpKeys[idx] =
          RSA_generate_key(bits, RSA_F4, NULL, NULL)))
    {
        ssl_log(s, SSL_LOG_ERROR,
                "Init: Failed to generate temporary "
                "512 bit RSA private key");
                "%d bit RSA private key", bits);
        ssl_die();
    }

    /* generate 1024 bit RSA key */
    if (!(mc->pTmpKeys[SSL_TMP_KEY_RSA_1024] = 
          RSA_generate_key(1024, RSA_F4, NULL, NULL)))
    {
        ssl_log(s, SSL_LOG_ERROR,
                "Init: Failed to generate temporary "
                "1024 bit RSA private key");
        ssl_die();
}

    ssl_log(s, SSL_LOG_INFO,
            "Init: Configuring temporary "
            "DH parameters (512/1024 bits)");
static void ssl_tmp_key_init_dh(server_rec *s,
                                int bits, int idx)
{
    SSLModConfigRec *mc = myModConfig(s);

    /* generate 512 bit DH param */
    if (!(mc->pTmpKeys[SSL_TMP_KEY_DH_512] = 
          ssl_dh_GetTmpParam(512)))
    if (!(mc->pTmpKeys[idx] =
          ssl_dh_GetTmpParam(bits)))
    {
        ssl_log(s, SSL_LOG_ERROR,
                "Init: Failed to generate temporary "
                "512 bit DH parameters");
                "%d bit DH parameters", bits);
        ssl_die();
    }
}

#define MODSSL_TMP_KEY_INIT_RSA(s, bits) \
    ssl_tmp_key_init_rsa(s, bits, SSL_TMP_KEY_RSA_##bits)

    /* generate 1024 bit DH param */
    if (!(mc->pTmpKeys[SSL_TMP_KEY_DH_1024] = 
          ssl_dh_GetTmpParam(1024)))
#define MODSSL_TMP_KEY_INIT_DH(s, bits) \
    ssl_tmp_key_init_dh(s, bits, SSL_TMP_KEY_DH_##bits)

static void ssl_tmp_keys_init(server_rec *s, apr_pool_t *p)
{
        ssl_log(s, SSL_LOG_ERROR,
                "Init: Failed to generate temporary "
                "1024 bit DH parameters");
        ssl_die();
    }
    /* seed PRNG */
    ssl_rand_seed(s, p, SSL_RSCTX_STARTUP, "Init: ");

    ssl_log(s, SSL_LOG_INFO,
            "Init: Generating temporary RSA private keys (512/1024 bits)");

    MODSSL_TMP_KEY_INIT_RSA(s, 512);
    MODSSL_TMP_KEY_INIT_RSA(s, 1024);

    ssl_log(s, SSL_LOG_INFO,
            "Init: Configuring temporary DH parameters (512/1024 bits)");

    MODSSL_TMP_KEY_INIT_DH(s, 512);
    MODSSL_TMP_KEY_INIT_DH(s, 1024);
}

/*