diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index 94b4d4f..73c81fd 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -346,7 +346,7 @@
 
 #define USAGE_KEY_OPAQUE_ALGS \
     "    key_opaque_algs=%%s  Allowed opaque key algorithms.\n"                      \
-    "                        coma-separated pair of values among the following:\n"   \
+    "                        comma-separated pair of values among the following:\n"   \
     "                        rsa-sign-pkcs1, rsa-sign-pss, rsa-decrypt,\n"           \
     "                        ecdsa-sign, ecdh, none (only acceptable for\n"          \
     "                        the second value).\n"                                   \
@@ -1323,8 +1323,8 @@
         }
         else if( strcmp( p, "key_opaque_algs" ) == 0 )
         {
-            if ( key_opaque_alg_parse( q, &opt.key_opaque_alg1,
-                                          &opt.key_opaque_alg2 ) != 0 )
+            if( key_opaque_alg_parse( q, &opt.key_opaque_alg1,
+                                         &opt.key_opaque_alg2 ) != 0 )
                 goto usage;
         }
         else
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index f04315e..f2d431c 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -458,7 +458,7 @@
 
 #define USAGE_KEY_OPAQUE_ALGS \
     "    key_opaque_algs=%%s  Allowed opaque key algorithms.\n"                      \
-    "                        coma-separated pair of values among the following:\n"   \
+    "                        comma-separated pair of values among the following:\n"   \
     "                        rsa-sign-pkcs1, rsa-sign-pss, rsa-decrypt,\n"           \
     "                        ecdsa-sign, ecdh, none (only acceptable for\n"          \
     "                        the second value).\n"                                   \
@@ -690,7 +690,7 @@
 }
 
 /*
- * Used by sni_parse and psk_parse to handle coma-separated lists
+ * Used by sni_parse and psk_parse to handle comma-separated lists
  */
 #define GET_ITEM( dst )         \
     do                          \
@@ -2103,8 +2103,8 @@
         }
         else if( strcmp( p, "key_opaque_algs" ) == 0 )
         {
-            if ( key_opaque_alg_parse( q, &opt.key_opaque_alg1,
-                                          &opt.key_opaque_alg2 ) != 0 )
+            if( key_opaque_alg_parse( q, &opt.key_opaque_alg1,
+                                         &opt.key_opaque_alg2 ) != 0 )
                 goto usage;
         }
         else
diff --git a/programs/ssl/ssl_test_lib.c b/programs/ssl/ssl_test_lib.c
index cfe7183..094a65d 100644
--- a/programs/ssl/ssl_test_lib.c
+++ b/programs/ssl/ssl_test_lib.c
@@ -203,19 +203,19 @@
     *alg1 = arg;
     *alg2 = separator + 1;
 
-    if ( strcmp( *alg1, "rsa-sign-pkcs1" ) != 0 &&
-         strcmp( *alg1, "rsa-sign-pss" ) != 0 &&
-         strcmp( *alg1, "rsa-decrypt" ) != 0 &&
-         strcmp( *alg1, "ecdsa-sign" ) != 0 &&
-         strcmp( *alg1, "ecdh" ) != 0 )
+    if( strcmp( *alg1, "rsa-sign-pkcs1" ) != 0 &&
+        strcmp( *alg1, "rsa-sign-pss" ) != 0 &&
+        strcmp( *alg1, "rsa-decrypt" ) != 0 &&
+        strcmp( *alg1, "ecdsa-sign" ) != 0 &&
+        strcmp( *alg1, "ecdh" ) != 0 )
         return 1;
 
-    if ( strcmp( *alg2, "rsa-sign-pkcs1" ) != 0 &&
-         strcmp( *alg2, "rsa-sign-pss" ) != 0 &&
-         strcmp( *alg2, "rsa-decrypt" ) != 0 &&
-         strcmp( *alg2, "ecdsa-sign" ) != 0 &&
-         strcmp( *alg2, "ecdh" ) != 0 &&
-         strcmp( *alg2, "none" ) != 0 )
+    if( strcmp( *alg2, "rsa-sign-pkcs1" ) != 0 &&
+        strcmp( *alg2, "rsa-sign-pss" ) != 0 &&
+        strcmp( *alg2, "rsa-decrypt" ) != 0 &&
+        strcmp( *alg2, "ecdsa-sign" ) != 0 &&
+        strcmp( *alg2, "ecdh" ) != 0 &&
+        strcmp( *alg2, "none" ) != 0 )
         return 1;
 
     return 0;
diff --git a/programs/ssl/ssl_test_lib.h b/programs/ssl/ssl_test_lib.h
index a0ca01d..e0ee79d 100644
--- a/programs/ssl/ssl_test_lib.h
+++ b/programs/ssl/ssl_test_lib.h
@@ -240,7 +240,6 @@
  */
 int key_opaque_alg_parse( const char *arg, const char **alg1, const char **alg2 );
 
-
 #if defined(MBEDTLS_USE_PSA_CRYPTO) && defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG)
 /* The test implementation of the PSA external RNG is insecure. When
  * MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG is enabled, before using any PSA crypto
