From 3eb12cc8e9a0877ca8e27dba496a980d5672d020 Mon Sep 17 00:00:00 2001 From: David Garske Date: Fri, 4 Sep 2020 11:26:24 -0700 Subject: [PATCH] Port for Xilinx (xilffs) file system support. --- wolfssl/ssl.h | 4 ++-- wolfssl/wolfcrypt/wc_port.h | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 26fe814d4..c0cf8892b 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -2167,7 +2167,7 @@ WOLFSSL_API WOLFSSL_X509* WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out); WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl, const unsigned char *in, int len); -#ifndef NO_FILESYSTEM +#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE file, WOLFSSL_X509_CRL **crl); #endif WOLFSSL_API void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl); @@ -2202,7 +2202,7 @@ typedef struct WC_PKCS12 WC_PKCS12; WOLFSSL_API WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio, WC_PKCS12** pkcs12); WOLFSSL_API int wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO *bio, WC_PKCS12 *pkcs12); -#ifndef NO_FILESYSTEM +#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) WOLFSSL_API WOLFSSL_X509_PKCS12* wolfSSL_d2i_PKCS12_fp(XFILE fp, WOLFSSL_X509_PKCS12** pkcs12); #endif diff --git a/wolfssl/wolfcrypt/wc_port.h b/wolfssl/wolfcrypt/wc_port.h index 1c5316563..08a1d2f9e 100644 --- a/wolfssl/wolfcrypt/wc_port.h +++ b/wolfssl/wolfcrypt/wc_port.h @@ -418,6 +418,23 @@ WOLFSSL_API int wolfCrypt_Cleanup(void); #define XBADFILE -1 #define XFGETS(b,s,f) -2 /* Not ported yet */ +#elif defined (WOLFSSL_XILINX) + #include "xsdps.h" + #include "ff.h" + + /* workaround to declare variable and provide type */ + #define XFILE FIL curFile; FIL* + #define XFOPEN(NAME, MODE) ({ FRESULT res; res = f_open(&curFile, (NAME), (FA_OPEN_ALWAYS | FA_WRITE | FA_READ)); (res == FR_OK) ? &curFile : NULL; }) + #define XFSEEK(F, O, W) f_lseek((F), (O)) + #define XFTELL(F) f_tell((F)) + #define XREWIND(F) f_rewind((F)) + #define XFREAD(BUF, SZ, AMT, F) ({ FRESULT res; UINT br; res = f_read((F), (BUF), (SZ)*(AMT), &br); (void)br; res; }) + #define XFWRITE(BUF, SZ, AMT, F) ({ FRESULT res; UINT written; res = f_write((F), (BUF), (SZ)*(AMT), &written); (void)written; res; }) + #define XFCLOSE(F) f_close((F)) + #define XSEEK_END 0 + #define XBADFILE NULL + #define XFGETS(b,s,f) f_gets((b), (s), (f)) + #elif defined(WOLFSSL_USER_FILESYSTEM) /* To be defined in user_settings.h */ #else