@objc open class CryptoKitWrapper: NSObject {
public static let shared = CryptoKitWrapper()
public var delegate:CryptoKitWrapperProtocol?
@objc open func SHA256hash(data: Data) -> Data {
let digest = SHA256.hash(data: data)
CryptoKitWrapper.shared.delegate?.didCallSHA256Hash()
return Data(digest);
}
}
2条答案
按热度按时间pdkcd3nj1#
虽然回答得有点晚,但恕我直言,创建一个Swift静态库或Swift框架w/ Apple的CryptoKit(依赖项)并将其链接到你的Obj-C项目是最简单的。然后你当然会将Swift静态库/框架头文件导入到你的Obj-C类中。
请确保在Swift函数的类和函数前面都加上
@objc open
前缀。我鼓励你使用委托,也许在你的Swift CryptoKit Wrapper中使用一些单例模式。
你可以使用readonly属性将Swift框架链接到你的obj-c类:
因为在Swift Wrapper Class中,你把它们设置为open/obj-c前缀,所以函数是公开的。
作为一个伪示例,这里是一个Swift Func,obj-c调用它。
目标-c:
Swift class/func:
8yparm6h2#
我在直接C中工作,因为Objective C是一个严格的超集,它应该工作。
我找不到任何直接的文档,但是头文件本身指定了参数。
这不是CryptoKit,但除非你有一个边缘的情况下,它会工作,是苹果提供的,而不是openssl或libressl。由于OP提到它,我认为这是一个原因,让commoncrypto作为替代品。算法的实际实现在大多数情况下没有任何显着的不同。