mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-07-12 10:44:58 +03:00
v4.08-9449-rtm
This commit is contained in:
@ -922,6 +922,7 @@ void PtMain(PT *pt)
|
||||
{
|
||||
{"About", PsAbout},
|
||||
{"MakeCert", PtMakeCert},
|
||||
{"MakeCert2048", PtMakeCert2048},
|
||||
{"TrafficClient", PtTrafficClient},
|
||||
{"TrafficServer", PtTrafficServer},
|
||||
{"Check", PtCheck},
|
||||
@ -2542,7 +2543,7 @@ UINT PtTrafficClient(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Certificate easy creation tool
|
||||
// Certificate easy creation tool (1024 bit)
|
||||
UINT PtMakeCert(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
{
|
||||
LIST *o;
|
||||
@ -2668,6 +2669,131 @@ UINT PtMakeCert(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Certificate easy creation tool (2048 bit)
|
||||
UINT PtMakeCert2048(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
||||
{
|
||||
LIST *o;
|
||||
UINT ret = ERR_NO_ERROR;
|
||||
X *x = NULL;
|
||||
K *pub = NULL;
|
||||
K *pri = NULL;
|
||||
NAME *n;
|
||||
X_SERIAL *x_serial = NULL;
|
||||
BUF *buf;
|
||||
UINT days;
|
||||
X *root_x = NULL;
|
||||
K *root_k = NULL;
|
||||
// Parameter list that can be specified
|
||||
CMD_EVAL_MIN_MAX minmax =
|
||||
{
|
||||
"CMD_MakeCert_EVAL_EXPIRES",
|
||||
0,
|
||||
10950,
|
||||
};
|
||||
PARAM args[] =
|
||||
{
|
||||
{"CN", CmdPrompt, _UU("CMD_MakeCert_PROMPT_CN"), NULL, NULL},
|
||||
{"O", CmdPrompt, _UU("CMD_MakeCert_PROMPT_O"), NULL, NULL},
|
||||
{"OU", CmdPrompt, _UU("CMD_MakeCert_PROMPT_OU"), NULL, NULL},
|
||||
{"C", CmdPrompt, _UU("CMD_MakeCert_PROMPT_C"), NULL, NULL},
|
||||
{"ST", CmdPrompt, _UU("CMD_MakeCert_PROMPT_ST"), NULL, NULL},
|
||||
{"L", CmdPrompt, _UU("CMD_MakeCert_PROMPT_L"), NULL, NULL},
|
||||
{"SERIAL", CmdPrompt, _UU("CMD_MakeCert_PROMPT_SERIAL"), NULL, NULL},
|
||||
{"EXPIRES", CmdPrompt, _UU("CMD_MakeCert_PROMPT_EXPIRES"), CmdEvalMinMax, &minmax},
|
||||
{"SIGNCERT", NULL, NULL, CmdEvalIsFile, NULL},
|
||||
{"SIGNKEY", NULL, NULL, CmdEvalIsFile, NULL},
|
||||
{"SAVECERT", CmdPrompt, _UU("CMD_MakeCert_PROMPT_SAVECERT"), CmdEvalNotEmpty, NULL},
|
||||
{"SAVEKEY", CmdPrompt, _UU("CMD_MakeCert_PROMPT_SAVEKEY"), CmdEvalNotEmpty, NULL},
|
||||
};
|
||||
|
||||
// Get the parameter list
|
||||
o = ParseCommandList(c, cmd_name, str, args, sizeof(args) / sizeof(args[0]));
|
||||
if (o == NULL)
|
||||
{
|
||||
return ERR_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (IsEmptyStr(GetParamStr(o, "SIGNCERT")) == false && IsEmptyStr(GetParamStr(o, "SIGNKEY")) == false)
|
||||
{
|
||||
root_x = FileToXW(GetParamUniStr(o, "SIGNCERT"));
|
||||
root_k = FileToKW(GetParamUniStr(o, "SIGNKEY"), true, NULL);
|
||||
|
||||
if (root_x == NULL || root_k == NULL || CheckXandK(root_x, root_k) == false)
|
||||
{
|
||||
ret = ERR_INTERNAL_ERROR;
|
||||
|
||||
c->Write(c, _UU("CMD_MakeCert_ERROR_SIGNKEY"));
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == ERR_NO_ERROR)
|
||||
{
|
||||
buf = StrToBin(GetParamStr(o, "SERIAL"));
|
||||
if (buf != NULL && buf->Size >= 1)
|
||||
{
|
||||
x_serial = NewXSerial(buf->Buf, buf->Size);
|
||||
}
|
||||
FreeBuf(buf);
|
||||
|
||||
n = NewName(GetParamUniStr(o, "CN"), GetParamUniStr(o, "O"), GetParamUniStr(o, "OU"),
|
||||
GetParamUniStr(o, "C"), GetParamUniStr(o, "ST"), GetParamUniStr(o, "L"));
|
||||
|
||||
days = GetParamInt(o, "EXPIRES");
|
||||
if (days == 0)
|
||||
{
|
||||
days = 3650;
|
||||
}
|
||||
|
||||
RsaGen(&pri, &pub, 2048);
|
||||
|
||||
if (root_x == NULL)
|
||||
{
|
||||
x = NewRootX(pub, pri, n, days, x_serial);
|
||||
}
|
||||
else
|
||||
{
|
||||
x = NewX(pub, root_k, root_x, n, days, x_serial);
|
||||
}
|
||||
|
||||
FreeXSerial(x_serial);
|
||||
FreeName(n);
|
||||
|
||||
if (x == NULL)
|
||||
{
|
||||
ret = ERR_INTERNAL_ERROR;
|
||||
c->Write(c, _UU("CMD_MakeCert_ERROR_GEN_FAILED"));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (XToFileW(x, GetParamUniStr(o, "SAVECERT"), true) == false)
|
||||
{
|
||||
c->Write(c, _UU("CMD_SAVECERT_FAILED"));
|
||||
}
|
||||
else if (KToFileW(pri, GetParamUniStr(o, "SAVEKEY"), true, NULL) == false)
|
||||
{
|
||||
c->Write(c, _UU("CMD_SAVEKEY_FAILED"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ret != ERR_NO_ERROR)
|
||||
{
|
||||
// Error has occurred
|
||||
CmdPrintError(c, ret);
|
||||
}
|
||||
|
||||
// Release of the parameter list
|
||||
FreeParamValueList(o);
|
||||
|
||||
FreeX(root_x);
|
||||
FreeK(root_k);
|
||||
|
||||
FreeX(x);
|
||||
FreeK(pri);
|
||||
FreeK(pub);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Client management tool main
|
||||
void PcMain(PC *pc)
|
||||
@ -2754,6 +2880,7 @@ void PcMain(PC *pc)
|
||||
{"KeepSet", PcKeepSet},
|
||||
{"KeepGet", PcKeepGet},
|
||||
{"MakeCert", PtMakeCert},
|
||||
{"MakeCert2048", PtMakeCert2048},
|
||||
{"TrafficClient", PtTrafficClient},
|
||||
{"TrafficServer", PtTrafficServer},
|
||||
};
|
||||
@ -6866,6 +6993,7 @@ void PsMain(PS *ps)
|
||||
{"AcAdd6", PsAcAdd6},
|
||||
{"AcDel", PsAcDel},
|
||||
{"MakeCert", PtMakeCert},
|
||||
{"MakeCert2048", PtMakeCert2048},
|
||||
{"TrafficClient", PtTrafficClient},
|
||||
{"TrafficServer", PtTrafficServer},
|
||||
{"LicenseAdd", PsLicenseAdd},
|
||||
|
Reference in New Issue
Block a user