1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2026-05-27 07:50:15 +03:00

Support user-specified server trust chain

This commit is contained in:
domosekai
2021-07-21 07:02:42 +00:00
parent 1f40de2dda
commit 2761c1ca42
19 changed files with 437 additions and 16 deletions
+74
View File
@@ -870,6 +870,50 @@ X *PackGetX(PACK *p, char *name)
return x;
}
// Get the X chain from the PACK
LIST *PackGetXList(PACK *p, char *name)
{
X *x;
BUF *b;
LIST *chain;
UINT i;
// Validate arguments
if (p == NULL || name == NULL)
{
return NULL;
}
ELEMENT *e = GetElement(p, name, VALUE_DATA);
if (e == NULL)
{
return NULL;
}
chain = NewList(NULL);
for (i = 0;i < e->num_value;i++)
{
b = PackGetBufEx(p, name, i);
if (b == NULL)
{
FreeXList(chain);
return NULL;
}
x = BufToX(b, false);
if (x == NULL)
{
x = BufToX(b, true);
}
FreeBuf(b);
Add(chain, x);
}
return chain;
}
// Add the K to the PACK
ELEMENT *PackAddK(PACK *p, char *name, K *k)
{
@@ -916,6 +960,36 @@ ELEMENT *PackAddX(PACK *p, char *name, X *x)
return e;
}
// Add an X chain into the PACK
ELEMENT *PackAddXList(PACK *p, char *name, LIST *chain)
{
BUF *b;
X *x;
ELEMENT *e = NULL;
// Validate arguments
if (p == NULL || name == NULL || chain == NULL)
{
return NULL;
}
UINT i;
for (i = 0;i < LIST_NUM(chain);i++)
{
x = LIST_DATA(chain, i);
b = XToBuf(x, false);
if (b == NULL)
{
return NULL;
}
e = PackAddBufEx(p, name, b, i, LIST_NUM(chain));
FreeBuf(b);
}
return e;
}
// Get a buffer from the PACK
BUF *PackGetBuf(PACK *p, char *name)
{