2017-08-06 68 views
2

我正在構建一個網絡內核擴展,它需要OpenSSL庫通過在我的一些項目文件中包含一些頭文件。如何在網絡內核擴展中使用OpenSSL?

問題是,OpenSSL包括stdlib.h(以及其他頭文件),所有拋出錯誤(文件未找到)。如果我將stdlib.h包含在項目文件中,也會發生同樣的情況。

我想這是由於它們在內核中不可用。 那麼,我如何包含它們呢?我錯過了什麼?

否則,我如何在內核中包含CommonCrypto或任何加密庫?

謝謝!

回答

2

OpenSSL和CommonCrypto是用戶空間庫。它們在內核中不可用。

CoreCrypto的某些部分在內核中可用,在<libkern/crypto/…><corecrypto/…>之下。然而,一般來說,這僅限於密碼原語(AES,RSA,SHA等),而不是X509證書解析,密鑰交換算法或TLS等更高級別的工具。

+0

我在找的是AES,HKDF,HMAC和ECDHE,但只有'sha1.h'和'md5.h'在'libkern/crypto'下可用。 'corecrypto'似乎在我的機器上默認情況下不可用,但是我找到了源代碼[here](https://developer.apple.com/security/),但我真的不知道如何讓該庫可用於我包括在kext中。你能幫我嗎? – Romeo

+0

我應該在用戶空間處理加密/解密嗎? – Romeo

+1

很難肯定地知道你的應用程序,但是 - 如果你有選擇,加密應該發生在用戶空間中。結果在內核中運行的代碼越少越好。 – duskwuff