2016-07-14 2 views
2

CurveZMQを使用して、クライアントとサーバー間の通信のための安全な認証と機密性を確保します。しかし、私はC#で例を見つけることができません。私はAPIドキュメントをステップバイステップで実行しようとしています。そして、CURVE_PUBLICKEY、CURVE_SECRETKEY、およびCURVE_SERVERKEYの設定で問題が発生しました。C#のCurveZMQの例とCurveZMQを使用するときにSetOption()をCURVE_SECRETKEYに使用できないのはなぜですか?

ここに私のコードです。 \ R \ ZeroMQ.ZSocket.GetOption(ZSocketOptionオプション、のIntPtr optionValue、のInt32 & optionLength)で N ZeroMQ.ZSocket.GetOption(ZSocketOptionオプションで: ソケット 'server.CurveSecretKey' 'はZeroMQ.ZException' タイプの例外をスロー、バイト[] &値)\ rを\ nはZeroMQ.ZSocket.get_CurveSecretKeyで()」

public static byte[] StringToByteArray(string hex) 
    { 
     return Enumerable.Range(0, hex.Length) 
         .Where(x => x % 2 == 0) 
         .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) 
         .ToArray(); 
    } 

var context = new ZContext(); 
server = new ZSocket(context, ZSocketType.ROUTER); 
server.SetOption(ZSocketOption.CURVE_SERVER, 1); 
string curveSKey = "8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7"; 
var skey = StringToByteArray(curveSKey); 
server.SetOption(ZSocketOption.CURVE_SECRETKEY, skey); 

はあなたがCurveZMQ約C#で私にいくつかの例を与えることはできますか?

+0

ええと...私は問題があります。現在のバイナリ 'libzmq.dll \ /。so'はCurveZMQの機能を"取得 "しませんでした...' zeromq4-x'または 'libzmqを再コンパイルする必要があります'ソースからのプロジェクト。 – metadings

+0

'byte []'について:実際には、ZSocket.SetOptionを使って 'byte []'を設定すると、NUL文字をエスケープする必要があり、Cプログラムのターミネータとして使用されます。基本的には、SetOptionを実行する場合、NULを使用しないでください。アイデンティティを設定する場合は、NULなしでこれを行うか、rng.GetNonZeroBytesを使用してこれを行います。 – metadings

+0

フェリックスフー、コードを稼働させることができますか?私はCurveZMQを使っていくつかのC#の例を探していますが、サンプルコードがないことにも気付きました。私は、あなたが共有できる例があれば疑問に思っていました。 –

答えて

0

は単なる文字列、ないように設定しますバイト配列として。

var skey = Encoding.ASCII.GetString(StringToByteArray(curveSKey)); 
server.SetOption(ZSocketOption.CURVE_SECRETKEY, skey); 
関連する問題