Change in libosmocore[master]: base64: Migrate over to osmocom

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Tue Sep 21 19:57:56 UTC 2021


laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/25497 )

Change subject: base64: Migrate over to osmocom
......................................................................

base64: Migrate over to osmocom

This containts the osmocom changes to the mbedtls base64 code
merged in the previous commit.

Change-Id: I82c1bf5f827c8def370dbcb80b146e9e4184c4a3
---
M include/Makefile.am
M include/osmocom/core/base64.h
M src/Makefile.am
M src/base64.c
M tests/Makefile.am
A tests/base64/base64_test.c
A tests/base64/base64_test.ok
M tests/testsuite.at
8 files changed, 85 insertions(+), 107 deletions(-)

Approvals:
  laforge: Looks good to me, approved; Verified
  fixeria: Looks good to me, but someone else must approve



diff --git a/include/Makefile.am b/include/Makefile.am
index e25ed48..7df651a 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -6,6 +6,7 @@
                        osmocom/codec/gsm610_bits.h \
                        osmocom/core/application.h \
                        osmocom/core/backtrace.h \
+                       osmocom/core/base64.h \
                        osmocom/core/bit16gen.h \
                        osmocom/core/bit32gen.h \
                        osmocom/core/bit64gen.h \
diff --git a/include/osmocom/core/base64.h b/include/osmocom/core/base64.h
index 0f7233d..f73db0d 100644
--- a/include/osmocom/core/base64.h
+++ b/include/osmocom/core/base64.h
@@ -21,14 +21,10 @@
  *  with this program; if not, write to the Free Software Foundation, Inc.,
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
-#ifndef MBEDTLS_BASE64_H
-#define MBEDTLS_BASE64_H
+#pragma once
 
 #include <stddef.h>
 
-#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL               -0x002A  /**< Output buffer too small. */
-#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER              -0x002C  /**< Invalid character in input. */
-
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -49,7 +45,7 @@
  * \note           Call this function with dlen = 0 to obtain the
  *                 required buffer size in *olen
  */
-int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen,
+int osmo_base64_encode( unsigned char *dst, size_t dlen, size_t *olen,
                    const unsigned char *src, size_t slen );
 
 /**
@@ -69,18 +65,9 @@
  * \note           Call this function with *dst = NULL or dlen = 0 to obtain
  *                 the required buffer size in *olen
  */
-int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen,
+int osmo_base64_decode( unsigned char *dst, size_t dlen, size_t *olen,
                    const unsigned char *src, size_t slen );
 
-/**
- * \brief          Checkup routine
- *
- * \return         0 if successful, or 1 if the test failed
- */
-int mbedtls_base64_self_test( int verbose );
-
 #ifdef __cplusplus
 }
 #endif
-
-#endif /* base64.h */
diff --git a/src/Makefile.am b/src/Makefile.am
index 2f18d09..3c589e6 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -31,6 +31,7 @@
 			 exec.c \
 			 it_q.c \
 			 probes.d \
+			 base64.c \
 			 $(NULL)
 
 if HAVE_SSSE3
diff --git a/src/base64.c b/src/base64.c
index 11cb30b..dbc908b 100644
--- a/src/base64.c
+++ b/src/base64.c
@@ -20,27 +20,11 @@
  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#if !defined(MBEDTLS_CONFIG_FILE)
-#include "mbedtls/config.h"
-#else
-#include MBEDTLS_CONFIG_FILE
-#endif
-
-#if defined(MBEDTLS_BASE64_C)
-
-#include "mbedtls/base64.h"
+#include <osmocom/core/base64.h>
 
 #include <stdint.h>
-
-#if defined(MBEDTLS_SELF_TEST)
-#include <string.h>
-#if defined(MBEDTLS_PLATFORM_C)
-#include "mbedtls/platform.h"
-#else
 #include <stdio.h>
-#define mbedtls_printf printf
-#endif /* MBEDTLS_PLATFORM_C */
-#endif /* MBEDTLS_SELF_TEST */
+#include <errno.h>
 
 static const unsigned char base64_enc_map[64] =
 {
@@ -73,7 +57,7 @@
 /*
  * Encode a buffer into base64 format
  */
-int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen,
+int osmo_base64_encode( unsigned char *dst, size_t dlen, size_t *olen,
                    const unsigned char *src, size_t slen )
 {
     size_t i, n;
@@ -98,7 +82,7 @@
     if( dlen < n + 1 )
     {
         *olen = n + 1;
-        return( MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL );
+        return( -ENOBUFS );
     }
 
     n = ( slen / 3 ) * 3;
@@ -139,7 +123,7 @@
 /*
  * Decode a base64-formatted buffer
  */
-int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen,
+int osmo_base64_decode( unsigned char *dst, size_t dlen, size_t *olen,
                    const unsigned char *src, size_t slen )
 {
     size_t i, n;
@@ -170,16 +154,16 @@
 
         /* Space inside a line is an error */
         if( x != 0 )
-            return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER );
+            return( -EINVAL );
 
         if( src[i] == '=' && ++j > 2 )
-            return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER );
+            return( -EINVAL );
 
         if( src[i] > 127 || base64_dec_map[src[i]] == 127 )
-            return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER );
+            return( -EINVAL );
 
         if( base64_dec_map[src[i]] < 64 && j != 0 )
-            return( MBEDTLS_ERR_BASE64_INVALID_CHARACTER );
+            return( -EINVAL );
 
         n++;
     }
@@ -193,7 +177,7 @@
     if( dst == NULL || dlen < n )
     {
         *olen = n;
-        return( MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL );
+        return( -ENOBUFS );
     }
 
    for( j = 3, n = x = 0, p = dst; i > 0; i--, src++ )
@@ -217,68 +201,3 @@
 
     return( 0 );
 }
-
-#if defined(MBEDTLS_SELF_TEST)
-
-static const unsigned char base64_test_dec[64] =
-{
-    0x24, 0x48, 0x6E, 0x56, 0x87, 0x62, 0x5A, 0xBD,
-    0xBF, 0x17, 0xD9, 0xA2, 0xC4, 0x17, 0x1A, 0x01,
-    0x94, 0xED, 0x8F, 0x1E, 0x11, 0xB3, 0xD7, 0x09,
-    0x0C, 0xB6, 0xE9, 0x10, 0x6F, 0x22, 0xEE, 0x13,
-    0xCA, 0xB3, 0x07, 0x05, 0x76, 0xC9, 0xFA, 0x31,
-    0x6C, 0x08, 0x34, 0xFF, 0x8D, 0xC2, 0x6C, 0x38,
-    0x00, 0x43, 0xE9, 0x54, 0x97, 0xAF, 0x50, 0x4B,
-    0xD1, 0x41, 0xBA, 0x95, 0x31, 0x5A, 0x0B, 0x97
-};
-
-static const unsigned char base64_test_enc[] =
-    "JEhuVodiWr2/F9mixBcaAZTtjx4Rs9cJDLbpEG8i7hPK"
-    "swcFdsn6MWwINP+Nwmw4AEPpVJevUEvRQbqVMVoLlw==";
-
-/*
- * Checkup routine
- */
-int mbedtls_base64_self_test( int verbose )
-{
-    size_t len;
-    const unsigned char *src;
-    unsigned char buffer[128];
-
-    if( verbose != 0 )
-        mbedtls_printf( "  Base64 encoding test: " );
-
-    src = base64_test_dec;
-
-    if( mbedtls_base64_encode( buffer, sizeof( buffer ), &len, src, 64 ) != 0 ||
-         memcmp( base64_test_enc, buffer, 88 ) != 0 )
-    {
-        if( verbose != 0 )
-            mbedtls_printf( "failed\n" );
-
-        return( 1 );
-    }
-
-    if( verbose != 0 )
-        mbedtls_printf( "passed\n  Base64 decoding test: " );
-
-    src = base64_test_enc;
-
-    if( mbedtls_base64_decode( buffer, sizeof( buffer ), &len, src, 88 ) != 0 ||
-         memcmp( base64_test_dec, buffer, 64 ) != 0 )
-    {
-        if( verbose != 0 )
-            mbedtls_printf( "failed\n" );
-
-        return( 1 );
-    }
-
-    if( verbose != 0 )
-        mbedtls_printf( "passed\n\n" );
-
-    return( 0 );
-}
-
-#endif /* MBEDTLS_SELF_TEST */
-
-#endif /* MBEDTLS_BASE64_C */
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5c6f30c..22591fb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -43,6 +43,7 @@
 		 bssmap_le/bssmap_le_test				\
 		 it_q/it_q_test						\
 		 gsm48/rest_octets_test					\
+		 base64/base64_test					\
 		 $(NULL)
 
 if ENABLE_MSGFILE
@@ -79,6 +80,8 @@
 check_PROGRAMS += gb/bssgp_fc_test gb/gprs_bssgp_test gb/gprs_bssgp_rim_test gb/gprs_ns_test gb/gprs_ns2_test fr/fr_test
 endif
 
+base64_base64_test_SOURCES = base64/base64_test.c
+
 utils_utils_test_SOURCES = utils/utils_test.c
 utils_utils_test_LDADD = $(LDADD) $(top_builddir)/src/gsm/libosmogsm.la
 
@@ -405,6 +408,7 @@
 	     bssmap_le/bssmap_le_test.ok \
 	     it_q/it_q_test.ok \
 	     gsm48/rest_octets_test.ok \
+	     base64/base64_test.ok \
 	     $(NULL)
 
 if ENABLE_LIBSCTP
diff --git a/tests/base64/base64_test.c b/tests/base64/base64_test.c
new file mode 100644
index 0000000..e85f649
--- /dev/null
+++ b/tests/base64/base64_test.c
@@ -0,0 +1,57 @@
+#include <osmocom/core/base64.h>
+#include <stdio.h>
+#include <string.h>
+
+static const unsigned char base64_test_dec[64] =
+{
+    0x24, 0x48, 0x6E, 0x56, 0x87, 0x62, 0x5A, 0xBD,
+    0xBF, 0x17, 0xD9, 0xA2, 0xC4, 0x17, 0x1A, 0x01,
+    0x94, 0xED, 0x8F, 0x1E, 0x11, 0xB3, 0xD7, 0x09,
+    0x0C, 0xB6, 0xE9, 0x10, 0x6F, 0x22, 0xEE, 0x13,
+    0xCA, 0xB3, 0x07, 0x05, 0x76, 0xC9, 0xFA, 0x31,
+    0x6C, 0x08, 0x34, 0xFF, 0x8D, 0xC2, 0x6C, 0x38,
+    0x00, 0x43, 0xE9, 0x54, 0x97, 0xAF, 0x50, 0x4B,
+    0xD1, 0x41, 0xBA, 0x95, 0x31, 0x5A, 0x0B, 0x97
+};
+
+static const unsigned char base64_test_enc[] =
+    "JEhuVodiWr2/F9mixBcaAZTtjx4Rs9cJDLbpEG8i7hPK"
+    "swcFdsn6MWwINP+Nwmw4AEPpVJevUEvRQbqVMVoLlw==";
+
+/*
+ * Checkup routine
+ */
+int main(int argc, char **argv)
+{
+    size_t len;
+    const unsigned char *src;
+    unsigned char buffer[128];
+
+    printf( "  Base64 encoding test: " );
+
+    src = base64_test_dec;
+
+    if( osmo_base64_encode( buffer, sizeof( buffer ), &len, src, 64 ) != 0 ||
+         memcmp( base64_test_enc, buffer, 88 ) != 0 )
+    {
+        printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    printf( "passed\n  Base64 decoding test: " );
+
+    src = base64_test_enc;
+
+    if( osmo_base64_decode( buffer, sizeof( buffer ), &len, src, 88 ) != 0 ||
+         memcmp( base64_test_dec, buffer, 64 ) != 0 )
+    {
+        printf( "failed\n" );
+
+        return( 1 );
+    }
+
+    printf( "passed\n\n" );
+
+    return( 0 );
+}
diff --git a/tests/base64/base64_test.ok b/tests/base64/base64_test.ok
new file mode 100644
index 0000000..ff187d9
--- /dev/null
+++ b/tests/base64/base64_test.ok
@@ -0,0 +1,3 @@
+  Base64 encoding test: passed
+  Base64 decoding test: passed
+
diff --git a/tests/testsuite.at b/tests/testsuite.at
index cb84229..6ac5970 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -446,3 +446,9 @@
 cat $abs_srcdir/it_q/it_q_test.ok > expout
 AT_CHECK([$abs_top_builddir/tests/it_q/it_q_test], [0], [expout], [ignore])
 AT_CLEANUP
+
+AT_SETUP([base64])
+AT_KEYWORDS([base64])
+cat $abs_srcdir/base64/base64_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/base64/base64_test], [0], [expout], [ignore])
+AT_CLEANUP

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/25497
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I82c1bf5f827c8def370dbcb80b146e9e4184c4a3
Gerrit-Change-Number: 25497
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210921/395a3895/attachment.htm>


More information about the gerrit-log mailing list