mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-12 10:33:52 +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
|
||||
// dest. Size must be a multiple of 4.
|
||||
|
||||
char *
|
||||
static char *
|
||||
Z85_encode (char *dest, uint8_t *data, size_t size)
|
||||
{
|
||||
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)
|
||||
// must be a multiple of 5.
|
||||
|
||||
uint8_t *
|
||||
static uint8_t *
|
||||
Z85_decode (uint8_t *dest, char *string)
|
||||
{
|
||||
assert (strlen (string) % 5 == 0);
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <stdlib.h>
|
||||
#include "testutil.hpp"
|
||||
#include "../include/zmq_utils.h"
|
||||
#include "../src/z85_codec.hpp"
|
||||
#include "platform.hpp"
|
||||
|
||||
// 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_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)
|
||||
{
|
||||
// Create and bind ZAP socket
|
||||
@ -71,7 +108,7 @@ static void zap_handler (void *ctx)
|
||||
}
|
||||
else {
|
||||
s_sendmore (zap, "400");
|
||||
s_sendmore (zap, "Invalid username or password");
|
||||
s_sendmore (zap, "Invalid client public key");
|
||||
s_sendmore (zap, "");
|
||||
s_send (zap, "");
|
||||
}
|
||||
|
@ -28,12 +28,47 @@
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include "../src/platform.hpp"
|
||||
|
||||
#ifdef HAVE_LIBSODIUM
|
||||
# include <sodium.h>
|
||||
# include "z85_codec.h"
|
||||
#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)
|
||||
{
|
||||
#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
|
||||
// dest. Size must be a multiple of 4.
|
||||
|
||||
char *
|
||||
static char *
|
||||
Z85_encode (char *dest, uint8_t *data, size_t size)
|
||||
{
|
||||
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)
|
||||
// must be a multiple of 5.
|
||||
|
||||
uint8_t *
|
||||
static uint8_t *
|
||||
Z85_decode (uint8_t *dest, char *string)
|
||||
{
|
||||
assert (strlen (string) % 5 == 0);
|
||||
|
Loading…
Reference in New Issue
Block a user