diff --git a/cyassl/ctaocrypt/asn_public.h b/cyassl/ctaocrypt/asn_public.h index 4650abb7f..ce7d1f789 100644 --- a/cyassl/ctaocrypt/asn_public.h +++ b/cyassl/ctaocrypt/asn_public.h @@ -29,166 +29,88 @@ #include #endif +#include -#ifdef __cplusplus - extern "C" { +#ifndef HAVE_FIPS +#ifdef WOLFSSL_CERT_GEN +#define InitCert wc_InitCert +#define MakeCert wc_MakeCert +#ifdef WOLFSSL_CERT_REQ +#define MakeCertReq wc_MakeCertReq #endif - - -/* Certificate file Type */ -enum CertType { - CERT_TYPE = 0, - PRIVATEKEY_TYPE, - DH_PARAM_TYPE, - CRL_TYPE, - CA_TYPE, - ECC_PRIVATEKEY_TYPE, - CERTREQ_TYPE -}; - - -/* Signature type, by OID sum */ -enum Ctc_SigType { - CTC_SHAwDSA = 517, - CTC_MD2wRSA = 646, - CTC_MD5wRSA = 648, - CTC_SHAwRSA = 649, - CTC_SHAwECDSA = 520, - CTC_SHA256wRSA = 655, - CTC_SHA256wECDSA = 524, - CTC_SHA384wRSA = 656, - CTC_SHA384wECDSA = 525, - CTC_SHA512wRSA = 657, - CTC_SHA512wECDSA = 526 -}; - -enum Ctc_Encoding { - CTC_UTF8 = 0x0c, /* utf8 */ - CTC_PRINTABLE = 0x13 /* printable */ -}; - - -#ifdef CYASSL_CERT_GEN - -#ifndef HAVE_ECC - typedef struct ecc_key ecc_key; +#define SignCert wc_SignCert +#define MakeSelfCert wc_MakeSelfCert +#define SetIssuer wc_SetIssuer +#define SetSubject wc_SetSubject +#ifdef WOLFSSL_ALT_NAMES +#define SetAltNames wc_SetAltNames #endif - -enum Ctc_Misc { - CTC_NAME_SIZE = 64, - CTC_DATE_SIZE = 32, - CTC_MAX_ALT_SIZE = 16384, /* may be huge */ - CTC_SERIAL_SIZE = 8 -}; - -typedef struct CertName { - char country[CTC_NAME_SIZE]; - char countryEnc; - char state[CTC_NAME_SIZE]; - char stateEnc; - char locality[CTC_NAME_SIZE]; - char localityEnc; - char sur[CTC_NAME_SIZE]; - char surEnc; - char org[CTC_NAME_SIZE]; - char orgEnc; - char unit[CTC_NAME_SIZE]; - char unitEnc; - char commonName[CTC_NAME_SIZE]; - char commonNameEnc; - char email[CTC_NAME_SIZE]; /* !!!! email has to be last !!!! */ -} CertName; - - -/* for user to fill for certificate generation */ -typedef struct Cert { - int version; /* x509 version */ - byte serial[CTC_SERIAL_SIZE]; /* serial number */ - int sigType; /* signature algo type */ - CertName issuer; /* issuer info */ - int daysValid; /* validity days */ - int selfSigned; /* self signed flag */ - CertName subject; /* subject info */ - int isCA; /* is this going to be a CA */ - /* internal use only */ - int bodySz; /* pre sign total size */ - int keyType; /* public key type of subject */ -#ifdef CYASSL_ALT_NAMES - byte altNames[CTC_MAX_ALT_SIZE]; /* altNames copy */ - int altNamesSz; /* altNames size in bytes */ - byte beforeDate[CTC_DATE_SIZE]; /* before date copy */ - int beforeDateSz; /* size of copy */ - byte afterDate[CTC_DATE_SIZE]; /* after date copy */ - int afterDateSz; /* size of copy */ -#endif -#ifdef CYASSL_CERT_REQ - char challengePw[CTC_NAME_SIZE]; -#endif -} Cert; - - - - -/* Initialize and Set Certficate defaults: - version = 3 (0x2) - serial = 0 (Will be randomly generated) - sigType = SHA_WITH_RSA - issuer = blank - daysValid = 500 - selfSigned = 1 (true) use subject as issuer - subject = blank - isCA = 0 (false) - keyType = RSA_KEY (default) -*/ -CYASSL_API void InitCert(Cert*); -CYASSL_API int MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, - ecc_key*, RNG*); -#ifdef CYASSL_CERT_REQ - CYASSL_API int MakeCertReq(Cert*, byte* derBuffer, word32 derSz, RsaKey*, - ecc_key*); -#endif -CYASSL_API int SignCert(int requestSz, int sigType, byte* derBuffer, - word32 derSz, RsaKey*, ecc_key*, RNG*); -CYASSL_API int MakeSelfCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, - RNG*); -CYASSL_API int SetIssuer(Cert*, const char*); -CYASSL_API int SetSubject(Cert*, const char*); -#ifdef CYASSL_ALT_NAMES - CYASSL_API int SetAltNames(Cert*, const char*); -#endif -CYASSL_API int SetIssuerBuffer(Cert*, const byte*, int); -CYASSL_API int SetSubjectBuffer(Cert*, const byte*, int); -CYASSL_API int SetAltNamesBuffer(Cert*, const byte*, int); -CYASSL_API int SetDatesBuffer(Cert*, const byte*, int); +#define SetIssuerBuffer wc_SetIssuerBuffer +#define SetSubjectBuffer wc_SetSubjectBuffer +#define SetAltNamesBuffer wc_SetAltNamesBuffer +#define SetDatesBuffer wc_SetDatesBuffer #ifdef HAVE_NTRU - CYASSL_API int MakeNtruCert(Cert*, byte* derBuffer, word32 derSz, - const byte* ntruKey, word16 keySz, RNG*); +#define MakeNtruCert wc_MakeNtruCert #endif -#endif /* CYASSL_CERT_GEN */ - - -#if defined(CYASSL_KEY_GEN) || defined(CYASSL_CERT_GEN) - CYASSL_API int DerToPem(const byte* der, word32 derSz, byte* output, - word32 outputSz, int type); +#endif /* WOLFSSL_CERT_GEN */ +#if defined(WOLFSSL_KEY_GEN) || defined(WOLFSSL_CERT_GEN) +#define DerToPem wc_DerToPem #endif #ifdef HAVE_ECC /* private key helpers */ - CYASSL_API int EccPrivateKeyDecode(const byte* input,word32* inOutIdx, - ecc_key*,word32); - CYASSL_API int EccKeyToDer(ecc_key*, byte* output, word32 inLen); +#define EccPrivateKeyDecode wc_EccPrivateKeyDecode +#define EccKeyToDer wc_EccKeyToDer #endif /* DER encode signature */ -CYASSL_API word32 EncodeSignature(byte* out, const byte* digest, word32 digSz, - int hashOID); -CYASSL_API int GetCTC_HashOID(int type); +#define EncodeSignature wc_EncodeSignature +#define GetCTC_HashOID wc_GetCTC_HashOID -#ifdef __cplusplus - } /* extern "C" */ +#else + +#define WOLFSSL_CERT_GEN CYASSL_CERTGEN +#define WOLFSSL_CERT_REQ CYASSL_CERT_REQ +#define WOLFSSL_ALT_NAMES CYASSL_ALT_NAMES + +#ifdef WOLFSSL_CERT_GEN +#define wc_InitCert InitCert +#define wc_MakeCert MakeCert +#ifdef WOLFSSL_CERT_REQ +#define wc_MakeCertReq MakeCertReq +#endif +#define wc_SignCert SignCert +#define wc_MakeSelfCert MakeSelfCert +#define wc_SetIssuer SetIssuer +#define wc_SetSubject SetSubject +#ifdef WOLFSSL_ALT_NAMES +#define wc_SetAltNames SetAltNames +#endif +#define wc_SetIssuerBuffer SetIssuerBuffer +#define wc_SetSubjectBuffer SetSubjectBuffer +#define wc_SetAltNamesBuffer SetAltNamesBuffer +#define wc_SetDatesBuffer SetDatesBuffer + + #ifdef HAVE_NTRU +#define wc_MakeNtruCert MakeNtruCert + #endif + +#endif /* WOLFSSL_CERT_GEN */ +#if defined(WOLFSSL_KEY_GEN) || defined(WOLFSSL_CERT_GEN) +#define wc_DerToPem DerToPem #endif -#endif /* CTAO_CRYPT_ASN_PUBLIC_H */ +#ifdef HAVE_ECC + /* private key helpers */ +#define wc_EccPrivateKeyDecode EccPrivateKeyDecode +#define wc_EccKeyToDer EccKeyToDer +#endif + +/* DER encode signature */ +#define wc_EncodeSignature EncodeSignature +#define wc_GetCTC_HashOID GetCTC_HashOID +#endif /* HAVE_FIPS */ +#endif /* CTA_CRYPT_ASN_PUBLIC_H */ diff --git a/cyassl/ctaocrypt/types.h b/cyassl/ctaocrypt/types.h index bf7dac728..410319185 100644 --- a/cyassl/ctaocrypt/types.h +++ b/cyassl/ctaocrypt/types.h @@ -26,11 +26,11 @@ #ifndef HAVE_FIPS #include /* compatibility macros */ -#define CYASSL_WORD_SIZE WOLFSSL_WORD_SIZE -#define CYASSL_BIT_SIZE WOLFSSL_BIT_SIZE -#define CYASSL_MAX_16BIT WOLFSSL_MAX_16BIT -#define CYASSL_MAX_ERROR_SZ WOLFSSL_MAX_ERROR_SZ -#define cyassl_word wolfssl_word + #define CYASSL_WORD_SIZE WOLFSSL_WORD_SIZE + #define CYASSL_BIT_SIZE WOLFSSL_BIT_SIZE + #define CYASSL_MAX_16BIT WOLFSSL_MAX_16BIT + #define CYASSL_MAX_ERROR_SZ WOLFSSL_MAX_ERROR_SZ + #define cyassl_word wolfssl_word #else #include diff --git a/src/include.am b/src/include.am index 87e0839d1..f425e30d1 100644 --- a/src/include.am +++ b/src/include.am @@ -83,12 +83,8 @@ src_libwolfssl_la_SOURCES += wolfcrypt/src/dh.c endif if BUILD_ASN -if BUILD_FIPS -src_libwolfssl_la_SOURCES += ctaocrypt/src/asn.c -else src_libwolfssl_la_SOURCES += wolfcrypt/src/asn.c endif -endif if BUILD_CODING if BUILD_FIPS diff --git a/wolfssl/wolfcrypt/types.h b/wolfssl/wolfcrypt/types.h index 6da094c2d..6c354266a 100644 --- a/wolfssl/wolfcrypt/types.h +++ b/wolfssl/wolfcrypt/types.h @@ -40,6 +40,11 @@ #endif #define WOLFSSL_MAX_ERROR_SZ CYASSL_MAX_ERROR_SZ + #define WOLFSSL_WORD_SIZE CYASSL_WORD_SIZE + #define WOLFSSL_BIT_SIZE CYASSL_BIT_SIZE + #define WOLFSSL_MAX_16BIT CYASSL_MAX_16BIT + #define WOLFSSL_MAX_ERROR_SZ CYASSL_MAX_ERROR_SZ + #define wolfssl_word cyassl_word /* memory macros */ /* when using fips map wolfSSL to CyaSSL*/ #define wolfSSL_Malloc_cb CyaSSL_Malloc_cb