仅使用Diffie-Hellman for iOS构建OpenSSL

时间:2015-10-01 22:23:08

标签: ios openssl

我使用this github存储库为iOS构建了OpenSSL。不幸的是,内置库的大小为44 MB。这远远不够。

我只需要将OpenSSL用于Diffie-Hellman密钥交换实现。如果我只从中提取Diffie-Hellman部分,我认为库的大小将会大大减少。任何人都可以告诉我这是否可行以及如何做到这一点?

1 个答案:

答案 0 :(得分:1)

  

有人能告诉我这是否可行以及我该怎么做?

好吧,我从未见过以这种方式配置的OpenSSL,所以我不确定你能达到的目标有多接近。但您要找的是no-xxx的各种Configure选项。我也不知道它们的全面清单。

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

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

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

这将允许链接器删除最终二进制文件中未使用的任何代码或数据。由于您只使用Diffie-Hellman(以及相关函数,如Big Integers),因此这是唯一应该出现的内容。

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

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