mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 10:52:56 +01:00
Problem: #2262 broke curve
Solution: Revert "Problem: Duplicated code"
This reverts commit 022eeaf33d
.
This commit is contained in:
parent
2aa09d34ff
commit
48e9e24726
103
src/options.cpp
103
src/options.cpp
@ -90,35 +90,6 @@ zmq::options_t::options_t () :
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int zmq::options_t::set_curve_key(uint8_t * destination, const void * optval_, size_t optvallen_)
|
|
||||||
{
|
|
||||||
char * optval = (char *) optval_;
|
|
||||||
switch (optvallen_) {
|
|
||||||
|
|
||||||
case CURVE_KEYSIZE:
|
|
||||||
memcpy (destination, optval_, optvallen_);
|
|
||||||
mechanism = ZMQ_CURVE;
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
case CURVE_KEYSIZE_Z85:
|
|
||||||
char z85_key [CURVE_KEYSIZE_Z85 + 1];
|
|
||||||
memcpy (z85_key, optval, optvallen_);
|
|
||||||
z85_key [optvallen_] = 0;
|
|
||||||
optval = z85_key;
|
|
||||||
//Intentionall fallthrough
|
|
||||||
case CURVE_KEYSIZE_Z85 + 1:
|
|
||||||
if (zmq_z85_decode (destination, optval)) {
|
|
||||||
mechanism = ZMQ_CURVE;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int zmq::options_t::setsockopt (int option_, const void *optval_,
|
int zmq::options_t::setsockopt (int option_, const void *optval_,
|
||||||
size_t optvallen_)
|
size_t optvallen_)
|
||||||
{
|
{
|
||||||
@ -447,19 +418,87 @@ int zmq::options_t::setsockopt (int option_, const void *optval_,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ZMQ_CURVE_PUBLICKEY:
|
case ZMQ_CURVE_PUBLICKEY:
|
||||||
if(0 == set_curve_key(curve_public_key, optval_, optvallen_))
|
// TODO: refactor repeated code for these three options
|
||||||
|
// into set_curve_key (destination, optval, optlen) method
|
||||||
|
// ==> set_curve_key (curve_public_key, optval_, optvallen_);
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE) {
|
||||||
|
memcpy (curve_public_key, optval_, CURVE_KEYSIZE);
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE_Z85 + 1) {
|
||||||
|
if (zmq_z85_decode (curve_public_key, (char *) optval_)) {
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Deprecated, not symmetrical with zmq_getsockopt
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE_Z85) {
|
||||||
|
char z85_key [CURVE_KEYSIZE_Z85 + 1];
|
||||||
|
memcpy (z85_key, (char *) optval_, CURVE_KEYSIZE_Z85);
|
||||||
|
z85_key [CURVE_KEYSIZE_Z85] = 0;
|
||||||
|
if (zmq_z85_decode (curve_public_key, z85_key)) {
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZMQ_CURVE_SECRETKEY:
|
case ZMQ_CURVE_SECRETKEY:
|
||||||
if(0 == set_curve_key(curve_secret_key, optval_, optvallen_))
|
if (optvallen_ == CURVE_KEYSIZE) {
|
||||||
|
memcpy (curve_secret_key, optval_, CURVE_KEYSIZE);
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE_Z85 + 1) {
|
||||||
|
if (zmq_z85_decode (curve_secret_key, (char *) optval_)) {
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Deprecated, not symmetrical with zmq_getsockopt
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE_Z85) {
|
||||||
|
char z85_key [CURVE_KEYSIZE_Z85 + 1];
|
||||||
|
memcpy (z85_key, (char *) optval_, CURVE_KEYSIZE_Z85);
|
||||||
|
z85_key [CURVE_KEYSIZE_Z85] = 0;
|
||||||
|
if (zmq_z85_decode (curve_secret_key, z85_key)) {
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ZMQ_CURVE_SERVERKEY:
|
case ZMQ_CURVE_SERVERKEY:
|
||||||
if(0 == set_curve_key(curve_server_key, optval_, optvallen_))
|
if (optvallen_ == CURVE_KEYSIZE) {
|
||||||
|
memcpy (curve_server_key, optval_, CURVE_KEYSIZE);
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
as_server = 0;
|
as_server = 0;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE_Z85 + 1) {
|
||||||
|
if (zmq_z85_decode (curve_server_key, (char *) optval_)) {
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
|
as_server = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
// Deprecated, not symmetrical with zmq_getsockopt
|
||||||
|
if (optvallen_ == CURVE_KEYSIZE_Z85) {
|
||||||
|
char z85_key [CURVE_KEYSIZE_Z85 + 1];
|
||||||
|
memcpy (z85_key, (char *) optval_, CURVE_KEYSIZE_Z85);
|
||||||
|
z85_key [CURVE_KEYSIZE_Z85] = 0;
|
||||||
|
if (zmq_z85_decode (curve_server_key, z85_key)) {
|
||||||
|
mechanism = ZMQ_CURVE;
|
||||||
|
as_server = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -56,8 +56,6 @@ namespace zmq
|
|||||||
{
|
{
|
||||||
options_t ();
|
options_t ();
|
||||||
|
|
||||||
int set_curve_key(uint8_t * destination, const void * optval_, size_t optvallen_);
|
|
||||||
|
|
||||||
int setsockopt (int option_, const void *optval_, size_t optvallen_);
|
int setsockopt (int option_, const void *optval_, size_t optvallen_);
|
||||||
int getsockopt (int option_, void *optval_, size_t *optvallen_) const;
|
int getsockopt (int option_, void *optval_, size_t *optvallen_) const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user