mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 12:14:38 +02:00
Merge pull request #5414 from darktohka/feature/chacha20-poly1305-evp
Integrate chacha20-poly1305 into the EVP interface
This commit is contained in:
@@ -25793,6 +25793,9 @@ const WOLFSSL_ObjectInfo wolfssl_object_info[] = {
|
|||||||
{ NID_des, DESb, oidBlkType, "DES-CBC", "des-cbc"},
|
{ NID_des, DESb, oidBlkType, "DES-CBC", "des-cbc"},
|
||||||
{ NID_des3, DES3b, oidBlkType, "DES-EDE3-CBC", "des-ede3-cbc"},
|
{ NID_des3, DES3b, oidBlkType, "DES-EDE3-CBC", "des-ede3-cbc"},
|
||||||
#endif /* !NO_DES3 */
|
#endif /* !NO_DES3 */
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
{ NID_chacha20_poly1305, NID_chacha20_poly1305, oidBlkType, "ChaCha20-Poly1305", "chacha20-poly1305"},
|
||||||
|
#endif
|
||||||
|
|
||||||
/* oidOcspType */
|
/* oidOcspType */
|
||||||
#ifdef HAVE_OCSP
|
#ifdef HAVE_OCSP
|
||||||
|
14
tests/api.c
14
tests/api.c
@@ -4462,6 +4462,10 @@ static int test_wolfSSL_EVP_get_cipherbynid(void)
|
|||||||
#endif
|
#endif
|
||||||
#endif /* !NO_DES3 */
|
#endif /* !NO_DES3 */
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
AssertNotNull(strcmp("EVP_CHACHA20_POLY13O5", EVP_get_cipherbynid(1018)));
|
||||||
|
#endif
|
||||||
|
|
||||||
/* test for nid is out of range */
|
/* test for nid is out of range */
|
||||||
AssertNull(wolfSSL_EVP_get_cipherbynid(1));
|
AssertNull(wolfSSL_EVP_get_cipherbynid(1));
|
||||||
|
|
||||||
@@ -45587,6 +45591,10 @@ static int test_wolfSSL_EVP_CIPHER_block_size(void)
|
|||||||
AssertIntEQ(EVP_CIPHER_block_size(wolfSSL_EVP_rc4()), 1);
|
AssertIntEQ(EVP_CIPHER_block_size(wolfSSL_EVP_rc4()), 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
AssertIntEQ(EVP_CIPHER_block_size(wolfSSL_EVP_chacha20_poly1305()), 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45636,6 +45644,9 @@ static int test_wolfSSL_EVP_CIPHER_iv_length(void)
|
|||||||
NID_des_cbc,
|
NID_des_cbc,
|
||||||
NID_des_ede3_cbc,
|
NID_des_ede3_cbc,
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
NID_chacha20_poly1305,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
int iv_lengths[] = {
|
int iv_lengths[] = {
|
||||||
@@ -45679,6 +45690,9 @@ static int test_wolfSSL_EVP_CIPHER_iv_length(void)
|
|||||||
DES_BLOCK_SIZE,
|
DES_BLOCK_SIZE,
|
||||||
DES_BLOCK_SIZE,
|
DES_BLOCK_SIZE,
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
CHACHA20_POLY1305_AEAD_IV_SIZE,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
printf(testingFmt, "wolfSSL_EVP_CIPHER_iv_length");
|
printf(testingFmt, "wolfSSL_EVP_CIPHER_iv_length");
|
||||||
|
@@ -243,6 +243,9 @@ int wolfSSL_EVP_Cipher_key_length(const WOLFSSL_EVP_CIPHER* c)
|
|||||||
case DES_EDE3_CBC_TYPE: return 24;
|
case DES_EDE3_CBC_TYPE: return 24;
|
||||||
case DES_ECB_TYPE: return 8;
|
case DES_ECB_TYPE: return 8;
|
||||||
case DES_EDE3_ECB_TYPE: return 24;
|
case DES_EDE3_ECB_TYPE: return 24;
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
case CHACHA20_POLY1305_TYPE: return 32;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1289,6 +1292,12 @@ static unsigned int cipherType(const WOLFSSL_EVP_CIPHER *cipher)
|
|||||||
else if (EVP_CIPHER_TYPE_MATCHES(cipher, EVP_ARC4))
|
else if (EVP_CIPHER_TYPE_MATCHES(cipher, EVP_ARC4))
|
||||||
return ARC4_TYPE;
|
return ARC4_TYPE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
else if (EVP_CIPHER_TYPE_MATCHES(cipher, EVP_CHACHA20_POLY1305))
|
||||||
|
return CHACHA20_POLY1305_TYPE;
|
||||||
|
#endif
|
||||||
|
|
||||||
else return 0;
|
else return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1357,6 +1366,11 @@ int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher)
|
|||||||
case DES_ECB_TYPE: return 8;
|
case DES_ECB_TYPE: return 8;
|
||||||
case DES_EDE3_ECB_TYPE: return 8;
|
case DES_EDE3_ECB_TYPE: return 8;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
case CHACHA20_POLY1305_TYPE:
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1424,6 +1438,11 @@ unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher)
|
|||||||
#ifndef NO_RC4
|
#ifndef NO_RC4
|
||||||
case ARC4_TYPE:
|
case ARC4_TYPE:
|
||||||
return EVP_CIPH_STREAM_CIPHER;
|
return EVP_CIPH_STREAM_CIPHER;
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
case CHACHA20_POLY1305_TYPE:
|
||||||
|
return WOLFSSL_EVP_CIPH_STREAM_CIPHER |
|
||||||
|
WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
@@ -4152,6 +4171,10 @@ static const struct cipher{
|
|||||||
{ARC4_TYPE, EVP_ARC4, NID_undef},
|
{ARC4_TYPE, EVP_ARC4, NID_undef},
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
{CHACHA20_POLY1305_TYPE, EVP_CHACHA20_POLY1305, NID_chacha20_poly1305},
|
||||||
|
#endif
|
||||||
|
|
||||||
{ 0, NULL, 0}
|
{ 0, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -4248,6 +4271,9 @@ const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name)
|
|||||||
#endif
|
#endif
|
||||||
#ifndef NO_RC4
|
#ifndef NO_RC4
|
||||||
{EVP_ARC4, "RC4"},
|
{EVP_ARC4, "RC4"},
|
||||||
|
#endif
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
{EVP_CHACHA20_POLY1305, "chacha20-poly1305"},
|
||||||
#endif
|
#endif
|
||||||
{ NULL, NULL}
|
{ NULL, NULL}
|
||||||
};
|
};
|
||||||
@@ -4362,6 +4388,11 @@ const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbynid(int id)
|
|||||||
#endif
|
#endif
|
||||||
#endif /*NO_DES3*/
|
#endif /*NO_DES3*/
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
case NID_chacha20_poly1305:
|
||||||
|
return wolfSSL_EVP_chacha20_poly1305();
|
||||||
|
#endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
WOLFSSL_MSG("Bad cipher id value");
|
WOLFSSL_MSG("Bad cipher id value");
|
||||||
}
|
}
|
||||||
@@ -8355,6 +8386,11 @@ int wolfSSL_EVP_CIPHER_CTX_iv_length(const WOLFSSL_EVP_CIPHER_CTX* ctx)
|
|||||||
WOLFSSL_MSG("AES XTS");
|
WOLFSSL_MSG("AES XTS");
|
||||||
return AES_BLOCK_SIZE;
|
return AES_BLOCK_SIZE;
|
||||||
#endif /* WOLFSSL_AES_XTS */
|
#endif /* WOLFSSL_AES_XTS */
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
case CHACHA20_POLY1305_TYPE:
|
||||||
|
WOLFSSL_MSG("CHACHA20 POLY1305");
|
||||||
|
return CHACHA20_POLY1305_AEAD_IV_SIZE;
|
||||||
|
#endif /* HAVE_CHACHA HAVE_POLY1305 */
|
||||||
|
|
||||||
case NULL_CIPHER_TYPE :
|
case NULL_CIPHER_TYPE :
|
||||||
WOLFSSL_MSG("NULL");
|
WOLFSSL_MSG("NULL");
|
||||||
@@ -8439,6 +8475,11 @@ int wolfSSL_EVP_CIPHER_iv_length(const WOLFSSL_EVP_CIPHER* cipher)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305)
|
||||||
|
if (XSTRCMP(name, EVP_CHACHA20_POLY1305) == 0)
|
||||||
|
return CHACHA20_POLY1305_AEAD_IV_SIZE;
|
||||||
|
#endif
|
||||||
|
|
||||||
(void)name;
|
(void)name;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user