2017-08-06 11 views
2

私はいくつかのヘッダをプロジェクトファイルのいくつかに含めて、OpenSSLライブラリを必要とするネットワークカーネル拡張を構築しています。ネットワークカーネル拡張でOpenSSLを使用するには?

OpenSSLには、すべてのエラー(ファイルが見つかりません)を含むstdlib.h(他のヘッダーの中に)が含まれています。 stdlib.hをプロジェクトファイルに含めると同じことが起こります。

私はそれがカーネルで利用できないという事実によると思います。 どうすればそれらを含めることができますか?私は何が欠けていますか?

それ以外の場合は、CommonCryptoや任意の暗号ライブラリをカーネルに含めるにはどうすればよいですか?

ありがとうございました!

答えて

2

OpenSSLとCommonCryptoはユーザー空間ライブラリです。それらはカーネルでは利用できません。

CoreCryptoの一部は、<libkern/crypto/…>および<corecrypto/…>のカーネルで利用できます。しかし、これは一般に、X509証明書解析、鍵交換アルゴリズム、TLSなどの高レベルツールではなく、暗号化プリミティブ(AES、RSA、SHAなど)に限定されています。

+0

私が探しているのは、AES、HKDF、HMAC、ECDHEですが、 'sha1.h'と' md5.h 'のみ 'libkern/crypto'で利用できます。私のマシンではデフォルトで 'corecrypto'が利用できないようですが、ソースコード[https://developer.apple.com/security/]が見つかりましたが、どのようにしてライブラリを利用できるようにするのか分かりません私はkextに含めること。私を助けてくれますか? – Romeo

+0

私はユーザー空間で暗号化/復号化を処理する必要がありますか? – Romeo

+1

あなたのアプリケーションを知らなくても確かに言うのは難しいですが、あなたが選択すれば、暗号はユーザー空間で起こるはずです。カーネル内で実行されるコードが少なくて済むほど良いでしょう。 – duskwuff

関連する問題