尝试构建用于iOS的SSCrypto框架时构建失败

时间:2011-09-07 22:17:08

标签: iphone ios cocoa-touch xcode4

使用Xcode 4,我正在尝试构建用于iOS应用程序的SSCrypto框架。

在Build Settings中,当我将基本SDK更改为Latest iOS时,我收到此错误:

target specifies product type 'com.apple.product-type.framework', but there's no such product type for the 'iphoneos' platform

我的谷歌搜索和搜索已经空了,所以我觉得我错过了一些明显的东西......

如何让SSCrypto框架在iOS上运行?

2 个答案:

答案 0 :(得分:2)

对于iOS,只能使用静态库,而不能使用带动态库的框架。

相反使用CommonCrypto,它是普通的C但不是很难使用。确保您使用所有相同的设置,模式,IV(如果模式需要),填充和键。

Security.framework添加到项目

#import <CommonCrypto/CommonCryptor.h>

+ (NSData *)doCipher:(NSData *)dataIn
                  iv:(NSData *)iv
                 key:(NSData *)symmetricKey
             context:(CCOperation)encryptOrDecrypt
{
    CCCryptorStatus ccStatus   = kCCSuccess;
    size_t          cryptBytes = 0;    // Number of bytes moved to buffer.
    NSMutableData  *dataOut    = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES256];

    ccStatus = CCCrypt( encryptOrDecrypt,
                       kCCAlgorithmAES256,
                       kCCOptionPKCS7Padding,
                       symmetricKey.bytes, 
                       kCCKeySizeAES256,
                       iv.bytes,
                       dataIn.bytes,
                       dataIn.length,
                       dataOut.mutableBytes,
                       dataOut.length,
                       &cryptBytes);

    if (ccStatus != kCCSuccess) {
        // Handle error
        NSLog(@"CCCrypt status: %d", ccStatus);
    }

    dataOut.length = cryptBytes;

    return dataOut;
}

对于Base64,请参阅:SO answer

答案 1 :(得分:0)

Xcode 4删除了很多目标类型,大概是因为Apple认为这让人很困惑。

建立一个静态库,或者只是在项目中包含这些文件。