forked from wolfSSL/wolfssl
Merge pull request #4305 from TakayukiMatsuo/i2t
Add support for wolfSSL_i2t_ASN1_OBJECT
This commit is contained in:
24
src/ssl.c
24
src/ssl.c
@ -27667,17 +27667,23 @@ WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_get_privatekey(const WOLFSSL *ssl)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NO_WOLFSSL_STUB
|
||||
/*** TBD ***/
|
||||
WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a)
|
||||
/**
|
||||
* Get a textual representation of given WOLFSSL_ASN1_OBJECT then write it to
|
||||
* buf at most buf_len bytes.
|
||||
*
|
||||
* params
|
||||
* - buf: buffer where the textual representation is to be written to
|
||||
* - buf_len: buffer size in bytes
|
||||
* - a: WOLFSSL_ASN1_OBJECT
|
||||
*
|
||||
* return the string length written on success, WOLFSSL_FAILURE on failure.
|
||||
*/
|
||||
WOLFSSL_API int wolfSSL_i2t_ASN1_OBJECT(char *buf, int buf_len,
|
||||
WOLFSSL_ASN1_OBJECT *a)
|
||||
{
|
||||
(void)buf;
|
||||
(void)buf_len;
|
||||
(void)a;
|
||||
WOLFSSL_STUB("i2t_ASN1_OBJECT");
|
||||
return -1;
|
||||
WOLFSSL_ENTER("wolfSSL_i2t_ASN1_OBJECT");
|
||||
return wolfSSL_OBJ_obj2txt(buf, buf_len, a, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
WOLFSSL_ASN1_OBJECT *wolfSSL_d2i_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT **a,
|
||||
const unsigned char **der,
|
||||
|
28
tests/api.c
28
tests/api.c
@ -34876,6 +34876,33 @@ static void test_wolfSSL_OBJ_txt2obj(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void test_wolfSSL_i2t_ASN1_OBJECT(void)
|
||||
{
|
||||
#if defined(OPENSSL_EXTRA) && \
|
||||
defined(WOLFSSL_CERT_EXT) && defined(WOLFSSL_CERT_GEN)
|
||||
|
||||
char buf[50] = {0};
|
||||
ASN1_OBJECT* obj;
|
||||
const char* oid = "2.5.29.19";
|
||||
const char* ln = "X509v3 Basic Constraints";
|
||||
|
||||
printf(testingFmt, "test_wolfSSL_i2t_ASN1_OBJECT()");
|
||||
|
||||
obj = NULL;
|
||||
AssertIntEQ(i2t_ASN1_OBJECT(NULL, sizeof(buf), obj), WOLFSSL_FAILURE);
|
||||
AssertIntEQ(i2t_ASN1_OBJECT(buf, sizeof(buf), NULL), WOLFSSL_FAILURE);
|
||||
AssertIntEQ(i2t_ASN1_OBJECT(buf, 0, NULL), WOLFSSL_FAILURE);
|
||||
|
||||
AssertNotNull(obj = OBJ_txt2obj(oid, 0));
|
||||
XMEMSET(buf, 0, sizeof(buf));
|
||||
AssertIntEQ(i2t_ASN1_OBJECT(buf, sizeof(buf), obj), XSTRLEN(ln));
|
||||
AssertIntEQ(XSTRNCMP(buf, ln, XSTRLEN(ln)), 0);
|
||||
ASN1_OBJECT_free(obj);
|
||||
|
||||
printf(resultFmt, passed);
|
||||
#endif /* OPENSSL_EXTRA && WOLFSSL_CERT_EXT && WOLFSSL_CERT_GEN */
|
||||
}
|
||||
|
||||
static void test_wolfSSL_X509_NAME_ENTRY(void)
|
||||
{
|
||||
#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && !defined(NO_FILESYSTEM) && \
|
||||
@ -47773,6 +47800,7 @@ void ApiTest(void)
|
||||
test_wolfSSL_OBJ_cmp();
|
||||
test_wolfSSL_OBJ_txt2nid();
|
||||
test_wolfSSL_OBJ_txt2obj();
|
||||
test_wolfSSL_i2t_ASN1_OBJECT();
|
||||
test_wolfSSL_X509_NAME_ENTRY();
|
||||
test_wolfSSL_X509_set_name();
|
||||
test_wolfSSL_X509_set_notAfter();
|
||||
|
@ -55,6 +55,7 @@
|
||||
#define OBJ_create wolfSSL_OBJ_create
|
||||
#define ASN1_OBJECT_free wolfSSL_ASN1_OBJECT_free
|
||||
#define OBJ_NAME_do_all wolfSSL_OBJ_NAME_do_all
|
||||
#define i2t_ASN1_OBJECT wolfSSL_i2t_ASN1_OBJECT
|
||||
|
||||
/* not required for wolfSSL */
|
||||
#define OPENSSL_load_builtin_modules()
|
||||
|
@ -4526,7 +4526,7 @@ WOLFSSL_API WOLFSSL_X509_PUBKEY *wolfSSL_X509_get_X509_PUBKEY(const WOLFSSL_X509
|
||||
WOLFSSL_API int wolfSSL_X509_PUBKEY_get0_param(WOLFSSL_ASN1_OBJECT **ppkalg, const unsigned char **pk, int *ppklen, WOLFSSL_X509_ALGOR **pa, WOLFSSL_X509_PUBKEY *pub);
|
||||
WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_PUBKEY_get(WOLFSSL_X509_PUBKEY* key);
|
||||
WOLFSSL_API int wolfSSL_X509_PUBKEY_set(WOLFSSL_X509_PUBKEY **x, WOLFSSL_EVP_PKEY *key);
|
||||
WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a);
|
||||
WOLFSSL_API int wolfSSL_i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a);
|
||||
WOLFSSL_API WOLFSSL_ASN1_OBJECT *wolfSSL_d2i_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT **a,
|
||||
const unsigned char **der,
|
||||
long length);
|
||||
|
Reference in New Issue
Block a user