MCPcopy Create free account
hub / github.com/apache/httpd / ssl_cmd_SSLRandomSeed

Function ssl_cmd_SSLRandomSeed

modules/ssl/ssl_engine_config.c:641–732  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

639}
640
641const char *ssl_cmd_SSLRandomSeed(cmd_parms *cmd,
642 void *dcfg,
643 const char *arg1,
644 const char *arg2,
645 const char *arg3)
646{
647 SSLModConfigRec *mc = myModConfig(cmd->server);
648 const char *err;
649 ssl_randseed_t *seed;
650 int arg2len = strlen(arg2);
651
652 if ((err = ap_check_cmd_context(cmd, GLOBAL_ONLY))) {
653 return err;
654 }
655
656 if (ssl_config_global_isfixed(mc)) {
657 return NULL;
658 }
659
660 seed = apr_array_push(mc->aRandSeed);
661
662 if (strcEQ(arg1, "startup")) {
663 seed->nCtx = SSL_RSCTX_STARTUP;
664 }
665 else if (strcEQ(arg1, "connect")) {
666 seed->nCtx = SSL_RSCTX_CONNECT;
667 }
668 else {
669 return apr_pstrcat(cmd->pool, "SSLRandomSeed: "
670 "invalid context: `", arg1, "'",
671 NULL);
672 }
673
674 if ((arg2len > 5) && strEQn(arg2, "file:", 5)) {
675 seed->nSrc = SSL_RSSRC_FILE;
676 seed->cpPath = ap_server_root_relative(mc->pPool, arg2+5);
677 }
678 else if ((arg2len > 5) && strEQn(arg2, "exec:", 5)) {
679 seed->nSrc = SSL_RSSRC_EXEC;
680 seed->cpPath = ap_server_root_relative(mc->pPool, arg2+5);
681 }
682 else if ((arg2len > 4) && strEQn(arg2, "egd:", 4)) {
683#ifdef HAVE_RAND_EGD
684 seed->nSrc = SSL_RSSRC_EGD;
685 seed->cpPath = ap_server_root_relative(mc->pPool, arg2+4);
686#else
687 return apr_pstrcat(cmd->pool, "Invalid SSLRandomSeed entropy source `",
688 arg2, "': This version of " MODSSL_LIBRARY_NAME
689 " does not support the Entropy Gathering Daemon "
690 "(EGD).", NULL);
691#endif
692 }
693 else if (strcEQ(arg2, "builtin")) {
694 seed->nSrc = SSL_RSSRC_BUILTIN;
695 seed->cpPath = NULL;
696 }
697 else {
698 seed->nSrc = SSL_RSSRC_FILE;

Callers

nothing calls this directly

Calls 4

ap_check_cmd_contextFunction · 0.85
ap_server_root_relativeFunction · 0.85
ssl_util_path_checkFunction · 0.85

Tested by

no test coverage detected