51

(2 replies, posted in wolfMQTT)

Hello mabduljawad

Thanks for joining the wolfSSL forums! The wolfMQTT library will only use malloc if configured to allocate MQTTv5 properties dynamically. By default, the library is stack-only.

For wolfSSL, check out the static memory guide:
https://www.wolfssl.com/docs/static-buffer-allocation/

Could you tell us a bit about your MQTT project? Feel free to email support@wolfssl.com for a more private discussion.

Thanks,
Eric - wolfSSL Support

52

(2 replies, posted in wolfCrypt)

Hello pathakpulkit06

Welcome to the wolfSSL Forums!

Yes, that error is usually an indication that the available stack should be increased. Could you share some more of your application code?

Here is an example that uses wc_PBKDF2 to stretch a password:
https://github.com/wolfSSL/wolfssl-exam … .c#L56-L60

Could you tell us a bit about your project goals using wolfSSL? Feel free to email support@wolfssl.com if you'd prefer a more private format.

Thanks,
Eric - wolfSSL Support

Hello east1ifep

Thanks for your question. We had to disable attachments in the forums, so I cannot review your pcap and log.

Could you please send this request to support@wolfssl.com, and we'll get a proper support ticket created to help you out.

Kind regards,
Eric - wolfSSL Support

Hello Jacob,

Welcome to the wolfSSL Forums.

I suspect this issue is related to a customer that has a support contract with us. Please email support@wolfssl.com to initiate a support ticket that will receive the highest priority response.

Thanks,
Eric - wolfSSL Support

55

(3 replies, posted in wolfMQTT)

Hi horroraround,

Thanks for joining the wolfSSL Forums. The max props define is set to 30, and can be overridden by defining MQTT_MAX_PROPS at build time. This was a design decision that allowed us to keep the library requirements small and still allow flexibility for applications.

Alternatively, if your application can tolerate dynamic memory usage, the library can allocate property structures dynamically using malloc. Just add the configuration define WOLFMQTT_DYN_PROP to enable this feature.

Thanks,
Eric - wolfSSL Support

The non-blocking ECC assembler component (sp_256_ecc_mulmod_8_nb), is a place-holder for future development. Obviously we do intend to implement this feature. If you'd like me to mark you down as interested in this feature, please send an email to support@wolfssl.com

Hi Siewie,

You've found one of the functions that does not support static memory allocation. You are handling it correctly. Would you like me to create a feature request to add static memory support to the `wc_ecc_curve_load` function?

Please send an email to support@wolfssl.com to begin that process.

Kind regards,
Eric - wolfSSL Support

Hi Siewie,

Welcome to the wolfSSL Forums. We encourage users to send an email to support@wolfssl.com in order to receive the highest priority support.

Here is a short RSA example that will give you an idea of the intended usage:
https://github.com/wolfSSL/wolfAsyncCry … sa-example

> (2) Is it correct that any hash function callback provided through "wc_CryptoCb_RegisterDevice" must be blocking?

No, the callbacks can be implemented as non-blocking, and utilize the async features.

> (3) It appears like we could improve the performance a lot by using the WOLFSSL_SP_ARM_CORTEX_M_ASM option. However, the non-blocking implementation is not available. Concretely, we are missing the definition of struct sp_256_ecc_mulmod_8_ctx and the function sp_256_ecc_mulmod_8_nb (wolfcrypt + wolfasynccrypt v5.6.6).

I'll check with the team on this question.

Thanks,
Eric - wolfSSL Support

Hi Anders,

Are you building wolfCrypt Pi?

Thanks,
Eric - wolfSSL Support

60

(8 replies, posted in wolfCrypt)

Yes, as long as the user_settings.h file is in the include path it will be used.

61

(8 replies, posted in wolfCrypt)

Add this option to the compiler CFLAGS "-DWOLFSSL_USER_SETTINGS"

62

(2 replies, posted in wolfSSL)

Hi Scotty

There are a couple of ways to resolve this. You could

  • Use NTP to set the time prior to connecting to the server.

  • Disable time verification during runtime by loading certs using _ex version of load API with WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY flag

  • Use a verify callback to override the date errors during the first server connection.

  • Configure no date checks ever - define NO_ASN_TIME_CHECK

Let us know if that helps.

Thanks,
Eric - wolfSSL Support

63

(8 replies, posted in wolfCrypt)

Hello groovytacocat,

Welcome to the wolfSSL forums!

There are two method for using a custom RNG source with wolfSSL:
"Custom Seed Source" using CUSTOM_RAND_GENERATE to seed the P-RNG
or
"Bypass P-RNG and use only HW RNG" using CUSTOM_RAND_GENERATE_BLOCK

By setting NO_HASHDRBG, you are disabling the P-RNG, but you have not defined CUSTOM_RAND_GENERATE_BLOCK

Please try removing the define for NO_HASHDRBG


Could you tell us a bit more about your project using wolfSSL? Feel free to email us at support@wolfssl.com if you'd prefer a more private venue.

Thanks,
Eric - wolfSSL Support

64

(4 replies, posted in wolfSSL)

Hi RJ,

You can use VSCode to build the wolfSSL library by simply opening the folder where you cloned or downloaded wolfSSL.

Or you can use the GitHub extension to "Clone GitHub Repository..."
Enter "https://github.com/wolfSSL/wolfssl.git"
Then "Clone from URL https://github.com/wolfSSL/wolfssl.git" and select a folder in which to store the code.

Next you can build using Cmake, or using the command line using these instructions:
https://github.com/wolfSSL/wolfssl/blob/master/INSTALL

After installing wolfSSL, you can link the library to your application by adding "-lwolfssl" to your compiler flags. Be sure to add the wolfSSL include files that were installed to the application.

#include <wolfssl/options.h>
#include <wolfssl/wolfcrypt/settings.h>

65

(1 replies, posted in wolfSSL)

Hello RJ

Thanks for joining the wolfSSL Forums. We have an excellent examples repository. You will need to create a new MPLABX project, as these are generic examples, not Harmony specific:
https://github.com/wolfSSL/wolfssl-exam … er-tls13.c

Could you tell us a bit about your project? Feel free to email support@wolfssl.com if you'd prefer to keep this information private.

Thanks,
Eric - wolfSSL Support

Hello Bilal,

Thanks for joining the wolfSSL Forums. The -188 error indicates that the client should load a CA cert that can be used to verify the server's cert during the handshake. As you found, you can skip this check, or use a verify callback.

The -112 error is commonly encountered when a memory alloc fails.

Could you please tell us a bit about your project? Please feel free to send an email to support@wolfssl.com if you'd prefer a more private discussion.

Thanks,
Eric - wolfSSL Support

67

(27 replies, posted in wolfSSL)

Hello Adam,

Thanks for joining the wolfSSL forums. I am checking with the team to see if we any relevant docs or examples for ESP32 using Arduino framework.

Could you tell us a bit about your project? If you'd prefer to keep it private, feel free to email support@wolfssl.com

Kind regards,
Eric - wolfSSL Support

Hello Óscar,

Thanks for joining the wolfSSL Forums.

Here are the DTLS demos:
https://github.com/wolfSSL/wolfssl-exam … aster/dtls

And here are the PSK demos for TLS, which you can easily adapt to DTLS:
https://github.com/wolfSSL/wolfssl-exam … master/psk

Can you tell us a bit about your project using wolfSSL?

Thanks,
Eric - wolfSSL Support

Hi Karthikeyan

Thanks for joining the wolfSSL forums. I've copied my answer to the support ticket you opened here:

Are you already able to build wolfSSL in MPLAB?
https://github.com/wolfSSL/wolfssl/tree/master/mplabx

After you get wolfSSL building, we have an unofficial port of wolfSSH for MPLAB:
https://github.com/wolfSSL/wolfssh/pull/52

You can follow the instructions in the readme:
https://github.com/wolfSSL/wolfssh/blob … /README.md

70

(1 replies, posted in wolfSSL)

Hi sand7000

Welcome to the wolfSSL Forums! Please send an email to facts@wolfssl.com and we can get you in contact with the right business director. Sounds like a cool project. Is this something you will be open-sourcing?

Thanks,
Eric - wolfSSL Support

Hello jbquick,

Thanks for contacting wolfSSL Support. I have requested a review of this from a colleague.

72

(4 replies, posted in wolfSSL)

Hi aashishkul,

Excellent! the library is very flexible, and your expectations are reasonable. Here is a link to our tuning guide:
https://www.wolfssl.com/docs/tuning-guide/

Additionally, here are some reference configurations that will be useful:
https://github.com/wolfSSL/wolfssl/tree … es/configs

For additional assistance with optimization, please open a support ticket by emailing support@wolfssl.com

Regarding the warning, are you working with the latest version of the library?

73

(2 replies, posted in wolfSSL)

Hi astc

What is the server doing? If it is not sending messages, I could see where your test would break.

I modified our simple examples to do what you are trying to accomplish:
https://github.com/wolfSSL/wolfssl-exam … master/tls

diff --git a/tls/client-tls.c b/tls/client-tls.c
index d1e06be..9f13d84 100644
--- a/tls/client-tls.c
+++ b/tls/client-tls.c
@@ -133,32 +133,68 @@ int main(int argc, char** argv)
         goto cleanup;
     }
 
-    /* Get a message for the server from stdin */
-    printf("Message for server: ");
-    memset(buff, 0, sizeof(buff));
-    if (fgets(buff, sizeof(buff), stdin) == NULL) {
-        fprintf(stderr, "ERROR: failed to get message for server\n");
-        ret = -1;
-        goto cleanup;
-    }
-    len = strnlen(buff, sizeof(buff));
-
-    /* Send the message to the server */
-    if ((ret = wolfSSL_write(ssl, buff, len)) != len) {
-        fprintf(stderr, "ERROR: failed to write entire message\n");
-        fprintf(stderr, "%d bytes of %d bytes were sent", ret, (int) len);
-        goto cleanup;
+#if 1
+    while (1)
+    {
+        int err;
+        char stringtosend[1024];
+        char readBuf[1024];
+
+        printf("Send a string to the server\n"
+               "x to exit\n");
+        if (fgets(stringtosend, sizeof(stringtosend), stdin) == NULL) {
+            printf("error reading");
+        }
+        do {
+            ret = wolfSSL_write(ssl, stringtosend, sizeof(stringtosend));
+            err = wolfSSL_get_error(ssl, ret);
+        } while (err == WOLFSSL_ERROR_WANT_READ || err == WOLFSSL_ERROR_WANT_WRITE);
+        printf("Sent (%d): %s\n", err, stringtosend);
+
+        XMEMSET(readBuf, 0, sizeof(readBuf));
+        do {
+            ret = wolfSSL_read(ssl, readBuf, sizeof(readBuf)-1);
+            err = wolfSSL_get_error(ssl, ret);
+        } while (err == WOLFSSL_ERROR_WANT_READ || err == WOLFSSL_ERROR_WANT_WRITE);
+        printf("Read (%d): %s\n", err, readBuf);
+
+
+        //ssl->buffers.clearOutputBuffer.length = 0;
+        if (stringtosend[0] == 'x' && stringtosend[1] == '\n'){
+            break;
+        }
     }
-
-    /* Read the server data into our buff array */
-    memset(buff, 0, sizeof(buff));
-    if ((ret = wolfSSL_read(ssl, buff, sizeof(buff)-1)) == -1) {
-        fprintf(stderr, "ERROR: failed to read\n");
-        goto cleanup;
-    }
-
-    /* Print to stdout any data the server sends */
-    printf("Server: %s\n", buff);
+#else
+    do {
+        /* Get a message for the server from stdin */
+        printf("Message for server: ");
+        memset(buff, 0, sizeof(buff));
+        if (fgets(buff, sizeof(buff), stdin) == NULL) {
+            fprintf(stderr, "ERROR: failed to get message for server\n");
+            ret = -1;
+            goto cleanup;
+        }
+        len = strnlen(buff, sizeof(buff));
+
+        /* Send the message to the server */
+        if ((ret = wolfSSL_write(ssl, buff, len)) != len) {
+            fprintf(stderr, "ERROR: failed to write entire message\n");
+            fprintf(stderr, "%d bytes of %d bytes were sent", ret, (int) len);
+            goto cleanup;
+        }
+
+        /* Read the server data into our buff array */
+        memset(buff, 0, sizeof(buff));
+        if ((ret = wolfSSL_read(ssl, buff, sizeof(buff)-1)) == -1) {
+            fprintf(stderr, "ERROR: failed to read\n");
+            goto cleanup;
+        }
+
+        /* Print to stdout any data the server sends */
+        printf("Server: %s\n", buff);
+
+    } while(1);
+#endif
 
     /* Bidirectional shutdown */
     while (wolfSSL_shutdown(ssl) == SSL_SHUTDOWN_NOT_DONE) {
diff --git a/tls/server-tls.c b/tls/server-tls.c
index fa79a4d..6fc3c50 100644
--- a/tls/server-tls.c
+++ b/tls/server-tls.c
@@ -160,35 +160,35 @@ int main()
 
         printf("Client connected successfully\n");
 
-
-
-        /* Read the client data into our buff array */
-        memset(buff, 0, sizeof(buff));
-        if ((ret = wolfSSL_read(ssl, buff, sizeof(buff)-1)) == -1) {
-            fprintf(stderr, "ERROR: failed to read\n");
-            goto exit;
-        }
-
-        /* Print to stdout any data the client sends */
-        printf("Client: %s\n", buff);
-
-        /* Check for server shutdown command */
-        if (strncmp(buff, "shutdown", 8) == 0) {
-            printf("Shutdown command issued!\n");
-            shutdown = 1;
-        }
-
-
-
-        /* Write our reply into buff */
-        memset(buff, 0, sizeof(buff));
-        memcpy(buff, reply, strlen(reply));
-        len = strnlen(buff, sizeof(buff));
-
-        /* Reply back to the client */
-        if ((ret = wolfSSL_write(ssl, buff, len)) != len) {
-            fprintf(stderr, "ERROR: failed to write\n");
-            goto exit;
+        while(!shutdown) {
+            /* Read the client data into our buff array */
+            memset(buff, 0, sizeof(buff));
+            if ((ret = wolfSSL_read(ssl, buff, sizeof(buff)-1)) == -1) {
+                fprintf(stderr, "ERROR: failed to read\n");
+                goto exit;
+            }
+
+            /* Print to stdout any data the client sends */
+            printf("Client: %s\n", buff);
+
+            /* Check for server shutdown command */
+            if (strncmp(buff, "shutdown", 8) == 0) {
+                printf("Shutdown command issued!\n");
+                shutdown = 1;
+            }
+
+
+
+            /* Write our reply into buff */
+            memset(buff, 0, sizeof(buff));
+            memcpy(buff, reply, strlen(reply));
+            len = strnlen(buff, sizeof(buff));
+
+            /* Reply back to the client */
+            if ((ret = wolfSSL_write(ssl, buff, len)) != len) {
+                fprintf(stderr, "ERROR: failed to write\n");
+                goto exit;
+            }
         }
 
         /* Notify the client that the connection is ending */

74

(4 replies, posted in wolfSSL)

Hello aashishkul

Welcome to the wolfSSL Forums.

You can build a non-standard environment by creating a new library project and pointing to the source and header folders.
https://www.wolfssl.com/documentation/m … nvironment

You do not need to use the autotools scripts to generate make files. You can place all the configuration defines into a file name user_settings.h and add a CFLAG define for WOLFSSL_USER_SETTINGS.

Additionally, we offer services to get wolfSSL built in your environment. Please send an email to facts@wolfssl.com to learn more about this process.

Thanks,
Eric - wolfSSL Support

Hi razvi.david

Are you working with the latest code from the repository? We did recently fix an issue that sounds similar to this.

Would you like to open a support ticket? The forum is a low priority venue for helping customers. Please send an email to support@wolfssl.com and reference this forum post.

Thanks,
Eric - wolfSSL Support