mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2025-07-07 16:25:01 +03:00
v4.08-9449-rtm
This commit is contained in:
@ -120,10 +120,10 @@
|
||||
|
||||
|
||||
// Version number
|
||||
#define CEDAR_VER 407
|
||||
#define CEDAR_VER 408
|
||||
|
||||
// Build Number
|
||||
#define CEDAR_BUILD 9448
|
||||
#define CEDAR_BUILD 9449
|
||||
|
||||
// Beta number
|
||||
//#define BETA_NUMBER 3
|
||||
@ -144,10 +144,10 @@
|
||||
// Specifies the build date
|
||||
#define BUILD_DATE_Y 2014
|
||||
#define BUILD_DATE_M 6
|
||||
#define BUILD_DATE_D 6
|
||||
#define BUILD_DATE_HO 3
|
||||
#define BUILD_DATE_MI 7
|
||||
#define BUILD_DATE_SE 39
|
||||
#define BUILD_DATE_D 8
|
||||
#define BUILD_DATE_HO 14
|
||||
#define BUILD_DATE_MI 8
|
||||
#define BUILD_DATE_SE 9
|
||||
|
||||
// Tolerable time difference
|
||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||
|
@ -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},
|
||||
|
@ -374,6 +374,7 @@ PT *NewPt(CONSOLE *c, wchar_t *cmdline);
|
||||
void FreePt(PT *pt);
|
||||
void PtMain(PT *pt);
|
||||
UINT PtMakeCert(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PtMakeCert2048(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PtTrafficClient(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
UINT PtCheck(CONSOLE *c, char *cmd_name, wchar_t *str, void *param);
|
||||
|
@ -6346,7 +6346,7 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect, bool no_tls
|
||||
// If additional_connect == true, follow the IsRUDPSession setting in this session
|
||||
s = TcpIpConnectEx(host_for_direct_connection, port_for_direct_connection,
|
||||
(bool *)cancel_flag, hWnd, &nat_t_err, (additional_connect ? (!is_additonal_rudp_session) : false),
|
||||
false, no_tls);
|
||||
true, no_tls);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user