相同库的两个版本

Two versions of the same libraries

我得到了一个以前由另一个人维​​护的项目,我必须安装 OpenSSL 才能做各种事情。 OpenSSL 已通过 CocoaPods 安装,并且运行良好。问题是该项目有另一个名为 "Cipher" 的库,它用于使用 509x 证书加密某些信息。 我没有触及那部分代码,但它现在不再起作用了。 该库包含 4 个文件:libcrypto.a、libssl.a、oaep.c 和 oaep.h。 通过 CocoaPods 链接的 OpenSSL 库还包含 libcrypto.a 和 libssl.a.

这是现在不再有效的代码:

- (NSMutableString *)cipherWithBlock: (NSString *)string {
    NSMutableString *cipherBlock = [NSMutableString string];
    static NSString* stringBlock = kLIT_EMPTY;
    stringBlock = string;
    NSData *crt = [[IWUserController sharedInstance] publicKey];
    unsigned char block [DIGEST_BUFFER_SIZE];
    const char* msg = [stringBlock cStringUsingEncoding:[NSString defaultCStringEncoding]];
    cipher((void*)[crt bytes], crt.length, msg, block);
    for (int i = 0; i < DIGEST_BUFFER_SIZE; i++)
        [cipherBlock appendFormat:@"%02X", block[i], nil];
    return cipherBlock;
}

此方法实际上生成了一个加密字符串,但接收它的 Web 服务说它无效。 我不知道该怎么做。我唯一知道的是,具有完全相同代码但没有 OpenSSL 的旧版本可以正常工作。 有什么想法吗?

为了解决这个问题,我不得不使用 OpenSSL 框架的分叉版本,其中库 libcrypto.a 和 libssl.a 已降级为相同的修改版本,proyect original 使用. 这样旧的加密方法和我添加的新方法都可以使用。