From 9f68541e0f55495d61dd9e583bec38740a247597 Mon Sep 17 00:00:00 2001 From: Angelo Mantellini Date: Tue, 5 Feb 2019 08:50:26 +0100 Subject: [HICN-26] Windows compatibilty for libparc Change-Id: I6ebff82a81a2bf42fa3bf210ff0e6e530ce21915 Signed-off-by: Angelo Mantellini --- libparc/parc/security/parc_Pkcs12KeyStore.c | 42 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'libparc/parc/security/parc_Pkcs12KeyStore.c') diff --git a/libparc/parc/security/parc_Pkcs12KeyStore.c b/libparc/parc/security/parc_Pkcs12KeyStore.c index f6c65e4f..12246593 100644 --- a/libparc/parc/security/parc_Pkcs12KeyStore.c +++ b/libparc/parc/security/parc_Pkcs12KeyStore.c @@ -13,31 +13,27 @@ * limitations under the License. */ -/** - */ +#ifndef _WIN32 +#include +#endif #include #include #include #include #include -#include #include - #include - #include #include #include #include - #include #include #include #include #include - #include #include @@ -102,12 +98,22 @@ _parcPkcs12KeyStore_ParseFile(PARCPkcs12KeyStore *keystore, const char *filename { parcSecurity_AssertIsInitialized(); +#ifndef _WIN32 FILE *fp = fopen(filename, "rb"); - parcAssertNotNull(fp, "Error opening %s: %s", filename, strerror(errno)); if (fp == NULL) { return -1; } +#else + FILE *fp; + errno_t err = fopen_s(&fp, filename, "rb"); + char errmsg[1024]; + strerror_s(errmsg, 1024, err); + parcAssertNotNull(fp, "Error opening %s: %s", filename, errmsg); + if (err != 0) { + return -1; + } +#endif PKCS12 *p12Keystore = NULL; d2i_PKCS12_fp(fp, &p12Keystore); @@ -156,17 +162,17 @@ PKCS12 *_createPkcs12KeyStore_RSA( // Extract the private key EVP_PKEY *privateKey = NULL; uint8_t *privateKeyBytes = parcBuffer_Overlay(privateKeyBuffer, parcBuffer_Limit(privateKeyBuffer)); - d2i_PrivateKey(EVP_PKEY_RSA, &privateKey, (const unsigned char **) &privateKeyBytes, parcBuffer_Limit(privateKeyBuffer)); + d2i_PrivateKey(EVP_PKEY_RSA, &privateKey, (const unsigned char **) &privateKeyBytes, (long)parcBuffer_Limit(privateKeyBuffer)); parcBuffer_Release(&privateKeyBuffer); - + // Extract the certificate PARCBuffer *certBuffer = parcCertificate_GetDEREncodedCertificate(certificate); uint8_t *certBytes = parcBuffer_Overlay(certBuffer, parcBuffer_Limit(certBuffer)); X509 *cert = NULL; - d2i_X509(&cert, (const unsigned char **) &certBytes, parcBuffer_Limit(certBuffer)); - + d2i_X509(&cert, (const unsigned char **) &certBytes, (long)parcBuffer_Limit(certBuffer)); + parcCertificate_Release(&certificate); - + PKCS12 *pkcs12 = PKCS12_create((char *) password, "ccnxuser", privateKey, @@ -190,17 +196,17 @@ PKCS12 *_createPkcs12KeyStore_ECDSA( // Extract the private key EVP_PKEY *privateKey = NULL; uint8_t *privateKeyBytes = parcBuffer_Overlay(privateKeyBuffer, parcBuffer_Limit(privateKeyBuffer)); - d2i_PrivateKey(EVP_PKEY_EC, &privateKey, (const unsigned char **) &privateKeyBytes, parcBuffer_Limit(privateKeyBuffer)); + d2i_PrivateKey(EVP_PKEY_EC, &privateKey, (const unsigned char **) &privateKeyBytes, (long)parcBuffer_Limit(privateKeyBuffer)); parcBuffer_Release(&privateKeyBuffer); - + // Extract the certificate PARCBuffer *certBuffer = parcCertificate_GetDEREncodedCertificate(certificate); uint8_t *certBytes = parcBuffer_Overlay(certBuffer, parcBuffer_Limit(certBuffer)); X509 *cert = NULL; - d2i_X509(&cert, (const unsigned char **) &certBytes, parcBuffer_Limit(certBuffer)); - + d2i_X509(&cert, (const unsigned char **) &certBytes, (long)parcBuffer_Limit(certBuffer)); + parcCertificate_Release(&certificate); - + PKCS12 *pkcs12 = PKCS12_create((char *) password, "ccnxuser", privateKey, -- cgit 1.2.3-korg