2

Objective-C で NaCl ライブラリを使用する正しい方法を見つけようとしています。鍵生成は簡単に思えます:

- (void) generateKeypair {
    unsigned char pk[crypto_box_PUBLICKEYBYTES];
    unsigned char sk[crypto_box_SECRETKEYBYTES];

    sodium_init();
    crypto_box_keypair(pk,sk);
    self.publicKey = [NSData dataWithBytes:(const void *)pk
                                            length:sizeof(unsigned char)*crypto_box_PUBLICKEYBYTES];
    self.sekretKey = [NSData dataWithBytes:(const void *)sk
                                            length:sizeof(unsigned char)*crypto_box_PUBLICKEYBYTES];
}

それは簡単でした。しかし、関数を使用すると、パディングとオブジェクトの所有権を管理する方法crypto_box(c,m,mlen,n,pk,sk)が混同されます。と友達ZEROBYTESのためのシンプルなラッパーを構築する方法は?crypto_box(c,m,mlen,n,pk,sk)

4

2 に答える 2

0

1 つのオプションはSodium-Objcです。crypto_boxこれらのバインディングはしばらく更新されていませんが、かなり良いままで、Objective-Cで非常に使いやすくなっています。

別のオプションは、より完全なSwift-Sodiumです。これは Swift で書かれていますが、Swift から Objective-C を呼び出すのは簡単です。

しかし、低レベルで C 関数を直接呼び出したい場合は、実際にはパディングについて心配する必要はありません。簡単なインターフェース:crypto_box_easy()と を使用するだけcrypto_box_open_easy()です。

crypto_box_easy()オーセンティケータ (crypto_box_MACBYTES長さバイト) を配置し、その直後に暗号化されたメッセージを置きます。余分なパディングは必要ありません。またcrypto_box_open_easy()、追加のパディングやバイトの移動を必要とせずにメッセージを復号化します。

于 2015-02-26T22:41:30.217 に答える