iOS 仅使用 Diffie-Hellman 构建 OpenSSL

Build OpenSSL with only Diffie-Hellman for iOS

我已经使用 this github 存储库为 iOS 构建了 OpenSSL。不幸的是,构建的库大小为 44 MB。这太过分了。

我只需要将 OpenSSL 用于 Diffie-Hellman 密钥交换实施。我认为如果我只从中提取 Diffie-Hellman 部分,库的大小将大大减少。谁能告诉我这是否可行以及我该怎么做?

Can anyone tell me if this is possible and how I can do it?

好吧,我从未见过以这种方式配置 OpenSSL,所以我不确定您离目标有多近。但是您正在寻找的是 Configure 的各种 no-xxx 选项。我也不知道它们的完整列表。

要添加额外的皱纹,您只需要 libcrypto(它提供密码学,如 Diffie-Hellman),而不是 libssl(它提供更高级别的 SSL/TLS 函数).


另一种方法是较少担心存档或库的磁盘大小,并在库链接到程序时专注于剥离不需要的部分。为此,请执行以下操作:

CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += -Wl,-dead_strip

这将允许链接器删除最终二进制文件中未使用的任何代码或数据。由于您仅使用 Diffie-Hellman(以及相关函数,如大整数),因此这是唯一应该存在的东西。

(在 Linux 上,您将使用 LDFLAGS += -Wl,--gc-sections)。


OpenSSL 并不总是尊重您的 CFLAGSLDFLAGS。如果是这种情况,您可能需要在为 iOS 构建 OpenSSL 时为 Configure 添加特殊规则。为此,请参阅 OpenSSL wiki 上 Compilation and Installation | Using RPATHs 处对 RPATH 的讨论。