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 并不总是尊重您的 CFLAGS
和 LDFLAGS
。如果是这种情况,您可能需要在为 iOS 构建 OpenSSL 时为 Configure
添加特殊规则。为此,请参阅 OpenSSL wiki 上 Compilation and Installation | Using RPATHs 处对 RPATH 的讨论。
我已经使用 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 并不总是尊重您的 CFLAGS
和 LDFLAGS
。如果是这种情况,您可能需要在为 iOS 构建 OpenSSL 时为 Configure
添加特殊规则。为此,请参阅 OpenSSL wiki 上 Compilation and Installation | Using RPATHs 处对 RPATH 的讨论。