mirror of https://github.com/wolfSSL/wolfssh.git
commit
dec94e79af
|
@ -188,6 +188,7 @@ static word32 userPrivateKeyTypeSz = 0;
|
|||
static byte isPrivate = 0;
|
||||
|
||||
|
||||
#ifndef NO_RSA
|
||||
static const char* hanselPublicRsa =
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9P3ZFowOsONXHD5MwWiCciXytBRZGho"
|
||||
"MNiisWSgUs5HdHcACuHYPi2W6Z1PBFmBWT9odOrGRjoZXJfDDoPi+j8SSfDGsc/hsCmc3G"
|
||||
|
@ -195,7 +196,6 @@ static const char* hanselPublicRsa =
|
|||
"nEhBaIPUJO2C/M0pFnnbZxKgJlX7t1Doy7h5eXxviymOIvaCZKU+x5OopfzM/wFkey0EPW"
|
||||
"NmzI5y/+pzU5afsdeEWdiQDIQc80H6Pz8fsoFPvYSG+s4/wz0duu7yeeV1Ypoho65Zr+pE"
|
||||
"nIf7dO0B8EblgWt+ud+JI8wrAhfE4x hansel";
|
||||
|
||||
static const byte hanselPrivateRsa[] = {
|
||||
0x30, 0x82, 0x04, 0xa3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00,
|
||||
0xbd, 0x3f, 0x76, 0x45, 0xa3, 0x03, 0xac, 0x38, 0xd5, 0xc7, 0x0f, 0x93,
|
||||
|
@ -298,15 +298,16 @@ static const byte hanselPrivateRsa[] = {
|
|||
0x7c, 0x97, 0x0b, 0x27, 0x2f, 0xae, 0xfc, 0xc3, 0x93, 0xaf, 0x1a, 0x75,
|
||||
0xec, 0x18, 0xdb
|
||||
};
|
||||
|
||||
static const unsigned int hanselPrivateRsaSz = 1191;
|
||||
#endif
|
||||
|
||||
|
||||
const char* hanselPublicEcc =
|
||||
#ifdef HAVE_ECC
|
||||
#ifndef NO_ECC256
|
||||
static const char* hanselPublicEcc =
|
||||
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAA"
|
||||
"BBBNkI5JTP6D0lF42tbxX19cE87hztUS6FSDoGvPfiU0CgeNSbI+aFdKIzTP5CQEJSvm25"
|
||||
"qUzgDtH7oyaQROUnNvk= hansel";
|
||||
|
||||
static const byte hanselPrivateEcc[] = {
|
||||
0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x03, 0x6e, 0x17, 0xd3, 0xb9,
|
||||
0xb8, 0xab, 0xc8, 0xf9, 0x1f, 0xf1, 0x2d, 0x44, 0x4c, 0x3b, 0x12, 0xb1,
|
||||
|
@ -320,8 +321,39 @@ static const byte hanselPrivateEcc[] = {
|
|||
0x4c, 0xe0, 0x0e, 0xd1, 0xfb, 0xa3, 0x26, 0x90, 0x44, 0xe5, 0x27, 0x36,
|
||||
0xf9
|
||||
};
|
||||
|
||||
static const unsigned int hanselPrivateEccSz = 121;
|
||||
#elif defined(HAVE_ECC521)
|
||||
static const char* hanselPublicEcc =
|
||||
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAA"
|
||||
"CFBAET/BOzBb9Jx9b52VIHFP4g/uk5KceDpz2M+/Ln9WiDjsMfb4NgNCAB+EMNJUX/TNBL"
|
||||
"FFmqr7c6+zUH+QAo2qstvQDsReyFkETRB2vZD//nCZfcAe0RMtKZmgtQLKXzSlimUjXBM4"
|
||||
"/zE5lwE05aXADp88h8nuaT/X4bll9cWJlH0fUykA== hansel";
|
||||
static const byte hanselPrivateEcc[] = {
|
||||
0x30, 0x81, 0xdc, 0x02, 0x01, 0x01, 0x04, 0x42, 0x01, 0x79, 0x40, 0xb8,
|
||||
0x33, 0xe5, 0x53, 0x5b, 0x9e, 0xfd, 0xed, 0xbe, 0x7c, 0x68, 0xe4, 0xb6,
|
||||
0xc3, 0x50, 0x00, 0x0d, 0x39, 0x64, 0x05, 0xf6, 0x5a, 0x5d, 0x41, 0xab,
|
||||
0xb3, 0xd9, 0xa7, 0xcb, 0x1c, 0x7d, 0x34, 0x46, 0x5c, 0x2d, 0x56, 0x26,
|
||||
0xa0, 0x6a, 0xc7, 0x3d, 0x4f, 0x78, 0x58, 0x14, 0x66, 0x6c, 0xfc, 0x86,
|
||||
0x3c, 0x8b, 0x5b, 0x54, 0x29, 0x89, 0x93, 0x48, 0xd9, 0x54, 0x8b, 0xbe,
|
||||
0x9d, 0x91, 0xa0, 0x07, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x23, 0xa1,
|
||||
0x81, 0x89, 0x03, 0x81, 0x86, 0x00, 0x04, 0x01, 0x13, 0xfc, 0x13, 0xb3,
|
||||
0x05, 0xbf, 0x49, 0xc7, 0xd6, 0xf9, 0xd9, 0x52, 0x07, 0x14, 0xfe, 0x20,
|
||||
0xfe, 0xe9, 0x39, 0x29, 0xc7, 0x83, 0xa7, 0x3d, 0x8c, 0xfb, 0xf2, 0xe7,
|
||||
0xf5, 0x68, 0x83, 0x8e, 0xc3, 0x1f, 0x6f, 0x83, 0x60, 0x34, 0x20, 0x01,
|
||||
0xf8, 0x43, 0x0d, 0x25, 0x45, 0xff, 0x4c, 0xd0, 0x4b, 0x14, 0x59, 0xaa,
|
||||
0xaf, 0xb7, 0x3a, 0xfb, 0x35, 0x07, 0xf9, 0x00, 0x28, 0xda, 0xab, 0x2d,
|
||||
0xbd, 0x00, 0xec, 0x45, 0xec, 0x85, 0x90, 0x44, 0xd1, 0x07, 0x6b, 0xd9,
|
||||
0x0f, 0xff, 0xe7, 0x09, 0x97, 0xdc, 0x01, 0xed, 0x11, 0x32, 0xd2, 0x99,
|
||||
0x9a, 0x0b, 0x50, 0x2c, 0xa5, 0xf3, 0x4a, 0x58, 0xa6, 0x52, 0x35, 0xc1,
|
||||
0x33, 0x8f, 0xf3, 0x13, 0x99, 0x70, 0x13, 0x4e, 0x5a, 0x5c, 0x00, 0xe9,
|
||||
0xf3, 0xc8, 0x7c, 0x9e, 0xe6, 0x93, 0xfd, 0x7e, 0x1b, 0x96, 0x5f, 0x5c,
|
||||
0x58, 0x99, 0x47, 0xd1, 0xf5, 0x32, 0x90
|
||||
};
|
||||
static const unsigned int hanselPrivateEccSz = 223;
|
||||
#else
|
||||
#error "Enable an ECC Curve or disable ECC."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
static int wsUserAuth(byte authType,
|
||||
|
@ -766,7 +798,7 @@ THREAD_RETURN WOLFSSH_THREAD client_test(void* args)
|
|||
SOCKADDR_IN_T clientAddr;
|
||||
socklen_t clientAddrSz = sizeof(clientAddr);
|
||||
char rxBuf[80];
|
||||
int ret;
|
||||
int ret = 0;
|
||||
int ch;
|
||||
int userEcc = 0;
|
||||
word16 port = wolfSshPort;
|
||||
|
@ -885,17 +917,20 @@ THREAD_RETURN WOLFSSH_THREAD client_test(void* args)
|
|||
|
||||
if (privKeyName == NULL) {
|
||||
if (userEcc) {
|
||||
#ifdef HAVE_ECC
|
||||
ret = wolfSSH_ReadKey_buffer(hanselPrivateEcc, hanselPrivateEccSz,
|
||||
WOLFSSH_FORMAT_ASN1, &userPrivateKey, &userPrivateKeySz,
|
||||
&userPrivateKeyType, &userPrivateKeyTypeSz, NULL);
|
||||
isPrivate = 1;
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
#ifndef NO_RSA
|
||||
ret = wolfSSH_ReadKey_buffer(hanselPrivateRsa, hanselPrivateRsaSz,
|
||||
WOLFSSH_FORMAT_ASN1, &userPrivateKey, &userPrivateKeySz,
|
||||
&userPrivateKeyType, &userPrivateKeyTypeSz, NULL);
|
||||
isPrivate = 1;
|
||||
#endif
|
||||
}
|
||||
isPrivate = 1;
|
||||
if (ret != 0) err_sys("Couldn't load private key buffer.");
|
||||
}
|
||||
else {
|
||||
|
@ -916,19 +951,22 @@ THREAD_RETURN WOLFSSH_THREAD client_test(void* args)
|
|||
userPublicKeySz = sizeof(userPublicKey);
|
||||
|
||||
if (userEcc) {
|
||||
#ifdef HAVE_ECC
|
||||
ret = wolfSSH_ReadKey_buffer((const byte*)hanselPublicEcc,
|
||||
(word32)strlen(hanselPublicEcc), WOLFSSH_FORMAT_SSH,
|
||||
&p, &userPublicKeySz,
|
||||
&userPublicKeyType, &userPublicKeyTypeSz, NULL);
|
||||
isPrivate = 1;
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
#ifndef NO_RSA
|
||||
ret = wolfSSH_ReadKey_buffer((const byte*)hanselPublicRsa,
|
||||
(word32)strlen(hanselPublicRsa), WOLFSSH_FORMAT_SSH,
|
||||
&p, &userPublicKeySz,
|
||||
&userPublicKeyType, &userPublicKeyTypeSz, NULL);
|
||||
isPrivate = 1;
|
||||
#endif
|
||||
}
|
||||
isPrivate = 1;
|
||||
if (ret != 0) err_sys("Couldn't load public key buffer.");
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -1105,6 +1105,12 @@ static int load_file(const char* fileName, byte* buf, word32 bufSz)
|
|||
}
|
||||
#endif /* NO_FILESYSTEM */
|
||||
|
||||
#ifdef HAVE_ECC521
|
||||
#define ECC_PATH "./keys/server-key-ecc-521.der"
|
||||
#else
|
||||
#define ECC_PATH "./keys/server-key-ecc.der"
|
||||
#endif
|
||||
|
||||
/* returns buffer size on success */
|
||||
static int load_key(byte isEcc, byte* buf, word32 bufSz)
|
||||
{
|
||||
|
@ -1112,8 +1118,7 @@ static int load_key(byte isEcc, byte* buf, word32 bufSz)
|
|||
|
||||
#ifndef NO_FILESYSTEM
|
||||
const char* bufName;
|
||||
bufName = isEcc ? "./keys/server-key-ecc.der" :
|
||||
"./keys/server-key-rsa.der" ;
|
||||
bufName = isEcc ? ECC_PATH : "./keys/server-key-rsa.der" ;
|
||||
sz = load_file(bufName, buf, bufSz);
|
||||
#else
|
||||
/* using buffers instead */
|
||||
|
@ -1215,6 +1220,8 @@ static const char samplePasswordBuffer[] =
|
|||
"jack:fetchapail\n";
|
||||
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
#ifndef NO_ECC256
|
||||
static const char samplePublicKeyEccBuffer[] =
|
||||
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAA"
|
||||
"BBBNkI5JTP6D0lF42tbxX19cE87hztUS6FSDoGvPfiU0CgeNSbI+aFdKIzTP5CQEJSvm25"
|
||||
|
@ -1222,8 +1229,22 @@ static const char samplePublicKeyEccBuffer[] =
|
|||
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAA"
|
||||
"BBBKAtH8cqaDbtJFjtviLobHBmjCtG56DMkP6A4M2H9zX2/YCg1h9bYS7WHd9UQDwXO1Hh"
|
||||
"IZzRYecXh7SG9P4GhRY= gretel\n";
|
||||
#elif defined(HAVE_ECC521)
|
||||
static const char samplePublicKeyEccBuffer[] =
|
||||
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAA"
|
||||
"CFBAET/BOzBb9Jx9b52VIHFP4g/uk5KceDpz2M+/Ln9WiDjsMfb4NgNCAB+EMNJUX/TNBL"
|
||||
"FFmqr7c6+zUH+QAo2qstvQDsReyFkETRB2vZD//nCZfcAe0RMtKZmgtQLKXzSlimUjXBM4"
|
||||
"/zE5lwE05aXADp88h8nuaT/X4bll9cWJlH0fUykA== hansel\n"
|
||||
"ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAA"
|
||||
"CFBAD3gANmzvkxOBN8MYwRBYO6B//7TTCtA2vwG/W5bqiVVxznXWj0xiFrgayApvH7FDpL"
|
||||
"HiJ8+c1vUsRVEa8PY5QPsgFow+xv0P2WSrRkn4/UUquftPs1ZHPhdr06LjS19ObvWM8xFZ"
|
||||
"YU6n0i28UWCUR5qE+BCTzZDWYT8V24YD8UhpaYIw== gretel\n";
|
||||
#else
|
||||
#error "Enable an ECC Curve or disable ECC."
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef NO_RSA
|
||||
static const char samplePublicKeyRsaBuffer[] =
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9P3ZFowOsONXHD5MwWiCciXytBRZGho"
|
||||
"MNiisWSgUs5HdHcACuHYPi2W6Z1PBFmBWT9odOrGRjoZXJfDDoPi+j8SSfDGsc/hsCmc3G"
|
||||
|
@ -1237,6 +1258,7 @@ static const char samplePublicKeyRsaBuffer[] =
|
|||
"uNZl/30Mczs73N3MBzi6J1oPo7sFlqzB6ecBjK2Kpjus4Y1rYFphJnUxtKvB0s+hoaadru"
|
||||
"biE57dK6BrH5iZwVLTQKux31uCJLPhiktI3iLbdlGZEctJkTasfVSsUizwVIyRjhVKmbdI"
|
||||
"RGwkU38D043AR1h0mUoGCPIKuqcFMf gretel\n";
|
||||
#endif
|
||||
|
||||
static const char sampleNoneBuffer[] =
|
||||
"holmes\n"
|
||||
|
@ -1637,7 +1659,7 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
|||
#endif
|
||||
|
||||
{
|
||||
const char* bufName;
|
||||
const char* bufName = NULL;
|
||||
byte buf[SCRATCH_BUFFER_SZ];
|
||||
word32 bufSz;
|
||||
|
||||
|
@ -1657,12 +1679,22 @@ THREAD_RETURN WOLFSSH_THREAD echoserver_test(void* args)
|
|||
buf[bufSz] = 0;
|
||||
LoadPasswordBuffer(buf, bufSz, &pwMapList);
|
||||
|
||||
bufName = userEcc ? samplePublicKeyEccBuffer :
|
||||
samplePublicKeyRsaBuffer;
|
||||
if (userEcc) {
|
||||
#ifdef HAVE_ECC
|
||||
bufName = samplePublicKeyEccBuffer;
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
#ifndef NO_RSA
|
||||
bufName = samplePublicKeyRsaBuffer;
|
||||
#endif
|
||||
}
|
||||
if (bufName != NULL) {
|
||||
bufSz = (word32)strlen(bufName);
|
||||
memcpy(buf, bufName, bufSz);
|
||||
buf[bufSz] = 0;
|
||||
LoadPublicKeyBuffer(buf, bufSz, &pwMapList);
|
||||
}
|
||||
|
||||
bufSz = (word32)strlen(sampleNoneBuffer);
|
||||
memcpy(buf, sampleNoneBuffer, bufSz);
|
||||
|
|
593
src/internal.c
593
src/internal.c
File diff suppressed because it is too large
Load Diff
24
tests/api.c
24
tests/api.c
|
@ -462,11 +462,33 @@ enum WS_TestFormatTypes {
|
|||
};
|
||||
|
||||
|
||||
#ifndef NO_ECC256
|
||||
static const char serverKeyEccDer[] =
|
||||
"307702010104206109990b79d25f285a0f5d15cca15654f92b3987212da77d85"
|
||||
"7bb87f38c66dd5a00a06082a8648ce3d030107a144034200048113ffa42bb79c"
|
||||
"45747a834c61f33fad26cf22cda9a3bca561b47ce662d4c2f755439a31fb8011"
|
||||
"20b5124b24f578d7fd22ef4635f005586b5f63c8da1bc4f569";
|
||||
static const int serverKeyEccCurveId = ECC_SECP256R1;
|
||||
#elif defined(HAVE_ECC384)
|
||||
static const char serverKeyEccDer[] =
|
||||
"3081a402010104303eadd2bbbf05a7be3a3f7c28151289de5bb3644d7011761d"
|
||||
"b56f2a0362fba64f98e64ff986dc4fb8efdb2d6b8da57142a00706052b810400"
|
||||
"22a1640362000438d62be418ff573fd0e020d48876c4e1121dfb2d6ebee4895d"
|
||||
"7724316d46a23105873f2986d5c712803a6f471ab86850eb063e108961349cf8"
|
||||
"b4c6a4cf5e97bd7e51e975e3e9217261506eb9cf3c493d3eb88d467b5f27ebab"
|
||||
"2161c00066febd";
|
||||
static const int serverKeyEccCurveId = ECC_SECP384R1;
|
||||
#elif defined(HAVE_ECC521)
|
||||
static const char serverKeyEccDer[] =
|
||||
"3081dc0201010442004ca4d86428d9400e7b2df3912eb996c195895043af92e8"
|
||||
"6de70ae4df46f22a291a6bb2748aae82580df6c39f49b3ed82f1789ece1b657d"
|
||||
"45438cff156534354575a00706052b81040023a18189038186000401f8d0a7c3"
|
||||
"c58d841957969f213a94f3da550edf76d8dd171531f35bb069c8bc300d6f6b37"
|
||||
"d18046a9717f2c6f59519c827095b29a6313306218c235769400d0f96d000a19"
|
||||
"3ba346652beb409a9a45c597a3ed932dd5aaae96bf2f317e5a7ac7458b3c6cdb"
|
||||
"aa90c355382cdfcdca7377d92eb20a5e8c74237ca5a345b19e3f1a2290b154";
|
||||
static const int serverKeyEccCurveId = ECC_SECP521R1;
|
||||
#endif
|
||||
|
||||
static const char serverKeyRsaDer[] =
|
||||
"308204a30201000282010100da5dad2514761559f340fd3cb86230b36dc0f9ec"
|
||||
|
@ -569,7 +591,7 @@ static void test_wolfSSH_CTX_UsePrivateKey_buffer(void)
|
|||
TEST_GOOD_FORMAT_ASN1));
|
||||
AssertNotNull(ctx->privateKey);
|
||||
AssertIntNE(0, ctx->privateKeySz);
|
||||
AssertIntEQ(ECC_SECP256R1, ctx->useEcc);
|
||||
AssertIntEQ(serverKeyEccCurveId, ctx->useEcc);
|
||||
|
||||
#ifndef NO_RSA
|
||||
lastKey = ctx->privateKey;
|
||||
|
|
|
@ -208,6 +208,7 @@ typedef struct {
|
|||
} KdfTestVector;
|
||||
|
||||
|
||||
#ifndef NO_SHA
|
||||
/** Test Vector Set #1: SHA-1 **/
|
||||
const char kdfTvSet1k[] =
|
||||
"35618FD3AABF980A5F766408961600D4933C60DD7B22D69EEB4D7A987C938F6F"
|
||||
|
@ -245,6 +246,7 @@ const char kdfTvSet2c[] = "CB6D56EC5B9AFECD326D544DA2D22DED";
|
|||
const char kdfTvSet2d[] = "F712F6451F1BD6CE9BAA597AC87C5A24";
|
||||
const char kdfTvSet2e[] = "E42FC62C76B76B37818F78292D3C2226D0264760";
|
||||
const char kdfTvSet2f[] = "D14BE4DD0093A3E759580233C80BB8399CE4C4E7";
|
||||
#endif
|
||||
|
||||
/** Test Vector Set #3: SHA-256 **/
|
||||
const char kdfTvSet3k[] =
|
||||
|
@ -296,6 +298,7 @@ const char kdfTvSet4f[] =
|
|||
#define HASH_SHA256 WC_HASH_TYPE_SHA256
|
||||
|
||||
static const KdfTestVector kdfTestVectors[] = {
|
||||
#ifndef NO_SHA
|
||||
{HASH_SHA, 'A', kdfTvSet1k, kdfTvSet1h, kdfTvSet1sid, kdfTvSet1a},
|
||||
{HASH_SHA, 'B', kdfTvSet1k, kdfTvSet1h, kdfTvSet1sid, kdfTvSet1b},
|
||||
{HASH_SHA, 'C', kdfTvSet1k, kdfTvSet1h, kdfTvSet1sid, kdfTvSet1c},
|
||||
|
@ -308,6 +311,7 @@ static const KdfTestVector kdfTestVectors[] = {
|
|||
{HASH_SHA, 'D', kdfTvSet2k, kdfTvSet2h, kdfTvSet2sid, kdfTvSet2d},
|
||||
{HASH_SHA, 'E', kdfTvSet2k, kdfTvSet2h, kdfTvSet2sid, kdfTvSet2e},
|
||||
{HASH_SHA, 'F', kdfTvSet2k, kdfTvSet2h, kdfTvSet2sid, kdfTvSet2f},
|
||||
#endif
|
||||
{HASH_SHA256, 'A', kdfTvSet3k, kdfTvSet3h, kdfTvSet3sid, kdfTvSet3a},
|
||||
{HASH_SHA256, 'B', kdfTvSet3k, kdfTvSet3h, kdfTvSet3sid, kdfTvSet3b},
|
||||
{HASH_SHA256, 'C', kdfTvSet3k, kdfTvSet3h, kdfTvSet3sid, kdfTvSet3c},
|
||||
|
|
|
@ -62,6 +62,121 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
|
||||
/* Check options set by wolfSSL and set wolfSSH options as appropriate. If
|
||||
* the derived options and any override options leave wolfSSH without
|
||||
* at least one algorithm to use, throw an error. */
|
||||
|
||||
#if defined(NO_HMAC) || defined(NO_SHA)
|
||||
#define WOLFSSH_NO_HMAC_SHA1
|
||||
#endif
|
||||
#if defined(NO_HMAC) || defined(NO_SHA)
|
||||
#define WOLFSSH_NO_HMAC_SHA1_96
|
||||
#endif
|
||||
#if defined(NO_HMAC) || defined(NO_SHA256)
|
||||
#define WOLFSSH_NO_HMAC_SHA2_256
|
||||
#endif
|
||||
#if defined(WOLFSSH_NO_HMAC_SHA1) && \
|
||||
defined(WOLFSSH_NO_HMAC_SHA1_96) && \
|
||||
defined(WOLFSSH_NO_HMAC_SHA2_256)
|
||||
#error "You need at least one MAC algorithm."
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WOLFSSH_NO_DH
|
||||
#undef WOLFSSH_NO_DH_GROUP1_SHA1
|
||||
#define WOLFSSH_NO_DH_GROUP1_SHA1
|
||||
#undef WOLFSSH_NO_DH_GROUP14_SHA1
|
||||
#define WOLFSSH_NO_DH_GROUP14_SHA1
|
||||
#undef WOLFSSH_NO_DH_GEX_SHA256
|
||||
#define WOLFSSH_NO_DH_GEX_SHA256
|
||||
#endif
|
||||
|
||||
#if defined(NO_DH) || defined(NO_SHA)
|
||||
#define WOLFSSH_NO_DH_GROUP1_SHA1
|
||||
#endif
|
||||
#if defined(NO_DH) || defined(NO_SHA)
|
||||
#define WOLFSSH_NO_DH_GROUP14_SHA1
|
||||
#endif
|
||||
#if defined(NO_DH) || defined(NO_SHA256)
|
||||
#define WOLFSSH_NO_DH_GEX_SHA256
|
||||
#endif
|
||||
#if !defined(HAVE_ECC) || defined(NO_SHA256) || defined(NO_ECC256)
|
||||
#define WOLFSSH_NO_ECDH_SHA2_NISTP256
|
||||
#endif
|
||||
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA384) || !defined(HAVE_ECC384)
|
||||
#define WOLFSSH_NO_ECDH_SHA2_NISTP384
|
||||
#endif
|
||||
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA512) || !defined(HAVE_ECC521)
|
||||
#define WOLFSSH_NO_ECDH_SHA2_NISTP521
|
||||
#endif
|
||||
#if !defined(HAVE_ED25519) || defined(NO_SHA256) || 1
|
||||
/* ED25519 isn't supported yet. Force disabled. */
|
||||
#define WOLFSSH_NO_ECDH_SHA2_ED25519
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSH_NO_DH_GROUP1_SHA1) && \
|
||||
defined(WOLFSSH_NO_DH_GROUP14_SHA1) && \
|
||||
defined(WOLFSSH_NO_DH_GEX_SHA256) && \
|
||||
defined(WOLFSSH_NO_ECDH_SHA2_NISTP256) && \
|
||||
defined(WOLFSSH_NO_ECDH_SHA2_NISTP384) && \
|
||||
defined(WOLFSSH_NO_ECDH_SHA2_NISTP521) && \
|
||||
defined(WOLFSSH_NO_ECDH_SHA2_ED25519)
|
||||
#error "You need at least one key agreement algorithm."
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSH_NO_DH_GROUP1_SHA1) && \
|
||||
defined(WOLFSSH_NO_DH_GROUP14_SHA1) && \
|
||||
defined(WOLFSSH_NO_DH_GEX_SHA256)
|
||||
#define WOLFSSH_NO_DH
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(NO_RSA) || defined(NO_SHA)
|
||||
#define WOLFSSH_NO_SSH_RSA_SHA1
|
||||
#endif
|
||||
#if !defined(HAVE_ECC) || defined(NO_SHA256) || defined(NO_ECC256)
|
||||
#define WOLFSSH_NO_ECDSA_SHA2_NISTP256
|
||||
#endif
|
||||
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA384) || !defined(HAVE_ECC384)
|
||||
#define WOLFSSH_NO_ECDSA_SHA2_NISTP384
|
||||
#endif
|
||||
#if !defined(HAVE_ECC) || !defined(WOLFSSL_SHA512) || !defined(HAVE_ECC521)
|
||||
#define WOLFSSH_NO_ECDSA_SHA2_NISTP521
|
||||
#endif
|
||||
#if defined(WOLFSSH_NO_SHA_RSA_SHA1) && \
|
||||
defined(WOLFSSH_NO_ECDSA_SHA2_NISTP256) && \
|
||||
defined(WOLFSSH_NO_ECDSA_SHA2_NISTP384) && \
|
||||
defined(WOLFSSH_NO_ECDSA_SHA2_NISTP521)
|
||||
#error "You need at least one signing algorithm."
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WOLFSSH_NO_AEAD
|
||||
#undef WOLFSSH_NO_AES_GCM
|
||||
#define WOLFSSH_NO_AES_GCM
|
||||
#endif
|
||||
|
||||
#if defined(NO_AES) || !defined(HAVE_AES_CBC)
|
||||
#define WOLFSSH_NO_AES_CBC
|
||||
#endif
|
||||
#if defined(NO_AES) || !defined(WOLFSSL_AES_COUNTER)
|
||||
#define WOLFSSH_NO_AES_CTR
|
||||
#endif
|
||||
#if defined(NO_AES) || !defined(HAVE_AESGCM)
|
||||
#define WOLFSSH_NO_AES_GCM
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSH_NO_AES_CBC) && \
|
||||
defined(WOLFSSH_NO_AES_CTR) && \
|
||||
defined(WOLFSSH_NO_AES_GCM)
|
||||
#error "You need at least one encryption algorithm."
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSH_NO_AES_GCM)
|
||||
#define WOLFSSH_NO_AEAD
|
||||
#endif
|
||||
|
||||
|
||||
WOLFSSH_LOCAL const char* GetErrorString(int);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue