zmq_curve.txt 2.83 KB
Newer Older
1 2 3 4 5 6
zmq_curve(7)
============


NAME
----
7
zmq_curve - secure authentication and confidentiality
8 9 10 11 12 13 14 15 16 17


SYNOPSIS
--------
The CURVE mechanism defines a mechanism for secure authentication and 
confidentiality for communications between a client and a server. CURVE 
is intended for use on public networks. The CURVE mechanism is defined 
by this document: <http://rfc.zeromq.org/spec:25>.


18
CLIENT AND SERVER ROLES
19
-----------------------
20 21 22 23 24
A socket using CURVE can be either client or server, at any moment, but 
not both. The role is independent of bind/connect direction.

A socket can change roles at any point by setting new options. The role
affects all zmq_connect and zmq_bind calls that follow it.
25

26 27 28 29
To become a CURVE server, the application sets the ZMQ_CURVE_SERVER option
on the socket, and then sets the ZMQ_CURVE_SECRETKEY option to provide the
socket with its long-term secret key. The application does not provide the
socket with its long-term public key, which is used only by clients.
30

31 32
To become a CURVE client, the application sets the ZMQ_CURVE_SERVERKEY 
option with the long-term public key of the server it intends to connect
33 34 35
to, or accept connections from, next. The application then sets the 
ZMQ_CURVE_PUBLICKEY and ZMQ_CURVE_SECRETKEY options with its client 
long-term key pair.
36 37 38 39

If the server does authentication it will be based on the client's long
term public key.

Pieter Hintjens's avatar
Pieter Hintjens committed
40 41 42 43 44 45 46 47 48 49 50
KEY ENCODING
------------
The standard representation for keys in source code is either 32 bytes of
base 256 (binary) data, or 40 characters of base 85 data encoded using the
Z85 algorithm defined by http://rfc.zeromq.org/spec:32.

The Z85 algorithm is designed to produce printable key strings for use in
configuration files, the command line, and code. There is a reference
implementation in C at https://github.com/zeromq/rfc/tree/master/src.

    
51 52
TEST KEY VALUES
---------------
Pieter Hintjens's avatar
Pieter Hintjens committed
53 54
For test cases, the client shall use this long-term key pair (specified
as hexadecimal and in Z85):
55 56

----
Pieter Hintjens's avatar
Pieter Hintjens committed
57 58 59 60 61 62 63
public: 
    BB88471D65E2659B30C55A5321CEBB5AAB2B70A398645C26DCA2B2FCB43FC518
    Yne@$w-vo<fVvi]a<NY6T1ed:M$fCG*[IaLV{hID

secret: 
    7BB864B489AFA3671FBE69101F94B38972F24816DFB01B51656B3FEC8DFD0888
    D:)Q[IlAW!ahhC2ac:9*A}h:p?([4%wOTJ%JR%cs
64 65
----

Pieter Hintjens's avatar
Pieter Hintjens committed
66 67
And the server shall use this long-term key pair (specified as hexadecimal 
and in Z85):
68 69

----
Pieter Hintjens's avatar
Pieter Hintjens committed
70 71 72 73 74 75 76
public: 
    54FCBA24E93249969316FB617C872BB0C1D1FF14800427C594CBFACF1BC2D652
    rq:rM>}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7

secret: 
    8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7
    JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6
77
----
78 79 80

SEE ALSO
--------
81 82
linkzmq:zmq_z85_encode[3]
linkzmq:zmq_z85_decode[3]
83 84 85 86 87 88 89 90 91 92
linkzmq:zmq_setsockopt[3]
linkzmq:zmq_null[7]
linkzmq:zmq_plain[7]
linkzmq:zmq[7]


AUTHORS
-------
This page was written by the 0MQ community. To make a change please
read the 0MQ Contribution Policy at <http://www.zeromq.org/docs:contributing>.