diff --git a/doc/zmq_getsockopt.txt b/doc/zmq_getsockopt.txt index 4dbce5bc..3feb762c 100644 --- a/doc/zmq_getsockopt.txt +++ b/doc/zmq_getsockopt.txt @@ -542,11 +542,13 @@ ZMQ_CURVE_PUBLICKEY: Retrieve current CURVE public key Retrieves the current long term public key for the socket. You can provide either a 32 byte buffer, to retrieve the binary key value, or -a 40 byte buffer, to retrieve the key in a printable Z85 format. +a 41 byte buffer, to retrieve the key in a printable Z85 format. +NOTE: to fetch a printable key, the buffer must be 41 bytes large +to hold the 40-char key value and one null byte. [horizontal] Option value type:: binary data or Z85 text string -Option value size:: 32 or 40 +Option value size:: 32 or 41 Default value:: null Applicable socket types:: all, when using TCP transport @@ -556,11 +558,11 @@ ZMQ_CURVE_SECRETKEY: Retrieve current CURVE secret key Retrieves the current long term secret key for the socket. You can provide either a 32 byte buffer, to retrieve the binary key value, or -a 40 byte buffer, to retrieve the key in a printable Z85 format. +a 41 byte buffer, to retrieve the key in a printable Z85 format. [horizontal] Option value type:: binary data or Z85 text string -Option value size:: 32 or 40 +Option value size:: 32 or 41 Default value:: null Applicable socket types:: all, when using TCP transport @@ -574,7 +576,7 @@ a 40 byte buffer, to retrieve the key in a printable Z85 format. [horizontal] Option value type:: binary data or Z85 text string -Option value size:: 32 or 40 +Option value size:: 32 or 41 Default value:: null Applicable socket types:: all, when using TCP transport diff --git a/src/options.cpp b/src/options.cpp index 50a0b8e8..9dd52511 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -590,7 +590,7 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) return 0; } else - if (*optvallen_ == CURVE_KEYSIZE_Z85) { + if (*optvallen_ == CURVE_KEYSIZE_Z85 + 1) { Z85_encode ((char *) optval_, curve_public_key, CURVE_KEYSIZE); return 0; } @@ -602,7 +602,7 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) return 0; } else - if (*optvallen_ == CURVE_KEYSIZE_Z85) { + if (*optvallen_ == CURVE_KEYSIZE_Z85 + 1) { Z85_encode ((char *) optval_, curve_secret_key, CURVE_KEYSIZE); return 0; } @@ -614,7 +614,7 @@ int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_) return 0; } else - if (*optvallen_ == CURVE_KEYSIZE_Z85) { + if (*optvallen_ == CURVE_KEYSIZE_Z85 + 1) { Z85_encode ((char *) optval_, curve_server_key, CURVE_KEYSIZE); return 0; } diff --git a/src/options.hpp b/src/options.hpp index 208fe261..5154fab6 100644 --- a/src/options.hpp +++ b/src/options.hpp @@ -53,7 +53,7 @@ namespace zmq unsigned char identity_size; unsigned char identity [256]; - // Maximum tranfer rate [kb/s]. Default 100kb/s. + // Maximum transfer rate [kb/s]. Default 100kb/s. int rate; // Reliability time interval [ms]. Default 10 seconds. diff --git a/src/z85_codec.hpp b/src/z85_codec.hpp index dabdf652..e03a38b5 100644 --- a/src/z85_codec.hpp +++ b/src/z85_codec.hpp @@ -48,7 +48,8 @@ static uint8_t decoder [96] = { // -------------------------------------------------------------------------- // Encode a binary frame as a string; destination string MUST be at least -// size * 5 / 4 bytes long. Returns dest. Size must be a multiple of 4. +// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns +// dest. Size must be a multiple of 4. char * Z85_encode (char *dest, uint8_t *data, size_t size) diff --git a/tools/Makefile.am b/tools/Makefile.am index d2bec2d7..ec565baa 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -1 +1,11 @@ EXTRA_DIST = curve_keygen.c z85_codec.h + +INCLUDES = -I$(top_builddir)/include \ + -I$(top_srcdir)/include +# INCLUDES = -I$(top_srcdir)/include + +bin_PROGRAMS = curve_keygen + +curve_keygen_LDADD = $(top_builddir)/src/libzmq.la +curve_keygen_SOURCES = curve_keygen.c + diff --git a/tools/z85_codec.h b/tools/z85_codec.h index 523509d6..aa609f8b 100644 --- a/tools/z85_codec.h +++ b/tools/z85_codec.h @@ -50,7 +50,8 @@ static uint8_t decoder [96] = { // -------------------------------------------------------------------------- // Encode a binary frame as a string; destination string MUST be at least -// size * 5 / 4 bytes long. Returns dest. Size must be a multiple of 4. +// size * 5 / 4 bytes long plus 1 byte for the null terminator. Returns +// dest. Size must be a multiple of 4. char * Z85_encode (char *dest, uint8_t *data, size_t size)