mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-04 19:13:35 +01:00
Fixed Z85 methods to be static and not pollute library
This commit is contained in:
parent
65ef76bb59
commit
193d0bb634
@ -51,7 +51,7 @@ static uint8_t decoder [96] = {
|
|||||||
// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns
|
// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns
|
||||||
// dest. Size must be a multiple of 4.
|
// dest. Size must be a multiple of 4.
|
||||||
|
|
||||||
char *
|
static char *
|
||||||
Z85_encode (char *dest, uint8_t *data, size_t size)
|
Z85_encode (char *dest, uint8_t *data, size_t size)
|
||||||
{
|
{
|
||||||
assert (size % 4 == 0);
|
assert (size % 4 == 0);
|
||||||
@ -82,7 +82,7 @@ Z85_encode (char *dest, uint8_t *data, size_t size)
|
|||||||
// strlen (string) * 4 / 5 bytes long. Returns dest. strlen (string)
|
// strlen (string) * 4 / 5 bytes long. Returns dest. strlen (string)
|
||||||
// must be a multiple of 5.
|
// must be a multiple of 5.
|
||||||
|
|
||||||
uint8_t *
|
static uint8_t *
|
||||||
Z85_decode (uint8_t *dest, char *string)
|
Z85_decode (uint8_t *dest, char *string)
|
||||||
{
|
{
|
||||||
assert (strlen (string) % 5 == 0);
|
assert (strlen (string) % 5 == 0);
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "testutil.hpp"
|
#include "testutil.hpp"
|
||||||
#include "../include/zmq_utils.h"
|
#include "../include/zmq_utils.h"
|
||||||
#include "../src/z85_codec.hpp"
|
|
||||||
#include "platform.hpp"
|
#include "platform.hpp"
|
||||||
|
|
||||||
// Test keys from the zmq_curve man page
|
// Test keys from the zmq_curve man page
|
||||||
@ -30,6 +29,44 @@ static char client_secret [] = "D:)Q[IlAW!ahhC2ac:9*A}h:p?([4%wOTJ%JR%cs";
|
|||||||
static char server_public [] = "rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7";
|
static char server_public [] = "rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7";
|
||||||
static char server_secret [] = "JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6";
|
static char server_secret [] = "JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6";
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
// Encode a binary frame as a string; destination string MUST be at least
|
||||||
|
// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns
|
||||||
|
// dest. Size must be a multiple of 4.
|
||||||
|
|
||||||
|
// Maps base 256 to base 85
|
||||||
|
static char encoder [85 + 1] = {
|
||||||
|
"0123456789" "abcdefghij" "klmnopqrst" "uvwxyzABCD"
|
||||||
|
"EFGHIJKLMN" "OPQRSTUVWX" "YZ.-:+=^!/" "*?&<>()[]{"
|
||||||
|
"}@%$#"
|
||||||
|
};
|
||||||
|
|
||||||
|
static char *
|
||||||
|
Z85_encode (char *dest, uint8_t *data, size_t size)
|
||||||
|
{
|
||||||
|
assert (size % 4 == 0);
|
||||||
|
unsigned int char_nbr = 0;
|
||||||
|
unsigned int byte_nbr = 0;
|
||||||
|
uint32_t value = 0;
|
||||||
|
while (byte_nbr < size) {
|
||||||
|
// Accumulate value in base 256 (binary)
|
||||||
|
value = value * 256 + data [byte_nbr++];
|
||||||
|
if (byte_nbr % 4 == 0) {
|
||||||
|
// Output value in base 85
|
||||||
|
unsigned int divisor = 85 * 85 * 85 * 85;
|
||||||
|
while (divisor) {
|
||||||
|
dest [char_nbr++] = encoder [value / divisor % 85];
|
||||||
|
divisor /= 85;
|
||||||
|
}
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert (char_nbr == size * 5 / 4);
|
||||||
|
dest [char_nbr] = 0;
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void zap_handler (void *ctx)
|
static void zap_handler (void *ctx)
|
||||||
{
|
{
|
||||||
// Create and bind ZAP socket
|
// Create and bind ZAP socket
|
||||||
@ -71,7 +108,7 @@ static void zap_handler (void *ctx)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
s_sendmore (zap, "400");
|
s_sendmore (zap, "400");
|
||||||
s_sendmore (zap, "Invalid username or password");
|
s_sendmore (zap, "Invalid client public key");
|
||||||
s_sendmore (zap, "");
|
s_sendmore (zap, "");
|
||||||
s_send (zap, "");
|
s_send (zap, "");
|
||||||
}
|
}
|
||||||
|
@ -28,12 +28,47 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "../src/platform.hpp"
|
#include "../src/platform.hpp"
|
||||||
|
|
||||||
#ifdef HAVE_LIBSODIUM
|
#ifdef HAVE_LIBSODIUM
|
||||||
# include <sodium.h>
|
# include <sodium.h>
|
||||||
# include "z85_codec.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Maps base 256 to base 85
|
||||||
|
static char encoder [85 + 1] = {
|
||||||
|
"0123456789" "abcdefghij" "klmnopqrst" "uvwxyzABCD"
|
||||||
|
"EFGHIJKLMN" "OPQRSTUVWX" "YZ.-:+=^!/" "*?&<>()[]{"
|
||||||
|
"}@%$#"
|
||||||
|
};
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
// Encode a binary frame as a string; destination string MUST be at least
|
||||||
|
// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns
|
||||||
|
// dest. Size must be a multiple of 4.
|
||||||
|
|
||||||
|
static char *
|
||||||
|
Z85_encode (char *dest, uint8_t *data, size_t size)
|
||||||
|
{
|
||||||
|
assert (size % 4 == 0);
|
||||||
|
uint char_nbr = 0;
|
||||||
|
uint byte_nbr = 0;
|
||||||
|
uint32_t value = 0;
|
||||||
|
while (byte_nbr < size) {
|
||||||
|
// Accumulate value in base 256 (binary)
|
||||||
|
value = value * 256 + data [byte_nbr++];
|
||||||
|
if (byte_nbr % 4 == 0) {
|
||||||
|
// Output value in base 85
|
||||||
|
uint divisor = 85 * 85 * 85 * 85;
|
||||||
|
while (divisor) {
|
||||||
|
dest [char_nbr++] = encoder [value / divisor % 85];
|
||||||
|
divisor /= 85;
|
||||||
|
}
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert (char_nbr == size * 5 / 4);
|
||||||
|
dest [char_nbr] = 0;
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
int main (void)
|
int main (void)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_LIBSODIUM
|
#ifdef HAVE_LIBSODIUM
|
||||||
|
@ -53,7 +53,7 @@ static uint8_t decoder [96] = {
|
|||||||
// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns
|
// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns
|
||||||
// dest. Size must be a multiple of 4.
|
// dest. Size must be a multiple of 4.
|
||||||
|
|
||||||
char *
|
static char *
|
||||||
Z85_encode (char *dest, uint8_t *data, size_t size)
|
Z85_encode (char *dest, uint8_t *data, size_t size)
|
||||||
{
|
{
|
||||||
assert (size % 4 == 0);
|
assert (size % 4 == 0);
|
||||||
@ -84,7 +84,7 @@ Z85_encode (char *dest, uint8_t *data, size_t size)
|
|||||||
// strlen (string) * 4 / 5 bytes long. Returns dest. strlen (string)
|
// strlen (string) * 4 / 5 bytes long. Returns dest. strlen (string)
|
||||||
// must be a multiple of 5.
|
// must be a multiple of 5.
|
||||||
|
|
||||||
uint8_t *
|
static uint8_t *
|
||||||
Z85_decode (uint8_t *dest, char *string)
|
Z85_decode (uint8_t *dest, char *string)
|
||||||
{
|
{
|
||||||
assert (strlen (string) % 5 == 0);
|
assert (strlen (string) % 5 == 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user