1
0
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:
dnobori
2014-06-08 16:40:44 +09:00
parent 719ee999d6
commit ea38eef377
285 changed files with 478 additions and 282 deletions

View File

@ -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)

View File

@ -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},

View File

@ -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);

View File

@ -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