├── libssh2-for-iOS
├── Images.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Icon-29.png
│ │ ├── Icon-57.png
│ │ ├── Icon-29@2x.png
│ │ ├── Icon-29@3x.png
│ │ ├── Icon-40@2x.png
│ │ ├── Icon-40@3x.png
│ │ ├── Icon-57@2x.png
│ │ ├── Icon-60@2x.png
│ │ ├── Icon-60@3x.png
│ │ └── Contents.json
│ └── LaunchImage.launchimage
│ │ └── Contents.json
├── libssh2-for-iOS-Bridging-Header.h
├── libssh2_for_iOS_Prefix.pch
├── SSHWrapper.h
├── libssh2_for_iOS-Info.plist
├── AppDelegate.swift
├── ViewController.swift
├── Launch Screen.storyboard
├── SSHWrapper.m
└── ViewController.xib
├── .gitmodules
├── .gitignore
├── libssh2-for-iOS.xcodeproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
├── xcshareddata
│ └── xcschemes
│ │ └── libssh2-for-iOS.xcscheme
└── project.pbxproj
├── .travis.yml
├── include
└── opensslconf-template.h
├── with-libgcrypt-prefix.patch
├── create-libssh2-framework.sh
├── libssh2_Info.plist
├── openssl_Info.plist
├── Package.swift
└── README.md
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-29.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-57.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 |
4 | ],
5 | "info" : {
6 | "version" : 1,
7 | "author" : "xcode"
8 | }
9 | }
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/holzschu/libssh2-for-iOS/HEAD/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "openssl"]
2 | path = openssl
3 | url = https://github.com/x2on/OpenSSL-for-iPhone.git
4 | [submodule "libgcrypt-for-ios"]
5 | path = libgcrypt-for-ios
6 | url = https://github.com/tpot/libgcrypt-for-ios.git
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | bin
2 | src
3 | *.gz
4 | libssh2-for-iOS.xcodeproj/project.xcworkspace/xcuserdata
5 | libssh2-for-iOS.xcodeproj/xcuserdata
6 | lib
7 | *.xccheckout
8 | openssl.framework
9 | include/
10 | gcrypt.framework
11 | *.xcscmblueprint
12 |
--------------------------------------------------------------------------------
/libssh2-for-iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/libssh2-for-iOS-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import
6 | #import "libssh2.h"
7 | #import "gcrypt.h"
8 | #import "SSHWrapper.h"
--------------------------------------------------------------------------------
/libssh2-for-iOS/libssh2_for_iOS_Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header for all source files of the 'libssh2-for-iOS' target in the 'libssh2-for-iOS' project
3 | //
4 |
5 | #ifdef __OBJC__
6 | #import
7 | #import
8 | #endif
9 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | osx_image: xcode9.2
2 | language: objective-c
3 |
4 | before_install:
5 |
6 | script:
7 | - ./build-all.sh openssl
8 | - xcrun -sdk iphoneos lipo -info libssh2.framework/libssh2
9 | - xcrun -sdk iphoneos lipo -info openssl.framework/openssl
10 |
--------------------------------------------------------------------------------
/include/opensslconf-template.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Building OpenSSL for the different architectures of all iOS and tvOS devices requires different settings.
3 | * In order to be able to use assembly code on all devices, the choice was made to keep optimal settings for all
4 | * devices and use this intermediate header file to use the proper opensslconf.h file for each architecture.
5 |
6 | * See also https://github.com/x2on/OpenSSL-for-iPhone/issues/126 and referenced pull requests
7 | */
8 |
9 | #include
10 |
11 |
--------------------------------------------------------------------------------
/with-libgcrypt-prefix.patch:
--------------------------------------------------------------------------------
1 | --- src/libssh2-1.8.0.orig/acinclude.m4 2016-09-27 16:06:35.000000000 +1000
2 | +++ src/libssh2-1.8.0/acinclude.m4 2017-07-11 15:34:35.000000000 +1000
3 | @@ -412,9 +412,9 @@
4 |
5 | old_LDFLAGS=$LDFLAGS
6 | old_CFLAGS=$CFLAGS
7 | - if test -n "$use_libgcrypt" && test "$use_libgcrypt" != "no"; then
8 | - LDFLAGS="$LDFLAGS -L$use_libgcrypt/lib"
9 | - CFLAGS="$CFLAGS -I$use_libgcrypt/include"
10 | + if test -n "$with_libgcrypt_prefix" && test "$use_libgcrypt" != "no"; then
11 | + LDFLAGS="$LDFLAGS -L$with_libgcrypt_prefix/lib"
12 | + CFLAGS="$CFLAGS -I$with_libgcrypt_prefix/include"
13 | fi
14 | AC_LIB_HAVE_LINKFLAGS([gcrypt], [], [
15 | #include
16 |
--------------------------------------------------------------------------------
/create-libssh2-framework.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | FWNAME=libssh2
4 |
5 | if [ ! -d lib ]; then
6 | echo "Please run build-libssh2.sh first!"
7 | exit 1
8 | fi
9 |
10 | if [ -d $FWNAME.framework ]; then
11 | echo "Removing previous $FWNAME.framework copy"
12 | rm -rf $FWNAME.framework
13 | fi
14 |
15 | if [ "$1" == "dynamic" ]; then
16 | LIBTOOL_FLAGS="-dynamic -undefined dynamic_lookup -ios_version_min 8.0"
17 | else
18 | LIBTOOL_FLAGS="-static"
19 | fi
20 |
21 | echo "Creating $FWNAME.framework"
22 | mkdir -p $FWNAME.framework/Headers
23 | libtool -no_warning_for_no_symbols $LIBTOOL_FLAGS -o $FWNAME.framework/$FWNAME lib/libssh2.a
24 | cp -r include/$FWNAME/* $FWNAME.framework/Headers/
25 | echo "Created $FWNAME.framework"
26 |
--------------------------------------------------------------------------------
/libssh2_Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/openssl_Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | $(CURRENT_PROJECT_VERSION)
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Package.swift:
--------------------------------------------------------------------------------
1 | // swift-tools-version:5.3
2 |
3 | import PackageDescription
4 |
5 | let package = Package(
6 | name: "openssl",
7 | products: [
8 | .library(name: "openssl", targets: ["openssl", "libssh2"])
9 | ],
10 | dependencies: [
11 | ],
12 | targets: [
13 | .binaryTarget(
14 | name: "openssl",
15 | url: "https://github.com/holzschu/libssh2-for-iOS/releases/download/v1.1/openssl.xcframework.zip",
16 | checksum: "328f5c2a74a933bdbfc167f279008f3de4d4cafd9ca436a9ad62f3ca66b2b883"
17 | ),
18 | .binaryTarget(
19 | name: "libssh2",
20 | url: "https://github.com/holzschu/libssh2-for-iOS/releases/download/v1.1/libssh2.xcframework.zip",
21 | checksum: "95d88bdc3c80c9ccc523bf58ad62789a99d33252d73f852ea9e2efa6cdb2d80c"
22 | )
23 | ]
24 | )
25 | /*
26 | openssl
27 | 328f5c2a74a933bdbfc167f279008f3de4d4cafd9ca436a9ad62f3ca66b2b883
28 | libssh2
29 | 95d88bdc3c80c9ccc523bf58ad62789a99d33252d73f852ea9e2efa6cdb2d80c
30 | */
31 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/SSHWrapper.h:
--------------------------------------------------------------------------------
1 | //
2 | // SSHWrapper.h
3 | // libssh2-for-iOS
4 | //
5 | // Created by Felix Schulze on 01.02.11.
6 | // Copyright 2010 Felix Schulze. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 |
20 | #import
21 |
22 |
23 | @interface SSHWrapper : NSObject {
24 |
25 | }
26 |
27 | - (void)connectToHost:(NSString *)host port:(int)port user:(NSString *)user password:(NSString *)password error:(NSError **)error;
28 | - (void)closeConnection;
29 | - (NSString *)executeCommand:(NSString *)command error:(NSError **)error;
30 |
31 | @end
32 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/libssh2_for_iOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIcons~ipad
12 |
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | ${PRODUCT_NAME}
19 | CFBundlePackageType
20 | APPL
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIApplicationExitsOnSuspend
28 |
29 | UILaunchStoryboardName
30 | Launch Screen
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // libssh2-for-iOS
4 | //
5 | // Created by Felix Schulze on 01.02.11.
6 | // Copyright 2010-2015 Felix Schulze. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 |
20 | import UIKit
21 |
22 | @UIApplicationMain
23 | class AppDelegate: UIResponder, UIApplicationDelegate {
24 |
25 | var window: UIWindow?
26 |
27 | func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
28 |
29 | self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
30 |
31 | let navigationController = UINavigationController(rootViewController: ViewController())
32 | navigationController.navigationBar.translucent = false
33 | self.window?.rootViewController = navigationController
34 |
35 | self.window?.makeKeyAndVisible()
36 | return true
37 | }
38 |
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "29x29",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-29.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "29x29",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-29@2x.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-29@3x.png",
19 | "scale" : "3x"
20 | },
21 | {
22 | "size" : "40x40",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-40@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "40x40",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-40@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "57x57",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-57.png",
37 | "scale" : "1x"
38 | },
39 | {
40 | "size" : "57x57",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-57@2x.png",
43 | "scale" : "2x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-60@3x.png",
55 | "scale" : "3x"
56 | }
57 | ],
58 | "info" : {
59 | "version" : 1,
60 | "author" : "xcode"
61 | },
62 | "properties" : {
63 | "pre-rendered" : true
64 | }
65 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # libssh2-for-iOS [](https://travis-ci.org/x2on/libssh2-for-iOS)
2 |
3 | This is a tutorial for using self-compiled builds of the libssh2-library for iOS. You can build apps with XCode and the official SDK from Apple with this. I also made a small example-app for using the libraries with XCode and the iPhone/iPhone-Simulator.
4 |
5 | @see: http://www.x2on.de/2011/02/02/libssh2-for-ios-iphone-and-ipad-example-app-with-ssh-connection/
6 |
7 | The example uses libssh2 to make an ssh connection to an ssh server. Then you can execute commands on the server and get the output in your app.
8 |
9 | You can build the libssh2 library with openssl or with libgcrypt!
10 |
11 | ## Requirements:
12 | - Xcode 7.1
13 | - Xcode Command Line Tools
14 |
15 | ## Readme
16 | ### Checkout the submodules:
17 | ```bash
18 | git submodule init
19 | git submodule update
20 | ```
21 | ### libssh2 with openssl:
22 | ```bash
23 | ./build-all.sh openssl
24 | ```
25 | ### libssh2 with libgcrypt:
26 | ```bash
27 | ./build-all.sh libgcrypt
28 | ```
29 | ### Solve problems:
30 | Check the log files in the ```bin``` folder
31 | ## Changelog:
32 | * 2018-02-09: Create fat dynamic frameworks, with embed-bitcode
33 | * 2015-12-11: OpenSSL 1.0.2e
34 | * 2015-01-11: Support for Xcode 7 and iOS 9.1, OpenSSL 1.0.2d
35 | * 2015-01-11: OpenSSL 1.0.1k
36 | * 2015-01-06: Support for Xcode 6 and iOS 8.1, OpenSSL 1.0.1j
37 | * 2014-03-25: Support for Xcode 5.1 and iOS 7.1
38 | * 2013-09-26: Support for Xcode 5 and iOS 7
39 | * 2013-03-03: Move OpenSSL to submodule
40 | * 2013-03-02: OpenSSL 1.0.1e
41 | * 2013-01-01: libssh 1.4.3
42 | * 2012-05-29: OpenSSL 1.0.1c + libssh 1.4.2
43 | * 2011-02-08: OpenSSL 1.0.0d
44 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/ViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // libssh2-for-iOS
4 | //
5 | // Created by Felix Schulze on 01.02.11.
6 | // Copyright 2010-2015 Felix Schulze. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 |
20 | import UIKit
21 |
22 | class ViewController: UIViewController {
23 |
24 | @IBOutlet var textField: UITextField!
25 | @IBOutlet var ipField: UITextField!
26 | @IBOutlet var userField: UITextField!
27 | @IBOutlet var passwordField: UITextField!
28 | @IBOutlet var textView: UITextView!
29 |
30 |
31 | @IBAction
32 | func showInfo() {
33 | let message = "libssh2-Version: \(LIBSSH2_VERSION)\nlibgcrypt-Version: \(GCRYPT_VERSION)\nlibgpg-error-Version: 1.12\nopenssl-Version:\(OPENSSL_VERSION_TEXT)\nLicense: See include/LICENSE\n\nCopyright 2010-2015 by Felix Schulze\n http://www.felixschulze.de"
34 | let alertController = UIAlertController(title: "libssh2-for-iOS", message: message, preferredStyle: .Alert)
35 | alertController.addAction(UIAlertAction(title: "Ok", style: .Cancel, handler: nil))
36 | self.presentViewController(alertController, animated: true, completion: nil)
37 | }
38 |
39 | @IBAction
40 | func executeCommaned() {
41 |
42 | let sshWrapper = SSHWrapper()
43 | var error: NSError?
44 |
45 | sshWrapper.connectToHost(ipField.text, port: 22, user: userField.text, password: passwordField.text, error: &error)
46 |
47 | if error != nil {
48 | let alertController = UIAlertController(title: "Error", message: error!.localizedDescription, preferredStyle: .Alert)
49 | alertController.addAction(UIAlertAction(title: "Ok", style: .Cancel, handler: nil))
50 | self.presentViewController(alertController, animated: true, completion: nil)
51 | }
52 | else {
53 | var result: String?
54 |
55 | do {
56 | result = try sshWrapper.executeCommand(textField.text)
57 | }
58 | catch {
59 | result = "Error"
60 | }
61 | textField.text = result
62 | }
63 | textField.resignFirstResponder()
64 | ipField.resignFirstResponder()
65 | userField.resignFirstResponder()
66 | passwordField.resignFirstResponder()
67 | }
68 |
69 | override func viewDidLoad() {
70 | super.viewDidLoad()
71 |
72 | self.title = "libssh2-for-iOS"
73 | let infoButton = UIButton(type: .InfoLight)
74 | infoButton.addTarget(self, action: "showInfo", forControlEvents: .TouchDown)
75 | self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: infoButton)
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/Launch Screen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/libssh2-for-iOS.xcodeproj/xcshareddata/xcschemes/libssh2-for-iOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/SSHWrapper.m:
--------------------------------------------------------------------------------
1 | //
2 | // SSHWrapper.m
3 | // libssh2-for-iOS
4 | //
5 | // Created by Felix Schulze on 01.02.11.
6 | // Copyright 2010 Felix Schulze. All rights reserved.
7 | //
8 | // Licensed under the Apache License, Version 2.0 (the "License");
9 | // you may not use this file except in compliance with the License.
10 | // You may obtain a copy of the License at
11 | //
12 | // http://www.apache.org/licenses/LICENSE-2.0
13 | //
14 | // Unless required by applicable law or agreed to in writing, software
15 | // distributed under the License is distributed on an "AS IS" BASIS,
16 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 | // See the License for the specific language governing permissions and
18 | // limitations under the License.
19 | //
20 | // @see: http://www.libssh2.org/examples/ssh2_exec.html
21 |
22 | #import "SSHWrapper.h"
23 |
24 | #include "libssh2.h"
25 | #include "libssh2_sftp.h"
26 | #include
27 | #include
28 |
29 |
30 |
31 |
32 | static int waitsocket(int socket_fd, LIBSSH2_SESSION *session)
33 | {
34 | struct timeval timeout;
35 | int rc;
36 | fd_set fd;
37 | fd_set *writefd = NULL;
38 | fd_set *readfd = NULL;
39 | int dir;
40 |
41 | timeout.tv_sec = 10;
42 | timeout.tv_usec = 0;
43 |
44 | FD_ZERO(&fd);
45 |
46 | FD_SET(socket_fd, &fd);
47 |
48 | /* now make sure we wait in the correct direction */
49 | dir = libssh2_session_block_directions(session);
50 |
51 | if(dir & LIBSSH2_SESSION_BLOCK_INBOUND)
52 | readfd = &fd;
53 |
54 | if(dir & LIBSSH2_SESSION_BLOCK_OUTBOUND)
55 | writefd = &fd;
56 |
57 | rc = select(socket_fd + 1, readfd, writefd, NULL, &timeout);
58 |
59 | return rc;
60 | }
61 |
62 | @implementation SSHWrapper {
63 | int sock;
64 | LIBSSH2_SESSION *session;
65 | LIBSSH2_CHANNEL *channel;
66 | int rc;
67 | }
68 |
69 | - (void)dealloc {
70 | [self closeConnection];
71 | session = nil;
72 | channel = nil;
73 | }
74 |
75 |
76 | - (void)connectToHost:(NSString *)host port:(int)port user:(NSString *)user password:(NSString *)password error:(NSError **)error {
77 | if (host.length == 0) {
78 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:300 userInfo:@{NSLocalizedDescriptionKey:@"No host"}];
79 | return;
80 | }
81 | const char* hostChar = [host cStringUsingEncoding:NSUTF8StringEncoding];
82 | const char* userChar = [user cStringUsingEncoding:NSUTF8StringEncoding];
83 | const char* passwordChar = [password cStringUsingEncoding:NSUTF8StringEncoding];
84 | struct sockaddr_in sock_serv_addr;
85 | unsigned long hostaddr = inet_addr(hostChar);
86 |
87 | sock = socket(AF_INET, SOCK_STREAM, 0);
88 | sock_serv_addr.sin_family = AF_INET;
89 | sock_serv_addr.sin_port = htons(port);
90 | sock_serv_addr.sin_addr.s_addr = hostaddr;
91 | if (connect(sock, (struct sockaddr *) (&sock_serv_addr), sizeof(sock_serv_addr)) != 0) {
92 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:400 userInfo:@{NSLocalizedDescriptionKey:@"Failed to connect"}];
93 | return;
94 | }
95 |
96 | /* Create a session instance */
97 | session = libssh2_session_init();
98 | if (!session) {
99 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:401 userInfo:@{NSLocalizedDescriptionKey : @"Create session failed"}];
100 | return;
101 | }
102 |
103 | /* tell libssh2 we want it all done non-blocking */
104 | libssh2_session_set_blocking(session, 0);
105 |
106 | /* ... start it up. This will trade welcome banners, exchange keys,
107 | * and setup crypto, compression, and MAC layers
108 | */
109 | while ((rc = libssh2_session_startup(session, sock)) ==
110 | LIBSSH2_ERROR_EAGAIN);
111 | if (rc) {
112 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:402 userInfo:@{NSLocalizedDescriptionKey : [NSString stringWithFormat:@"Failure establishing SSH session: %d", rc]}];
113 | return;
114 | }
115 |
116 | if ( strlen(passwordChar) != 0 ) {
117 | /* We could authenticate via password */
118 | while ((rc = libssh2_userauth_password(session, userChar, passwordChar)) == LIBSSH2_ERROR_EAGAIN);
119 | if (rc) {
120 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:403 userInfo:@{NSLocalizedDescriptionKey : @"Authentication by password failed."}];
121 | return;
122 | }
123 | }
124 | }
125 |
126 | - (NSString *)executeCommand:(NSString *)command error:(NSError **)error {
127 | const char* commandChar = [command cStringUsingEncoding:NSUTF8StringEncoding];
128 |
129 | NSString *result = nil;
130 |
131 | /* Exec non-blocking on the remove host */
132 | while( (channel = libssh2_channel_open_session(session)) == NULL &&
133 | libssh2_session_last_error(session,NULL,NULL,0) == LIBSSH2_ERROR_EAGAIN )
134 | {
135 | waitsocket(sock, session);
136 | }
137 | if( channel == NULL )
138 | {
139 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:501 userInfo:@{NSLocalizedDescriptionKey : @"No channel found."}];
140 | return nil;
141 | }
142 | while( (rc = libssh2_channel_exec(channel, commandChar)) == LIBSSH2_ERROR_EAGAIN )
143 | {
144 | waitsocket(sock, session);
145 | }
146 | if( rc != 0 )
147 | {
148 | *error = [NSError errorWithDomain:@"de.felixschulze.sshwrapper" code:502 userInfo:@{NSLocalizedDescriptionKey : @"Error while exec command."}];
149 | return nil;
150 | }
151 | for( ;; )
152 | {
153 | /* loop until we block */
154 | int rc1;
155 | do
156 | {
157 | char buffer[0x2000];
158 | rc1 = libssh2_channel_read( channel, buffer, sizeof(buffer) );
159 | if( rc1 > 0 )
160 | {
161 | result = @(buffer);
162 | }
163 | }
164 | while( rc1 > 0 );
165 |
166 | /* this is due to blocking that would occur otherwise so we loop on
167 | this condition */
168 | if( rc1 == LIBSSH2_ERROR_EAGAIN )
169 | {
170 | waitsocket(sock, session);
171 | }
172 | else
173 | break;
174 | }
175 | while( (rc = libssh2_channel_close(channel)) == LIBSSH2_ERROR_EAGAIN )
176 | waitsocket(sock, session);
177 |
178 | libssh2_channel_free(channel);
179 | channel = NULL;
180 |
181 | return result;
182 |
183 | }
184 |
185 |
186 | - (void)closeConnection {
187 | if (session) {
188 | libssh2_session_disconnect(session, "Normal Shutdown, Thank you for playing");
189 | libssh2_session_free(session);
190 | session = nil;
191 | }
192 | close(sock);
193 | }
194 |
195 | @end
196 |
--------------------------------------------------------------------------------
/libssh2-for-iOS/ViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
43 |
55 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
--------------------------------------------------------------------------------
/libssh2-for-iOS.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
11 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
12 | 22BCB313202E32650041F00E /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22BCB312202E32650041F00E /* libssl.a */; };
13 | 22BCB315202E32690041F00E /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22BCB314202E32690041F00E /* libcrypto.a */; };
14 | 22BCB323202E32C00041F00E /* libssh2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AB446E812F8A588006B0090 /* libssh2.a */; };
15 | 22BCB327202E32E60041F00E /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = FD6F011D1BFF593700B6EFFB /* libz.tbd */; };
16 | 22BCB328202E39390041F00E /* openssl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F7E9D61A5C2B1700F3C678 /* openssl.framework */; };
17 | 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
18 | 2AB446ED12F8A588006B0090 /* libssh2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AB446E812F8A588006B0090 /* libssh2.a */; };
19 | 53E9E45A16F4D4F300347B0F /* SSHWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 53E9E45916F4D4F300347B0F /* SSHWrapper.m */; };
20 | 53F7E9D71A5C2B1700F3C678 /* openssl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F7E9D61A5C2B1700F3C678 /* openssl.framework */; };
21 | 53F7E9D91A5C2DB900F3C678 /* gcrypt.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53F7E9D81A5C2DB900F3C678 /* gcrypt.framework */; };
22 | 53F7E9DB1A5C2EBD00F3C678 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 53F7E9DA1A5C2EBD00F3C678 /* Images.xcassets */; };
23 | FD6F01141BFF42D300B6EFFB /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD6F01131BFF42D300B6EFFB /* ViewController.swift */; };
24 | FD6F01181BFF43BC00B6EFFB /* ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = FD6F01171BFF43BC00B6EFFB /* ViewController.xib */; };
25 | FD6F011A1BFF564400B6EFFB /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FD6F01191BFF564400B6EFFB /* Launch Screen.storyboard */; };
26 | FD6F011C1BFF58DB00B6EFFB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD6F011B1BFF58DB00B6EFFB /* AppDelegate.swift */; };
27 | FD6F011E1BFF593700B6EFFB /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = FD6F011D1BFF593700B6EFFB /* libz.tbd */; };
28 | /* End PBXBuildFile section */
29 |
30 | /* Begin PBXFileReference section */
31 | 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
32 | 1D6058910D05DD3D006BFB54 /* libssh2-for-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "libssh2-for-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
33 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
34 | 22BCB308202E32330041F00E /* openssl.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = openssl.framework; sourceTree = BUILT_PRODUCTS_DIR; };
35 | 22BCB30B202E32330041F00E /* openssl_Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = openssl_Info.plist; path = ../openssl_Info.plist; sourceTree = ""; };
36 | 22BCB312202E32650041F00E /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = lib/libssl.a; sourceTree = ""; };
37 | 22BCB314202E32690041F00E /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = lib/libcrypto.a; sourceTree = ""; };
38 | 22BCB31B202E32AF0041F00E /* libssh2.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = libssh2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
39 | 22BCB31D202E32AF0041F00E /* libssh2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = libssh2.h; sourceTree = ""; };
40 | 22BCB31E202E32AF0041F00E /* libssh2_Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = libssh2_Info.plist; path = ../libssh2_Info.plist; sourceTree = ""; };
41 | 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
42 | 2AB446E812F8A588006B0090 /* libssh2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssh2.a; path = lib/libssh2.a; sourceTree = ""; };
43 | 2AB446F312F8A5A3006B0090 /* libssh2_for_iOS-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "libssh2_for_iOS-Info.plist"; path = "libssh2-for-iOS/libssh2_for_iOS-Info.plist"; sourceTree = ""; };
44 | 2AB4470612F8A5CC006B0090 /* libssh2_for_iOS_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = libssh2_for_iOS_Prefix.pch; path = "libssh2-for-iOS/libssh2_for_iOS_Prefix.pch"; sourceTree = ""; };
45 | 53E9E45816F4D4F300347B0F /* SSHWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SSHWrapper.h; path = "libssh2-for-iOS/SSHWrapper.h"; sourceTree = SOURCE_ROOT; };
46 | 53E9E45916F4D4F300347B0F /* SSHWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SSHWrapper.m; path = "libssh2-for-iOS/SSHWrapper.m"; sourceTree = SOURCE_ROOT; };
47 | 53F7E9D61A5C2B1700F3C678 /* openssl.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = openssl.framework; sourceTree = ""; };
48 | 53F7E9D81A5C2DB900F3C678 /* gcrypt.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = gcrypt.framework; sourceTree = ""; };
49 | 53F7E9DA1A5C2EBD00F3C678 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = "libssh2-for-iOS/Images.xcassets"; sourceTree = ""; };
50 | FD6F01121BFF42D300B6EFFB /* libssh2-for-iOS-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "libssh2-for-iOS-Bridging-Header.h"; path = "libssh2-for-iOS/libssh2-for-iOS-Bridging-Header.h"; sourceTree = ""; };
51 | FD6F01131BFF42D300B6EFFB /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewController.swift; path = "libssh2-for-iOS/ViewController.swift"; sourceTree = ""; };
52 | FD6F01171BFF43BC00B6EFFB /* ViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ViewController.xib; path = "libssh2-for-iOS/ViewController.xib"; sourceTree = ""; };
53 | FD6F01191BFF564400B6EFFB /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = "Launch Screen.storyboard"; path = "libssh2-for-iOS/Launch Screen.storyboard"; sourceTree = ""; };
54 | FD6F011B1BFF58DB00B6EFFB /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AppDelegate.swift; path = "libssh2-for-iOS/AppDelegate.swift"; sourceTree = ""; };
55 | FD6F011D1BFF593700B6EFFB /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
56 | /* End PBXFileReference section */
57 |
58 | /* Begin PBXFrameworksBuildPhase section */
59 | 1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
60 | isa = PBXFrameworksBuildPhase;
61 | buildActionMask = 2147483647;
62 | files = (
63 | FD6F011E1BFF593700B6EFFB /* libz.tbd in Frameworks */,
64 | 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
65 | 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
66 | 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
67 | 53F7E9D71A5C2B1700F3C678 /* openssl.framework in Frameworks */,
68 | 2AB446ED12F8A588006B0090 /* libssh2.a in Frameworks */,
69 | 53F7E9D91A5C2DB900F3C678 /* gcrypt.framework in Frameworks */,
70 | );
71 | runOnlyForDeploymentPostprocessing = 0;
72 | };
73 | 22BCB304202E32330041F00E /* Frameworks */ = {
74 | isa = PBXFrameworksBuildPhase;
75 | buildActionMask = 2147483647;
76 | files = (
77 | 22BCB313202E32650041F00E /* libssl.a in Frameworks */,
78 | 22BCB315202E32690041F00E /* libcrypto.a in Frameworks */,
79 | );
80 | runOnlyForDeploymentPostprocessing = 0;
81 | };
82 | 22BCB317202E32AF0041F00E /* Frameworks */ = {
83 | isa = PBXFrameworksBuildPhase;
84 | buildActionMask = 2147483647;
85 | files = (
86 | 22BCB328202E39390041F00E /* openssl.framework in Frameworks */,
87 | 22BCB327202E32E60041F00E /* libz.tbd in Frameworks */,
88 | 22BCB323202E32C00041F00E /* libssh2.a in Frameworks */,
89 | );
90 | runOnlyForDeploymentPostprocessing = 0;
91 | };
92 | /* End PBXFrameworksBuildPhase section */
93 |
94 | /* Begin PBXGroup section */
95 | 19C28FACFE9D520D11CA2CBB /* Products */ = {
96 | isa = PBXGroup;
97 | children = (
98 | 1D6058910D05DD3D006BFB54 /* libssh2-for-iOS.app */,
99 | 22BCB308202E32330041F00E /* openssl.framework */,
100 | 22BCB31B202E32AF0041F00E /* libssh2.framework */,
101 | );
102 | name = Products;
103 | sourceTree = "";
104 | };
105 | 22BCB309202E32330041F00E /* openssl */ = {
106 | isa = PBXGroup;
107 | children = (
108 | 22BCB30B202E32330041F00E /* openssl_Info.plist */,
109 | );
110 | path = openssl;
111 | sourceTree = "";
112 | };
113 | 22BCB31C202E32AF0041F00E /* libssh2 */ = {
114 | isa = PBXGroup;
115 | children = (
116 | 22BCB31D202E32AF0041F00E /* libssh2.h */,
117 | 22BCB31E202E32AF0041F00E /* libssh2_Info.plist */,
118 | );
119 | path = libssh2;
120 | sourceTree = "";
121 | };
122 | 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
123 | isa = PBXGroup;
124 | children = (
125 | 53E9E46116F4D62500347B0F /* libssh2-for-iOS */,
126 | 29B97315FDCFA39411CA2CEA /* Other Sources */,
127 | 29B97317FDCFA39411CA2CEA /* Resources */,
128 | 22BCB309202E32330041F00E /* openssl */,
129 | 22BCB31C202E32AF0041F00E /* libssh2 */,
130 | 29B97323FDCFA39411CA2CEA /* Frameworks */,
131 | 19C28FACFE9D520D11CA2CBB /* Products */,
132 | );
133 | name = CustomTemplate;
134 | sourceTree = "";
135 | };
136 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = {
137 | isa = PBXGroup;
138 | children = (
139 | FD6F01121BFF42D300B6EFFB /* libssh2-for-iOS-Bridging-Header.h */,
140 | 2AB4470612F8A5CC006B0090 /* libssh2_for_iOS_Prefix.pch */,
141 | );
142 | name = "Other Sources";
143 | sourceTree = "";
144 | };
145 | 29B97317FDCFA39411CA2CEA /* Resources */ = {
146 | isa = PBXGroup;
147 | children = (
148 | 53F7E9DA1A5C2EBD00F3C678 /* Images.xcassets */,
149 | 2AB446F312F8A5A3006B0090 /* libssh2_for_iOS-Info.plist */,
150 | FD6F01191BFF564400B6EFFB /* Launch Screen.storyboard */,
151 | );
152 | name = Resources;
153 | sourceTree = "";
154 | };
155 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
156 | isa = PBXGroup;
157 | children = (
158 | 22BCB314202E32690041F00E /* libcrypto.a */,
159 | 22BCB312202E32650041F00E /* libssl.a */,
160 | FD6F011D1BFF593700B6EFFB /* libz.tbd */,
161 | 2AB446E812F8A588006B0090 /* libssh2.a */,
162 | 53F7E9D81A5C2DB900F3C678 /* gcrypt.framework */,
163 | 53F7E9D61A5C2B1700F3C678 /* openssl.framework */,
164 | 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
165 | 1D30AB110D05D00D00671497 /* Foundation.framework */,
166 | 288765FC0DF74451002DB57D /* CoreGraphics.framework */,
167 | );
168 | name = Frameworks;
169 | sourceTree = "";
170 | };
171 | 53E9E46116F4D62500347B0F /* libssh2-for-iOS */ = {
172 | isa = PBXGroup;
173 | children = (
174 | FD6F011B1BFF58DB00B6EFFB /* AppDelegate.swift */,
175 | FD6F01131BFF42D300B6EFFB /* ViewController.swift */,
176 | FD6F01171BFF43BC00B6EFFB /* ViewController.xib */,
177 | 53E9E45816F4D4F300347B0F /* SSHWrapper.h */,
178 | 53E9E45916F4D4F300347B0F /* SSHWrapper.m */,
179 | );
180 | name = "libssh2-for-iOS";
181 | sourceTree = "";
182 | };
183 | /* End PBXGroup section */
184 |
185 | /* Begin PBXHeadersBuildPhase section */
186 | 22BCB305202E32330041F00E /* Headers */ = {
187 | isa = PBXHeadersBuildPhase;
188 | buildActionMask = 2147483647;
189 | files = (
190 | );
191 | runOnlyForDeploymentPostprocessing = 0;
192 | };
193 | 22BCB318202E32AF0041F00E /* Headers */ = {
194 | isa = PBXHeadersBuildPhase;
195 | buildActionMask = 2147483647;
196 | files = (
197 | );
198 | runOnlyForDeploymentPostprocessing = 0;
199 | };
200 | /* End PBXHeadersBuildPhase section */
201 |
202 | /* Begin PBXNativeTarget section */
203 | 1D6058900D05DD3D006BFB54 /* libssh2-for-iOS */ = {
204 | isa = PBXNativeTarget;
205 | buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "libssh2-for-iOS" */;
206 | buildPhases = (
207 | 1D60588D0D05DD3D006BFB54 /* Resources */,
208 | 1D60588E0D05DD3D006BFB54 /* Sources */,
209 | 1D60588F0D05DD3D006BFB54 /* Frameworks */,
210 | );
211 | buildRules = (
212 | );
213 | dependencies = (
214 | );
215 | name = "libssh2-for-iOS";
216 | productName = "libssh2-for-iOS";
217 | productReference = 1D6058910D05DD3D006BFB54 /* libssh2-for-iOS.app */;
218 | productType = "com.apple.product-type.application";
219 | };
220 | 22BCB307202E32330041F00E /* openssl */ = {
221 | isa = PBXNativeTarget;
222 | buildConfigurationList = 22BCB30F202E32330041F00E /* Build configuration list for PBXNativeTarget "openssl" */;
223 | buildPhases = (
224 | 22BCB303202E32330041F00E /* Sources */,
225 | 22BCB304202E32330041F00E /* Frameworks */,
226 | 22BCB305202E32330041F00E /* Headers */,
227 | 22BCB306202E32330041F00E /* Resources */,
228 | );
229 | buildRules = (
230 | );
231 | dependencies = (
232 | );
233 | name = openssl;
234 | productName = openssl;
235 | productReference = 22BCB308202E32330041F00E /* openssl.framework */;
236 | productType = "com.apple.product-type.framework";
237 | };
238 | 22BCB31A202E32AF0041F00E /* libssh2 */ = {
239 | isa = PBXNativeTarget;
240 | buildConfigurationList = 22BCB320202E32B00041F00E /* Build configuration list for PBXNativeTarget "libssh2" */;
241 | buildPhases = (
242 | 22BCB316202E32AF0041F00E /* Sources */,
243 | 22BCB317202E32AF0041F00E /* Frameworks */,
244 | 22BCB318202E32AF0041F00E /* Headers */,
245 | 22BCB319202E32AF0041F00E /* Resources */,
246 | );
247 | buildRules = (
248 | );
249 | dependencies = (
250 | );
251 | name = libssh2;
252 | productName = libssh2;
253 | productReference = 22BCB31B202E32AF0041F00E /* libssh2.framework */;
254 | productType = "com.apple.product-type.framework";
255 | };
256 | /* End PBXNativeTarget section */
257 |
258 | /* Begin PBXProject section */
259 | 29B97313FDCFA39411CA2CEA /* Project object */ = {
260 | isa = PBXProject;
261 | attributes = {
262 | LastSwiftUpdateCheck = 0710;
263 | LastUpgradeCheck = 0710;
264 | TargetAttributes = {
265 | 22BCB307202E32330041F00E = {
266 | CreatedOnToolsVersion = 9.3;
267 | ProvisioningStyle = Manual;
268 | };
269 | 22BCB31A202E32AF0041F00E = {
270 | CreatedOnToolsVersion = 9.3;
271 | ProvisioningStyle = Manual;
272 | };
273 | };
274 | };
275 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "libssh2-for-iOS" */;
276 | compatibilityVersion = "Xcode 3.2";
277 | developmentRegion = English;
278 | hasScannedForEncodings = 1;
279 | knownRegions = (
280 | English,
281 | Japanese,
282 | French,
283 | German,
284 | );
285 | mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
286 | projectDirPath = "";
287 | projectRoot = "";
288 | targets = (
289 | 1D6058900D05DD3D006BFB54 /* libssh2-for-iOS */,
290 | 22BCB307202E32330041F00E /* openssl */,
291 | 22BCB31A202E32AF0041F00E /* libssh2 */,
292 | );
293 | };
294 | /* End PBXProject section */
295 |
296 | /* Begin PBXResourcesBuildPhase section */
297 | 1D60588D0D05DD3D006BFB54 /* Resources */ = {
298 | isa = PBXResourcesBuildPhase;
299 | buildActionMask = 2147483647;
300 | files = (
301 | FD6F011A1BFF564400B6EFFB /* Launch Screen.storyboard in Resources */,
302 | 53F7E9DB1A5C2EBD00F3C678 /* Images.xcassets in Resources */,
303 | FD6F01181BFF43BC00B6EFFB /* ViewController.xib in Resources */,
304 | );
305 | runOnlyForDeploymentPostprocessing = 0;
306 | };
307 | 22BCB306202E32330041F00E /* Resources */ = {
308 | isa = PBXResourcesBuildPhase;
309 | buildActionMask = 2147483647;
310 | files = (
311 | );
312 | runOnlyForDeploymentPostprocessing = 0;
313 | };
314 | 22BCB319202E32AF0041F00E /* Resources */ = {
315 | isa = PBXResourcesBuildPhase;
316 | buildActionMask = 2147483647;
317 | files = (
318 | );
319 | runOnlyForDeploymentPostprocessing = 0;
320 | };
321 | /* End PBXResourcesBuildPhase section */
322 |
323 | /* Begin PBXSourcesBuildPhase section */
324 | 1D60588E0D05DD3D006BFB54 /* Sources */ = {
325 | isa = PBXSourcesBuildPhase;
326 | buildActionMask = 2147483647;
327 | files = (
328 | FD6F011C1BFF58DB00B6EFFB /* AppDelegate.swift in Sources */,
329 | 53E9E45A16F4D4F300347B0F /* SSHWrapper.m in Sources */,
330 | FD6F01141BFF42D300B6EFFB /* ViewController.swift in Sources */,
331 | );
332 | runOnlyForDeploymentPostprocessing = 0;
333 | };
334 | 22BCB303202E32330041F00E /* Sources */ = {
335 | isa = PBXSourcesBuildPhase;
336 | buildActionMask = 2147483647;
337 | files = (
338 | );
339 | runOnlyForDeploymentPostprocessing = 0;
340 | };
341 | 22BCB316202E32AF0041F00E /* Sources */ = {
342 | isa = PBXSourcesBuildPhase;
343 | buildActionMask = 2147483647;
344 | files = (
345 | );
346 | runOnlyForDeploymentPostprocessing = 0;
347 | };
348 | /* End PBXSourcesBuildPhase section */
349 |
350 | /* Begin XCBuildConfiguration section */
351 | 1D6058940D05DD3E006BFB54 /* Debug */ = {
352 | isa = XCBuildConfiguration;
353 | buildSettings = {
354 | ALWAYS_SEARCH_USER_PATHS = NO;
355 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
356 | CLANG_ENABLE_MODULES = YES;
357 | CLANG_ENABLE_OBJC_ARC = YES;
358 | COPY_PHASE_STRIP = NO;
359 | FRAMEWORK_SEARCH_PATHS = (
360 | "$(inherited)",
361 | "$(PROJECT_DIR)",
362 | );
363 | GCC_DYNAMIC_NO_PIC = NO;
364 | GCC_OPTIMIZATION_LEVEL = 0;
365 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
366 | GCC_PREFIX_HEADER = "libssh2-for-iOS/libssh2_for_iOS_Prefix.pch";
367 | INFOPLIST_FILE = "libssh2-for-iOS/libssh2_for_iOS-Info.plist";
368 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
369 | LIBRARY_SEARCH_PATHS = (
370 | "$(inherited)",
371 | "\"$(SRCROOT)/lib\"",
372 | );
373 | PRODUCT_BUNDLE_IDENTIFIER = "de.x2on.${PRODUCT_NAME:rfc1034identifier}";
374 | PRODUCT_NAME = "libssh2-for-iOS";
375 | SWIFT_OBJC_BRIDGING_HEADER = "libssh2-for-iOS/libssh2-for-iOS-Bridging-Header.h";
376 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
377 | };
378 | name = Debug;
379 | };
380 | 1D6058950D05DD3E006BFB54 /* Release */ = {
381 | isa = XCBuildConfiguration;
382 | buildSettings = {
383 | ALWAYS_SEARCH_USER_PATHS = NO;
384 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
385 | CLANG_ENABLE_MODULES = YES;
386 | CLANG_ENABLE_OBJC_ARC = YES;
387 | COPY_PHASE_STRIP = YES;
388 | FRAMEWORK_SEARCH_PATHS = (
389 | "$(inherited)",
390 | "$(PROJECT_DIR)",
391 | );
392 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
393 | GCC_PREFIX_HEADER = "libssh2-for-iOS/libssh2_for_iOS_Prefix.pch";
394 | INFOPLIST_FILE = "libssh2-for-iOS/libssh2_for_iOS-Info.plist";
395 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
396 | LIBRARY_SEARCH_PATHS = (
397 | "$(inherited)",
398 | "\"$(SRCROOT)/lib\"",
399 | );
400 | PRODUCT_BUNDLE_IDENTIFIER = "de.x2on.${PRODUCT_NAME:rfc1034identifier}";
401 | PRODUCT_NAME = "libssh2-for-iOS";
402 | SWIFT_OBJC_BRIDGING_HEADER = "libssh2-for-iOS/libssh2-for-iOS-Bridging-Header.h";
403 | VALIDATE_PRODUCT = YES;
404 | };
405 | name = Release;
406 | };
407 | 22BCB30D202E32330041F00E /* Debug */ = {
408 | isa = XCBuildConfiguration;
409 | buildSettings = {
410 | ALWAYS_SEARCH_USER_PATHS = NO;
411 | CLANG_ANALYZER_NONNULL = YES;
412 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
413 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
414 | CLANG_CXX_LIBRARY = "libc++";
415 | CLANG_ENABLE_MODULES = YES;
416 | CLANG_ENABLE_OBJC_ARC = YES;
417 | CLANG_ENABLE_OBJC_WEAK = YES;
418 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
419 | CLANG_WARN_BOOL_CONVERSION = YES;
420 | CLANG_WARN_COMMA = YES;
421 | CLANG_WARN_CONSTANT_CONVERSION = YES;
422 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
423 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
424 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
425 | CLANG_WARN_EMPTY_BODY = YES;
426 | CLANG_WARN_ENUM_CONVERSION = YES;
427 | CLANG_WARN_INFINITE_RECURSION = YES;
428 | CLANG_WARN_INT_CONVERSION = YES;
429 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
430 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
431 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
432 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
433 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
434 | CLANG_WARN_STRICT_PROTOTYPES = YES;
435 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
436 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
437 | CLANG_WARN_UNREACHABLE_CODE = YES;
438 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
439 | CODE_SIGN_IDENTITY = "iPhone Developer";
440 | CODE_SIGN_STYLE = Manual;
441 | COPY_PHASE_STRIP = NO;
442 | CURRENT_PROJECT_VERSION = 1;
443 | DEBUG_INFORMATION_FORMAT = dwarf;
444 | DEFINES_MODULE = YES;
445 | DEVELOPMENT_TEAM = "";
446 | DYLIB_COMPATIBILITY_VERSION = 1;
447 | DYLIB_CURRENT_VERSION = 1;
448 | DYLIB_INSTALL_NAME_BASE = "@rpath";
449 | ENABLE_STRICT_OBJC_MSGSEND = YES;
450 | GCC_C_LANGUAGE_STANDARD = gnu11;
451 | GCC_DYNAMIC_NO_PIC = NO;
452 | GCC_NO_COMMON_BLOCKS = YES;
453 | GCC_OPTIMIZATION_LEVEL = 0;
454 | GCC_PREPROCESSOR_DEFINITIONS = (
455 | "DEBUG=1",
456 | "$(inherited)",
457 | );
458 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
459 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
460 | GCC_WARN_UNDECLARED_SELECTOR = YES;
461 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
462 | GCC_WARN_UNUSED_FUNCTION = YES;
463 | INFOPLIST_FILE = openssl_Info.plist;
464 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
465 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
466 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
467 | LIBRARY_SEARCH_PATHS = (
468 | "$(inherited)",
469 | "$(PROJECT_DIR)/lib",
470 | );
471 | MTL_ENABLE_DEBUG_INFO = YES;
472 | ONLY_ACTIVE_ARCH = NO;
473 | OTHER_LDFLAGS = "-all_load";
474 | PRODUCT_BUNDLE_IDENTIFIER = openssl;
475 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
476 | PROVISIONING_PROFILE_SPECIFIER = "";
477 | SKIP_INSTALL = YES;
478 | TARGETED_DEVICE_FAMILY = "1,2";
479 | VERSIONING_SYSTEM = "apple-generic";
480 | VERSION_INFO_PREFIX = "";
481 | };
482 | name = Debug;
483 | };
484 | 22BCB30E202E32330041F00E /* Release */ = {
485 | isa = XCBuildConfiguration;
486 | buildSettings = {
487 | ALWAYS_SEARCH_USER_PATHS = NO;
488 | CLANG_ANALYZER_NONNULL = YES;
489 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
490 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
491 | CLANG_CXX_LIBRARY = "libc++";
492 | CLANG_ENABLE_MODULES = YES;
493 | CLANG_ENABLE_OBJC_ARC = YES;
494 | CLANG_ENABLE_OBJC_WEAK = YES;
495 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
496 | CLANG_WARN_BOOL_CONVERSION = YES;
497 | CLANG_WARN_COMMA = YES;
498 | CLANG_WARN_CONSTANT_CONVERSION = YES;
499 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
500 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
501 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
502 | CLANG_WARN_EMPTY_BODY = YES;
503 | CLANG_WARN_ENUM_CONVERSION = YES;
504 | CLANG_WARN_INFINITE_RECURSION = YES;
505 | CLANG_WARN_INT_CONVERSION = YES;
506 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
507 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
508 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
509 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
510 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
511 | CLANG_WARN_STRICT_PROTOTYPES = YES;
512 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
513 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
514 | CLANG_WARN_UNREACHABLE_CODE = YES;
515 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
516 | CODE_SIGN_IDENTITY = "iPhone Developer";
517 | CODE_SIGN_STYLE = Manual;
518 | COPY_PHASE_STRIP = NO;
519 | CURRENT_PROJECT_VERSION = 1;
520 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
521 | DEFINES_MODULE = YES;
522 | DEVELOPMENT_TEAM = "";
523 | DYLIB_COMPATIBILITY_VERSION = 1;
524 | DYLIB_CURRENT_VERSION = 1;
525 | DYLIB_INSTALL_NAME_BASE = "@rpath";
526 | ENABLE_NS_ASSERTIONS = NO;
527 | ENABLE_STRICT_OBJC_MSGSEND = YES;
528 | GCC_C_LANGUAGE_STANDARD = gnu11;
529 | GCC_NO_COMMON_BLOCKS = YES;
530 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
531 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
532 | GCC_WARN_UNDECLARED_SELECTOR = YES;
533 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
534 | GCC_WARN_UNUSED_FUNCTION = YES;
535 | INFOPLIST_FILE = openssl_Info.plist;
536 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
537 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
538 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
539 | LIBRARY_SEARCH_PATHS = (
540 | "$(inherited)",
541 | "$(PROJECT_DIR)/lib",
542 | );
543 | MTL_ENABLE_DEBUG_INFO = NO;
544 | OTHER_LDFLAGS = "-all_load";
545 | PRODUCT_BUNDLE_IDENTIFIER = openssl;
546 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
547 | PROVISIONING_PROFILE_SPECIFIER = "";
548 | SKIP_INSTALL = YES;
549 | TARGETED_DEVICE_FAMILY = "1,2";
550 | VALIDATE_PRODUCT = YES;
551 | VERSIONING_SYSTEM = "apple-generic";
552 | VERSION_INFO_PREFIX = "";
553 | };
554 | name = Release;
555 | };
556 | 22BCB321202E32B00041F00E /* Debug */ = {
557 | isa = XCBuildConfiguration;
558 | buildSettings = {
559 | ALWAYS_SEARCH_USER_PATHS = NO;
560 | CLANG_ANALYZER_NONNULL = YES;
561 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
562 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
563 | CLANG_CXX_LIBRARY = "libc++";
564 | CLANG_ENABLE_MODULES = YES;
565 | CLANG_ENABLE_OBJC_ARC = YES;
566 | CLANG_ENABLE_OBJC_WEAK = YES;
567 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
568 | CLANG_WARN_BOOL_CONVERSION = YES;
569 | CLANG_WARN_COMMA = YES;
570 | CLANG_WARN_CONSTANT_CONVERSION = YES;
571 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
572 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
573 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
574 | CLANG_WARN_EMPTY_BODY = YES;
575 | CLANG_WARN_ENUM_CONVERSION = YES;
576 | CLANG_WARN_INFINITE_RECURSION = YES;
577 | CLANG_WARN_INT_CONVERSION = YES;
578 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
579 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
580 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
581 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
582 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
583 | CLANG_WARN_STRICT_PROTOTYPES = YES;
584 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
585 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
586 | CLANG_WARN_UNREACHABLE_CODE = YES;
587 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
588 | CODE_SIGN_IDENTITY = "iPhone Developer";
589 | CODE_SIGN_STYLE = Manual;
590 | COPY_PHASE_STRIP = NO;
591 | CURRENT_PROJECT_VERSION = 1;
592 | DEBUG_INFORMATION_FORMAT = dwarf;
593 | DEFINES_MODULE = YES;
594 | DEVELOPMENT_TEAM = "";
595 | DYLIB_COMPATIBILITY_VERSION = 1;
596 | DYLIB_CURRENT_VERSION = 1;
597 | DYLIB_INSTALL_NAME_BASE = "@rpath";
598 | ENABLE_STRICT_OBJC_MSGSEND = YES;
599 | FRAMEWORK_SEARCH_PATHS = (
600 | "$(inherited)",
601 | "$(PROJECT_DIR)",
602 | );
603 | GCC_C_LANGUAGE_STANDARD = gnu11;
604 | GCC_DYNAMIC_NO_PIC = NO;
605 | GCC_NO_COMMON_BLOCKS = YES;
606 | GCC_OPTIMIZATION_LEVEL = 0;
607 | GCC_PREPROCESSOR_DEFINITIONS = (
608 | "DEBUG=1",
609 | "$(inherited)",
610 | );
611 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
612 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
613 | GCC_WARN_UNDECLARED_SELECTOR = YES;
614 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
615 | GCC_WARN_UNUSED_FUNCTION = YES;
616 | INFOPLIST_FILE = libssh2_Info.plist;
617 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
618 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
619 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
620 | LIBRARY_SEARCH_PATHS = (
621 | "$(inherited)",
622 | "$(PROJECT_DIR)/lib",
623 | );
624 | MTL_ENABLE_DEBUG_INFO = YES;
625 | ONLY_ACTIVE_ARCH = NO;
626 | OTHER_LDFLAGS = "-all_load";
627 | PRODUCT_BUNDLE_IDENTIFIER = libssh2;
628 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
629 | PROVISIONING_PROFILE_SPECIFIER = "";
630 | SKIP_INSTALL = YES;
631 | TARGETED_DEVICE_FAMILY = "1,2";
632 | VERSIONING_SYSTEM = "apple-generic";
633 | VERSION_INFO_PREFIX = "";
634 | };
635 | name = Debug;
636 | };
637 | 22BCB322202E32B00041F00E /* Release */ = {
638 | isa = XCBuildConfiguration;
639 | buildSettings = {
640 | ALWAYS_SEARCH_USER_PATHS = NO;
641 | CLANG_ANALYZER_NONNULL = YES;
642 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
643 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
644 | CLANG_CXX_LIBRARY = "libc++";
645 | CLANG_ENABLE_MODULES = YES;
646 | CLANG_ENABLE_OBJC_ARC = YES;
647 | CLANG_ENABLE_OBJC_WEAK = YES;
648 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
649 | CLANG_WARN_BOOL_CONVERSION = YES;
650 | CLANG_WARN_COMMA = YES;
651 | CLANG_WARN_CONSTANT_CONVERSION = YES;
652 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
653 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
654 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
655 | CLANG_WARN_EMPTY_BODY = YES;
656 | CLANG_WARN_ENUM_CONVERSION = YES;
657 | CLANG_WARN_INFINITE_RECURSION = YES;
658 | CLANG_WARN_INT_CONVERSION = YES;
659 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
660 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
661 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
662 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
663 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
664 | CLANG_WARN_STRICT_PROTOTYPES = YES;
665 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
666 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
667 | CLANG_WARN_UNREACHABLE_CODE = YES;
668 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
669 | CODE_SIGN_IDENTITY = "iPhone Developer";
670 | CODE_SIGN_STYLE = Manual;
671 | COPY_PHASE_STRIP = NO;
672 | CURRENT_PROJECT_VERSION = 1;
673 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
674 | DEFINES_MODULE = YES;
675 | DEVELOPMENT_TEAM = "";
676 | DYLIB_COMPATIBILITY_VERSION = 1;
677 | DYLIB_CURRENT_VERSION = 1;
678 | DYLIB_INSTALL_NAME_BASE = "@rpath";
679 | ENABLE_NS_ASSERTIONS = NO;
680 | ENABLE_STRICT_OBJC_MSGSEND = YES;
681 | FRAMEWORK_SEARCH_PATHS = (
682 | "$(inherited)",
683 | "$(PROJECT_DIR)",
684 | );
685 | GCC_C_LANGUAGE_STANDARD = gnu11;
686 | GCC_NO_COMMON_BLOCKS = YES;
687 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
688 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
689 | GCC_WARN_UNDECLARED_SELECTOR = YES;
690 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
691 | GCC_WARN_UNUSED_FUNCTION = YES;
692 | INFOPLIST_FILE = libssh2_Info.plist;
693 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
694 | IPHONEOS_DEPLOYMENT_TARGET = 10.0;
695 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
696 | LIBRARY_SEARCH_PATHS = (
697 | "$(inherited)",
698 | "$(PROJECT_DIR)/lib",
699 | );
700 | MTL_ENABLE_DEBUG_INFO = NO;
701 | OTHER_LDFLAGS = "-all_load";
702 | PRODUCT_BUNDLE_IDENTIFIER = libssh2;
703 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
704 | PROVISIONING_PROFILE_SPECIFIER = "";
705 | SKIP_INSTALL = YES;
706 | TARGETED_DEVICE_FAMILY = "1,2";
707 | VALIDATE_PRODUCT = YES;
708 | VERSIONING_SYSTEM = "apple-generic";
709 | VERSION_INFO_PREFIX = "";
710 | };
711 | name = Release;
712 | };
713 | C01FCF4F08A954540054247B /* Debug */ = {
714 | isa = XCBuildConfiguration;
715 | buildSettings = {
716 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
717 | ENABLE_TESTABILITY = YES;
718 | GCC_C_LANGUAGE_STANDARD = c99;
719 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
720 | GCC_WARN_UNUSED_VARIABLE = YES;
721 | HEADER_SEARCH_PATHS = "include/**";
722 | ONLY_ACTIVE_ARCH = YES;
723 | SDKROOT = iphoneos;
724 | };
725 | name = Debug;
726 | };
727 | C01FCF5008A954540054247B /* Release */ = {
728 | isa = XCBuildConfiguration;
729 | buildSettings = {
730 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
731 | GCC_C_LANGUAGE_STANDARD = c99;
732 | GCC_WARN_ABOUT_RETURN_TYPE = YES;
733 | GCC_WARN_UNUSED_VARIABLE = YES;
734 | HEADER_SEARCH_PATHS = "include/**";
735 | OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
736 | SDKROOT = iphoneos;
737 | };
738 | name = Release;
739 | };
740 | /* End XCBuildConfiguration section */
741 |
742 | /* Begin XCConfigurationList section */
743 | 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "libssh2-for-iOS" */ = {
744 | isa = XCConfigurationList;
745 | buildConfigurations = (
746 | 1D6058940D05DD3E006BFB54 /* Debug */,
747 | 1D6058950D05DD3E006BFB54 /* Release */,
748 | );
749 | defaultConfigurationIsVisible = 0;
750 | defaultConfigurationName = Release;
751 | };
752 | 22BCB30F202E32330041F00E /* Build configuration list for PBXNativeTarget "openssl" */ = {
753 | isa = XCConfigurationList;
754 | buildConfigurations = (
755 | 22BCB30D202E32330041F00E /* Debug */,
756 | 22BCB30E202E32330041F00E /* Release */,
757 | );
758 | defaultConfigurationIsVisible = 0;
759 | defaultConfigurationName = Release;
760 | };
761 | 22BCB320202E32B00041F00E /* Build configuration list for PBXNativeTarget "libssh2" */ = {
762 | isa = XCConfigurationList;
763 | buildConfigurations = (
764 | 22BCB321202E32B00041F00E /* Debug */,
765 | 22BCB322202E32B00041F00E /* Release */,
766 | );
767 | defaultConfigurationIsVisible = 0;
768 | defaultConfigurationName = Release;
769 | };
770 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "libssh2-for-iOS" */ = {
771 | isa = XCConfigurationList;
772 | buildConfigurations = (
773 | C01FCF4F08A954540054247B /* Debug */,
774 | C01FCF5008A954540054247B /* Release */,
775 | );
776 | defaultConfigurationIsVisible = 0;
777 | defaultConfigurationName = Release;
778 | };
779 | /* End XCConfigurationList section */
780 | };
781 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
782 | }
783 |
--------------------------------------------------------------------------------