完美的Swift:无法编译PerfectCrypto

4

我正在使用Ubuntu 14.04.1和clang-3.8,使用的是PerfectSwift技术。之前我一直在使用Perfect,一切正常,但现在我无法编译(但我在我的Mac上可以编译)。

错误日志如下:

/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:282:43: error: cannot convert value of type 'UnsafeRawPointer?' to expected argument type 'UnsafeMutableRawPointer!'
                super.init(bio: BIO_new_mem_buf(pointer.baseAddress, Int32(pointer.count)))
                                                ~~~~~~~~^~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:363:34: error: cannot convert value of type 'String' to expected argument type 'UnsafeMutablePointer<Int8>!'
                super.init(bio: BIO_new_accept(name))
                                               ^~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/ByteIO.swift:394:35: error: cannot convert value of type 'String' to expected argument type 'UnsafeMutablePointer<Int8>!'
                super.init(bio: BIO_new_connect(name))
                                                ^~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:357:64: error: cannot convert value of type 'UnsafePointer<UInt8>?' to expected argument type 'UnsafeMutablePointer<UInt8>!'
                guard 1 == EVP_DigestVerifyFinal(ctx, signature.baseAddress?.assumingMemoryBound(to: UInt8.self), mdLen) else {
                                                      ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/openssl/bn.h:187:19: error: integer literal is too large to be represented in any integer type
#define BN_MASK         (0xffffffffffffffffffffffffffffffffLL)
                         ^
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:385:31: error: use of unresolved identifier 'EVP_des_ede3_wrap'
                case .des_ede3_wrap:    return EVP_des_ede3_wrap()
                                               ^~~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:413:31: error: use of unresolved identifier 'EVP_aes_128_wrap'
                case .aes_128_wrap:             return EVP_aes_128_wrap()
                                                       ^~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:423:31: error: use of unresolved identifier 'EVP_aes_192_wrap'
                case .aes_192_wrap:             return EVP_aes_192_wrap()
                                                       ^~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:434:31: error: use of unresolved identifier 'EVP_aes_256_wrap'
                case .aes_256_wrap:             return EVP_aes_256_wrap()
                                                       ^~~~~~~~~~~~~~~~
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:437:41: error: use of unresolved identifier 'EVP_aes_128_cbc_hmac_sha256'
                case .aes_128_cbc_hmac_sha256:  return EVP_aes_128_cbc_hmac_sha256()
                                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
COpenSSL.EVP_aes_128_cbc_hmac_sha1:1:13: note: did you mean 'EVP_aes_128_cbc_hmac_sha1'?
public func EVP_aes_128_cbc_hmac_sha1() -> UnsafePointer<EVP_CIPHER>!
            ^
/home/celian/swift_server/Packages/PerfectCrypto-1.0.8/Sources/OpenSSLInternal.swift:438:41: error: use of unresolved identifier 'EVP_aes_256_cbc_hmac_sha256'
                case .aes_256_cbc_hmac_sha256:  return EVP_aes_256_cbc_hmac_sha256()
                                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
COpenSSL.EVP_aes_256_cbc_hmac_sha1:1:13: note: did you mean 'EVP_aes_256_cbc_hmac_sha1'?
public func EVP_aes_256_cbc_hmac_sha1() -> UnsafePointer<EVP_CIPHER>!
            ^
<unknown>:0: error: build had 1 command failures
error: exit(1): /swift/usr/bin/swift-build-tool -f /home/celian/swift_server/.build/debug.yaml -v

我的依赖关系有:

    dependencies: [
        .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2),    
        .Package(url: "https://github.com/iamjono/SwiftString.git", majorVersion: 1),
        .Package(url: "https://github.com/PerfectlySoft/Perfect-Curl.git", majorVersion: 2, minor: 0),
        .Package(url:"https://github.com/PerfectlySoft/Perfect-XML.git", majorVersion: 2, minor: 0)

    ]

有人能帮我吗?

1个回答

1

Daniel在12/Apr/17 7:43 AM添加了一条评论
内部
链接 编辑 删除
@Alessandro Piazza 经过一些研究,明显的问题是PerfectCrypto依赖于openssl 1.0.2。官方存储库只有v1.0.1。我按照此说明安装了openssl v1.0.2 https://gist.github.com/mbejda/a1dabc45b32aaf8b25ae5e8d05923518,然后就能编译PerfectCrypto了。


我遇到了同样的问题,但不知道在哪里运行你提供的 .ssh 文件。我正在 Google 应用引擎上运行我的服务器,所以使用 gcloud app deploy 推送了我的 package.swift、main.swift、appyaml 和 Dockerfile。你知道我能在其中安装 OpenSSL v1.0.2 的位置吗? - TimWhiting

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接