From 10bf903c76d60be274ad859d89453bfface73a08 Mon Sep 17 00:00:00 2001 From: Felix Schulze Date: Sun, 1 Apr 2012 19:35:59 +0200 Subject: [PATCH] Modernizes project to use ARC Universal app for iPhone / iPad --- .gitignore | 1 + Classes/OpenSSL_for_iOSAppDelegate.h | 30 - Classes/OpenSSL_for_iOSAppDelegate.m | 138 --- Icon.png | Bin 30103 -> 4973 bytes Icon@2x.png | Bin 0 -> 17374 bytes Icon~iPad@2x.png | Bin 0 -> 26088 bytes Icon~ipad.png | Bin 0 -> 7375 bytes MainWindow.xib | 910 ------------------ OpenSSL-for-iOS.xcodeproj/project.pbxproj | 335 ++++--- OpenSSL-for-iOS/AppDelegate.h | 20 + OpenSSL-for-iOS/AppDelegate.m | 33 + OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist | 55 ++ .../OpenSSL-for-iOS-Prefix.pch | 12 +- OpenSSL-for-iOS/ViewController.h | 23 + OpenSSL-for-iOS/ViewController.m | 82 ++ OpenSSL-for-iOS/en.lproj/InfoPlist.strings | 2 + .../en.lproj/ViewController_iPad.xib | 562 +++++++++++ .../en.lproj/ViewController_iPhone.xib | 561 +++++++++++ OpenSSL-for-iOS/main.m | 19 + OpenSSL_for_iOS-Info.plist | 32 - main.m | 17 - 21 files changed, 1571 insertions(+), 1261 deletions(-) delete mode 100644 Classes/OpenSSL_for_iOSAppDelegate.h delete mode 100644 Classes/OpenSSL_for_iOSAppDelegate.m create mode 100644 Icon@2x.png create mode 100644 Icon~iPad@2x.png create mode 100644 Icon~ipad.png delete mode 100644 MainWindow.xib mode change 100755 => 100644 OpenSSL-for-iOS.xcodeproj/project.pbxproj create mode 100644 OpenSSL-for-iOS/AppDelegate.h create mode 100644 OpenSSL-for-iOS/AppDelegate.m create mode 100644 OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist rename OpenSSL_for_iOS_Prefix.pch => OpenSSL-for-iOS/OpenSSL-for-iOS-Prefix.pch (59%) create mode 100644 OpenSSL-for-iOS/ViewController.h create mode 100644 OpenSSL-for-iOS/ViewController.m create mode 100644 OpenSSL-for-iOS/en.lproj/InfoPlist.strings create mode 100644 OpenSSL-for-iOS/en.lproj/ViewController_iPad.xib create mode 100644 OpenSSL-for-iOS/en.lproj/ViewController_iPhone.xib create mode 100644 OpenSSL-for-iOS/main.m delete mode 100644 OpenSSL_for_iOS-Info.plist delete mode 100644 main.m diff --git a/.gitignore b/.gitignore index d937e6e..5e4fb01 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ bin lib *.gz +OpenSSL-for-iOS.xcodeproj/xcuserdata diff --git a/Classes/OpenSSL_for_iOSAppDelegate.h b/Classes/OpenSSL_for_iOSAppDelegate.h deleted file mode 100644 index aafd7a0..0000000 --- a/Classes/OpenSSL_for_iOSAppDelegate.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// OpenSSL_for_iOSAppDelegate.h -// OpenSSL-for-iOS -// -// Created by Felix Schulze on 01.02.2010. -// Copyright Felix Schulze 2010. All rights reserved. -// - -#import - -@interface OpenSSL_for_iOSAppDelegate : NSObject { - UIWindow *window; - - IBOutlet UITextField *textField; - IBOutlet UILabel *md5TextField; - IBOutlet UILabel *sha256TextField; - -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) IBOutlet UITextField *textField; -@property (nonatomic, retain) IBOutlet UILabel *md5TextField; -@property (nonatomic, retain) IBOutlet UILabel *sha256TextField; - - -- (IBAction)showInfo; -- (IBAction)calculateMD5:(id)sender; -- (IBAction)calculateSHA256:(id)sender; -@end - diff --git a/Classes/OpenSSL_for_iOSAppDelegate.m b/Classes/OpenSSL_for_iOSAppDelegate.m deleted file mode 100644 index 8aa9957..0000000 --- a/Classes/OpenSSL_for_iOSAppDelegate.m +++ /dev/null @@ -1,138 +0,0 @@ -// -// OpenSSL_for_iOSAppDelegate.m -// OpenSSL-for-iOS -// -// Created by Felix Schulze on 04.12.2010. -// Copyright Felix Schulze 2010. All rights reserved. -// - -#import "OpenSSL_for_iOSAppDelegate.h" -#include -#include - -@implementation OpenSSL_for_iOSAppDelegate - -@synthesize window, textField, md5TextField, sha256TextField; - - -#pragma mark - -#pragma mark OpenSSL - -- (IBAction)calculateMD5:(id)sender -{ - /** Calculate MD5*/ - NSString *string = textField.text; - unsigned char *inStrg = (unsigned char*)[[string dataUsingEncoding:NSASCIIStringEncoding] bytes]; - unsigned long lngth = [string length]; - unsigned char result[MD5_DIGEST_LENGTH]; - NSMutableString *outStrg = [NSMutableString string]; - - MD5(inStrg, lngth, result); - - unsigned int i; - for (i = 0; i < MD5_DIGEST_LENGTH; i++) - { - [outStrg appendFormat:@"%02x", result[i]]; - } - md5TextField.text = outStrg; - - //Hide Keyboard after calculation - [textField resignFirstResponder]; -} - -- (IBAction)calculateSHA256:(id)sender { - - /* Calculate SHA256 */ - NSString *string = textField.text; - unsigned char *inStrg = (unsigned char*)[[string dataUsingEncoding:NSASCIIStringEncoding] bytes]; - unsigned long lngth = [string length]; - unsigned char result[SHA256_DIGEST_LENGTH]; - NSMutableString *outStrg = [NSMutableString string]; - - SHA256_CTX sha256; - SHA256_Init(&sha256); - SHA256_Update(&sha256, inStrg, lngth); - SHA256_Final(result, &sha256); - - unsigned int i; - for(i = 0; i < SHA256_DIGEST_LENGTH; i++) - { - [outStrg appendFormat:@"%02x", result[i]]; - } - sha256TextField.text = outStrg; - - //Hide Keyboard after calculation - [textField resignFirstResponder]; -} - -#pragma mark - -#pragma mark Application lifecycle - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - [window makeKeyAndVisible]; - return YES; -} - -- (IBAction)showInfo { - - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"OpenSSL-for-iOS" message:@"OpenSSL-Version: 1.0.0g\nLicense: See include/LICENSE\n\nCopyright 2010-2012 by Felix Schulze\n http://www.x2on.de" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil]; - - [alert show]; - [alert release]; -} - -- (void)applicationWillResignActive:(UIApplication *)application { - /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - */ -} - - -- (void)applicationDidEnterBackground:(UIApplication *)application { - /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. - */ -} - - -- (void)applicationWillEnterForeground:(UIApplication *)application { - /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. - */ -} - - -- (void)applicationDidBecomeActive:(UIApplication *)application { - /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - */ -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - /* - Called when the application is about to terminate. - See also applicationDidEnterBackground:. - */ -} - - -#pragma mark - -#pragma mark Memory management - -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. - */ -} - - -- (void)dealloc { - [window release]; - [super dealloc]; -} - - -@end \ No newline at end of file diff --git a/Icon.png b/Icon.png index b31bfdae5ed433010463ac680455749ec219d60d..1919ca6a30b0374824836a49852974c7597471bc 100644 GIT binary patch delta 4933 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 diff --git a/Icon@2x.png b/Icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8d33d2db866b2dd219661180e622d5b6b3ebe51b GIT binary patch literal 17374 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 literal 0 HcmV?d00001 diff --git a/Icon~ipad.png b/Icon~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..6248db6dbe4631308ccb516112e7b3142a23675c GIT binary patch literal 7375 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 BY%2f& literal 0 HcmV?d00001 diff --git a/MainWindow.xib b/MainWindow.xib deleted file mode 100644 index d727009..0000000 --- a/MainWindow.xib +++ /dev/null @@ -1,910 +0,0 @@ - - - - 1056 - 10H574 - 823 - 1038.35 - 461.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 132 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - - - 1316 - - YES - - - 1314 - - YES - - - 1316 - {{297, 12}, {18, 19}} - - NO - IBCocoaTouchFramework - 0 - 0 - - Helvetica-Bold - 15 - 16 - - 3 - YES - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - - {{0, 20}, {320, 44}} - - IBCocoaTouchFramework - 1 - - YES - - - OpenSSL-for-iOS - - IBCocoaTouchFramework - - - - IBCocoaTouchFramework - - - - - - 1316 - {{19, 142}, {286, 35}} - - NO - IBCocoaTouchFramework - 0 - 0 - - 1 - Calculate MD5 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - - 1316 - {{19, 230}, {87, 21}} - - NO - YES - 7 - NO - IBCocoaTouchFramework - MD5-Hash: - - 1 - MCAwIDAAA - - - 1 - 10 - - - - 1316 - {{19, 298}, {115, 21}} - - NO - YES - 7 - NO - IBCocoaTouchFramework - SHA256-Hash: - - - 1 - 10 - - - - 1316 - {{19, 103}, {286, 31}} - - NO - YES - IBCocoaTouchFramework - 0 - Enter an Text here - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - - - 1316 - {{19, 74}, {42, 21}} - - NO - YES - 7 - NO - IBCocoaTouchFramework - Text: - - - 1 - 10 - - - - 1316 - {{19, 185}, {286, 37}} - - NO - IBCocoaTouchFramework - 0 - 0 - - 1 - Calculate SHA256 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - 1316 - {{20, 259}, {285, 31}} - - NO - YES - 7 - NO - IBCocoaTouchFramework - - - - 1 - 10 - - - - 1316 - {{19, 327}, {286, 62}} - - NO - YES - 7 - NO - IBCocoaTouchFramework - - - - 1 - 10 - 3 - - - - {320, 480} - - - 1 - MSAxIDEAA - - NO - NO - - IBCocoaTouchFramework - YES - - - - - YES - - - delegate - - - - 4 - - - - window - - - - 5 - - - - showInfo - - - 1 - - 20 - - - - textField - - - - 31 - - - - calculateMD5: - - - 1 - - 32 - - - - calculateSHA256: - - - 1 - - 34 - - - - md5TextField - - - - 44 - - - - sha256TextField - - - - 46 - - - - - YES - - 0 - - - - - - 2 - - - YES - - - - - - - - - - - - - - -1 - - - File's Owner - - - 3 - - - - - -2 - - - - - 10 - - - YES - - - - - - 11 - - - YES - - - - - - 19 - - - YES - - - - - - 18 - - - - - 22 - - - - - 24 - - - - - 29 - - - - - 30 - - - - - 33 - - - - - 35 - - - - - 43 - - - - - 45 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 10.IBPluginDependency - 11.IBPluginDependency - 18.IBPluginDependency - 18.IBViewBoundsToFrameTransform - 2.IBAttributePlaceholdersKey - 2.IBEditorWindowLastContentRect - 2.IBPluginDependency - 22.IBPluginDependency - 22.IBViewBoundsToFrameTransform - 24.IBPluginDependency - 24.IBViewBoundsToFrameTransform - 29.IBPluginDependency - 29.IBViewBoundsToFrameTransform - 3.CustomClassName - 3.IBPluginDependency - 30.IBPluginDependency - 30.IBViewBoundsToFrameTransform - 33.IBPluginDependency - 33.IBViewBoundsToFrameTransform - 35.IBPluginDependency - 35.IBViewBoundsToFrameTransform - 43.IBPluginDependency - 43.IBViewBoundsToFrameTransform - 45.IBPluginDependency - - - YES - UIApplication - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABCxAAAw4EAAA - - - YES - - - YES - - - {{522, 105}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBmAAAwy8AAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBiAAAw4aAAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBmAAAwysAAA - - OpenSSL_for_iOSAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBmAAAwrYAAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBMAAAw1wAAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABBiAAAw6iAAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - P4AAAL+AAABCuAAAw4sAAA - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 46 - - - - YES - - OpenSSL_for_iOSAppDelegate - NSObject - - YES - - YES - calculateMD5: - calculateSHA256: - showInfo - - - YES - id - id - id - - - - YES - - YES - calculateMD5: - calculateSHA256: - showInfo - - - YES - - calculateMD5: - id - - - calculateSHA256: - id - - - showInfo - id - - - - - YES - - YES - md5TextField - sha256TextField - textField - window - - - YES - UILabel - UILabel - UITextField - UIWindow - - - - YES - - YES - md5TextField - sha256TextField - textField - window - - - YES - - md5TextField - UILabel - - - sha256TextField - UILabel - - - textField - UITextField - - - window - UIWindow - - - - - IBProjectSource - Classes/OpenSSL_for_iOSAppDelegate.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIBarButtonItem - UIBarItem - - IBFrameworkSource - UIKit.framework/Headers/UIBarButtonItem.h - - - - UIBarItem - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIBarItem.h - - - - UIButton - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UIButton.h - - - - UIControl - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIControl.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UINavigationBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UINavigationBar.h - - - - UINavigationItem - NSObject - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITextField - UIControl - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIPrintFormatter.h - - - - UIView - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - OpenSSL-for-iPhone.xcodeproj - 3 - 132 - - diff --git a/OpenSSL-for-iOS.xcodeproj/project.pbxproj b/OpenSSL-for-iOS.xcodeproj/project.pbxproj old mode 100755 new mode 100644 index 3869d8a..98e3ff6 --- a/OpenSSL-for-iOS.xcodeproj/project.pbxproj +++ b/OpenSSL-for-iOS.xcodeproj/project.pbxproj @@ -7,119 +7,138 @@ objects = { /* Begin PBXBuildFile section */ - 1D3623260D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; - 2A28EE4612AA83FE00C0D35A /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 2A28EE4512AA83FE00C0D35A /* Icon.png */; }; - 2AA51C5512AA80B400AEA776 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AA51C5312AA80B400AEA776 /* libssl.a */; }; - 2AA51C5612AA80B400AEA776 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2AA51C5412AA80B400AEA776 /* libcrypto.a */; }; + 533ED3001528C4840005C6FA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED2FF1528C4840005C6FA /* UIKit.framework */; }; + 533ED3021528C4840005C6FA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED3011528C4840005C6FA /* Foundation.framework */; }; + 533ED3041528C4840005C6FA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED3031528C4840005C6FA /* CoreGraphics.framework */; }; + 533ED30A1528C4840005C6FA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3081528C4840005C6FA /* InfoPlist.strings */; }; + 533ED30C1528C4840005C6FA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED30B1528C4840005C6FA /* main.m */; }; + 533ED3101528C4840005C6FA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED30F1528C4840005C6FA /* AppDelegate.m */; }; + 533ED3131528C4840005C6FA /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 533ED3121528C4840005C6FA /* ViewController.m */; }; + 533ED3161528C4840005C6FA /* ViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3141528C4840005C6FA /* ViewController_iPhone.xib */; }; + 533ED3191528C4840005C6FA /* ViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3171528C4840005C6FA /* ViewController_iPad.xib */; }; + 533ED3201528C4950005C6FA /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 533ED31F1528C4950005C6FA /* Icon.png */; }; + 533ED3221528C4960005C6FA /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3211528C4960005C6FA /* Icon@2x.png */; }; + 533ED3261528C4FA0005C6FA /* Icon~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3251528C4FA0005C6FA /* Icon~ipad.png */; }; + 533ED3281528C5140005C6FA /* Icon~iPad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 533ED3271528C5140005C6FA /* Icon~iPad@2x.png */; }; + 533ED32C1528C53B0005C6FA /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED32A1528C53B0005C6FA /* libcrypto.a */; }; + 533ED32D1528C53B0005C6FA /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 533ED32B1528C53B0005C6FA /* libssl.a */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623240D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenSSL_for_iOSAppDelegate.h; sourceTree = ""; }; - 1D3623250D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenSSL_for_iOSAppDelegate.m; sourceTree = ""; }; - 1D6058910D05DD3D006BFB54 /* OpenSSL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenSSL.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 2A28EE4512AA83FE00C0D35A /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; - 2AA51C5312AA80B400AEA776 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = lib/libssl.a; sourceTree = ""; }; - 2AA51C5412AA80B400AEA776 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = lib/libcrypto.a; sourceTree = ""; }; - 32CA4F630368D1EE00C91783 /* OpenSSL_for_iOS_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenSSL_for_iOS_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* OpenSSL_for_iOS-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "OpenSSL_for_iOS-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + 533ED2FB1528C4840005C6FA /* OpenSSL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenSSL.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 533ED2FF1528C4840005C6FA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 533ED3011528C4840005C6FA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 533ED3031528C4840005C6FA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 533ED3071528C4840005C6FA /* OpenSSL-for-iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OpenSSL-for-iOS-Info.plist"; sourceTree = ""; }; + 533ED3091528C4840005C6FA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 533ED30B1528C4840005C6FA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 533ED30D1528C4840005C6FA /* OpenSSL-for-iOS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OpenSSL-for-iOS-Prefix.pch"; sourceTree = ""; }; + 533ED30E1528C4840005C6FA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 533ED30F1528C4840005C6FA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 533ED3111528C4840005C6FA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 533ED3121528C4840005C6FA /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 533ED3151528C4840005C6FA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPhone.xib; sourceTree = ""; }; + 533ED3181528C4840005C6FA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPad.xib; sourceTree = ""; }; + 533ED31F1528C4950005C6FA /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = ../Icon.png; sourceTree = ""; }; + 533ED3211528C4960005C6FA /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "../Icon@2x.png"; sourceTree = ""; }; + 533ED3251528C4FA0005C6FA /* Icon~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon~ipad.png"; path = "../Icon~ipad.png"; sourceTree = ""; }; + 533ED3271528C5140005C6FA /* Icon~iPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon~iPad@2x.png"; path = "../Icon~iPad@2x.png"; sourceTree = ""; }; + 533ED32A1528C53B0005C6FA /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = lib/libcrypto.a; sourceTree = ""; }; + 533ED32B1528C53B0005C6FA /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = lib/libssl.a; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { + 533ED2F81528C4840005C6FA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, - 2AA51C5512AA80B400AEA776 /* libssl.a in Frameworks */, - 2AA51C5612AA80B400AEA776 /* libcrypto.a in Frameworks */, + 533ED3001528C4840005C6FA /* UIKit.framework in Frameworks */, + 533ED3021528C4840005C6FA /* Foundation.framework in Frameworks */, + 533ED3041528C4840005C6FA /* CoreGraphics.framework in Frameworks */, + 533ED32C1528C53B0005C6FA /* libcrypto.a in Frameworks */, + 533ED32D1528C53B0005C6FA /* libssl.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { + 533ED2F01528C4840005C6FA = { isa = PBXGroup; children = ( - 1D3623240D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.h */, - 1D3623250D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.m */, + 533ED3051528C4840005C6FA /* OpenSSL-for-iOS */, + 533ED2FE1528C4840005C6FA /* Frameworks */, + 533ED2FC1528C4840005C6FA /* Products */, ); - path = Classes; sourceTree = ""; }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { + 533ED2FC1528C4840005C6FA /* Products */ = { isa = PBXGroup; children = ( - 1D6058910D05DD3D006BFB54 /* OpenSSL.app */, + 533ED2FB1528C4840005C6FA /* OpenSSL.app */, ); name = Products; sourceTree = ""; }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { + 533ED2FE1528C4840005C6FA /* Frameworks */ = { isa = PBXGroup; children = ( - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 32CA4F630368D1EE00C91783 /* OpenSSL_for_iOS_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 2A28EE4512AA83FE00C0D35A /* Icon.png */, - 28AD733E0D9D9553002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* OpenSSL_for_iOS-Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 2AA51C5312AA80B400AEA776 /* libssl.a */, - 2AA51C5412AA80B400AEA776 /* libcrypto.a */, - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 288765FC0DF74451002DB57D /* CoreGraphics.framework */, + 533ED32A1528C53B0005C6FA /* libcrypto.a */, + 533ED32B1528C53B0005C6FA /* libssl.a */, + 533ED2FF1528C4840005C6FA /* UIKit.framework */, + 533ED3011528C4840005C6FA /* Foundation.framework */, + 533ED3031528C4840005C6FA /* CoreGraphics.framework */, ); name = Frameworks; sourceTree = ""; }; + 533ED3051528C4840005C6FA /* OpenSSL-for-iOS */ = { + isa = PBXGroup; + children = ( + 533ED3291528C51A0005C6FA /* Ressources */, + 533ED30E1528C4840005C6FA /* AppDelegate.h */, + 533ED30F1528C4840005C6FA /* AppDelegate.m */, + 533ED3111528C4840005C6FA /* ViewController.h */, + 533ED3121528C4840005C6FA /* ViewController.m */, + 533ED3141528C4840005C6FA /* ViewController_iPhone.xib */, + 533ED3171528C4840005C6FA /* ViewController_iPad.xib */, + 533ED3061528C4840005C6FA /* Supporting Files */, + ); + path = "OpenSSL-for-iOS"; + sourceTree = ""; + }; + 533ED3061528C4840005C6FA /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 533ED3071528C4840005C6FA /* OpenSSL-for-iOS-Info.plist */, + 533ED3081528C4840005C6FA /* InfoPlist.strings */, + 533ED30B1528C4840005C6FA /* main.m */, + 533ED30D1528C4840005C6FA /* OpenSSL-for-iOS-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 533ED3291528C51A0005C6FA /* Ressources */ = { + isa = PBXGroup; + children = ( + 533ED3271528C5140005C6FA /* Icon~iPad@2x.png */, + 533ED3251528C4FA0005C6FA /* Icon~ipad.png */, + 533ED3211528C4960005C6FA /* Icon@2x.png */, + 533ED31F1528C4950005C6FA /* Icon.png */, + ); + name = Ressources; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* OpenSSL-for-iOS */ = { + 533ED2FA1528C4840005C6FA /* OpenSSL-for-iOS */ = { isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "OpenSSL-for-iOS" */; + buildConfigurationList = 533ED31C1528C4840005C6FA /* Build configuration list for PBXNativeTarget "OpenSSL-for-iOS" */; buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, + 533ED2F71528C4840005C6FA /* Sources */, + 533ED2F81528C4840005C6FA /* Frameworks */, + 533ED2F91528C4840005C6FA /* Resources */, ); buildRules = ( ); @@ -127,141 +146,195 @@ ); name = "OpenSSL-for-iOS"; productName = "OpenSSL-for-iOS"; - productReference = 1D6058910D05DD3D006BFB54 /* OpenSSL.app */; + productReference = 533ED2FB1528C4840005C6FA /* OpenSSL.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { + 533ED2F21528C4840005C6FA /* Project object */ = { isa = PBXProject; attributes = { LastUpgradeCheck = 0430; + ORGANIZATIONNAME = Immobilienscout24; }; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "OpenSSL-for-iOS" */; + buildConfigurationList = 533ED2F51528C4840005C6FA /* Build configuration list for PBXProject "OpenSSL-for-iOS" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; - hasScannedForEncodings = 1; + hasScannedForEncodings = 0; knownRegions = ( - English, - Japanese, - French, - German, + en, ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; + mainGroup = 533ED2F01528C4840005C6FA; + productRefGroup = 533ED2FC1528C4840005C6FA /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 1D6058900D05DD3D006BFB54 /* OpenSSL-for-iOS */, + 533ED2FA1528C4840005C6FA /* OpenSSL-for-iOS */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { + 533ED2F91528C4840005C6FA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, - 2A28EE4612AA83FE00C0D35A /* Icon.png in Resources */, + 533ED30A1528C4840005C6FA /* InfoPlist.strings in Resources */, + 533ED3161528C4840005C6FA /* ViewController_iPhone.xib in Resources */, + 533ED3191528C4840005C6FA /* ViewController_iPad.xib in Resources */, + 533ED3201528C4950005C6FA /* Icon.png in Resources */, + 533ED3221528C4960005C6FA /* Icon@2x.png in Resources */, + 533ED3261528C4FA0005C6FA /* Icon~ipad.png in Resources */, + 533ED3281528C5140005C6FA /* Icon~iPad@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { + 533ED2F71528C4840005C6FA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, - 1D3623260D0F684500981E51 /* OpenSSL_for_iOSAppDelegate.m in Sources */, + 533ED30C1528C4840005C6FA /* main.m in Sources */, + 533ED3101528C4840005C6FA /* AppDelegate.m in Sources */, + 533ED3131528C4840005C6FA /* ViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + 533ED3081528C4840005C6FA /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 533ED3091528C4840005C6FA /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 533ED3141528C4840005C6FA /* ViewController_iPhone.xib */ = { + isa = PBXVariantGroup; + children = ( + 533ED3151528C4840005C6FA /* en */, + ); + name = ViewController_iPhone.xib; + sourceTree = ""; + }; + 533ED3171528C4840005C6FA /* ViewController_iPad.xib */ = { + isa = PBXVariantGroup; + children = ( + 533ED3181528C4840005C6FA /* en */, + ); + name = ViewController_iPad.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { + 533ED31A1528C4840005C6FA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = OpenSSL_for_iOS_Prefix.pch; - INFOPLIST_FILE = "OpenSSL_for_iOS-Info.plist"; - LIBRARY_SEARCH_PATHS = lib; - PRODUCT_NAME = OpenSSL; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "include/**"; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 1D6058950D05DD3E006BFB54 /* Release */ = { + 533ED31B1528C4840005C6FA /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_ENABLE_OBJC_ARC = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = OpenSSL_for_iOS_Prefix.pch; - INFOPLIST_FILE = "OpenSSL_for_iOS-Info.plist"; - LIBRARY_SEARCH_PATHS = lib; - PRODUCT_NAME = OpenSSL; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = "include/**"; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - C01FCF4F08A954540054247B /* Debug */ = { + 533ED31D1528C4840005C6FA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "include/**"; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "OpenSSL-for-iOS/OpenSSL-for-iOS-Prefix.pch"; + INFOPLIST_FILE = "OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/lib\"", + ); + PRODUCT_NAME = OpenSSL; + WRAPPER_EXTENSION = app; }; name = Debug; }; - C01FCF5008A954540054247B /* Release */ = { + 533ED31E1528C4840005C6FA /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - HEADER_SEARCH_PATHS = "include/**"; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - SDKROOT = iphoneos; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "OpenSSL-for-iOS/OpenSSL-for-iOS-Prefix.pch"; + INFOPLIST_FILE = "OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/lib\"", + ); + PRODUCT_NAME = OpenSSL; + WRAPPER_EXTENSION = app; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "OpenSSL-for-iOS" */ = { + 533ED2F51528C4840005C6FA /* Build configuration list for PBXProject "OpenSSL-for-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, + 533ED31A1528C4840005C6FA /* Debug */, + 533ED31B1528C4840005C6FA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "OpenSSL-for-iOS" */ = { + 533ED31C1528C4840005C6FA /* Build configuration list for PBXNativeTarget "OpenSSL-for-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, + 533ED31D1528C4840005C6FA /* Debug */, + 533ED31E1528C4840005C6FA /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; + rootObject = 533ED2F21528C4840005C6FA /* Project object */; } diff --git a/OpenSSL-for-iOS/AppDelegate.h b/OpenSSL-for-iOS/AppDelegate.h new file mode 100644 index 0000000..f773ae6 --- /dev/null +++ b/OpenSSL-for-iOS/AppDelegate.h @@ -0,0 +1,20 @@ +// +// AppDelegate.h +// OpenSSL-for-iOS +// +// Created by Felix Schulze on 04.12.2010. +// Updated by Schulze Felix on 01.04.12. +// Copyright (c) 2012 Felix Schulze . All rights reserved. +// Web: http://www.felixschulze.de +// + +#import + +@class ViewController; + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; +@property (strong, nonatomic) ViewController *viewController; + +@end diff --git a/OpenSSL-for-iOS/AppDelegate.m b/OpenSSL-for-iOS/AppDelegate.m new file mode 100644 index 0000000..2263199 --- /dev/null +++ b/OpenSSL-for-iOS/AppDelegate.m @@ -0,0 +1,33 @@ +// +// AppDelegate.m +// OpenSSL-for-iOS +// +// Created by Felix Schulze on 04.12.2010. +// Updated by Schulze Felix on 01.04.12. +// Copyright (c) 2012 Felix Schulze . All rights reserved. +// Web: http://www.felixschulze.de +// + +#import "AppDelegate.h" +#import "ViewController.h" + +@implementation AppDelegate + +@synthesize window = _window; +@synthesize viewController = _viewController; + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { + self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; + } else { + self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil]; + } + self.window.rootViewController = self.viewController; + [self.window makeKeyAndVisible]; + return YES; +} + + +@end diff --git a/OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist b/OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist new file mode 100644 index 0000000..7332ab4 --- /dev/null +++ b/OpenSSL-for-iOS/OpenSSL-for-iOS-Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + Icon.png + Icon@2x.png + Icon~ipad.png + Icon~iPad@2x.png + + + + CFBundleIdentifier + de.felixschulze.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 2.0 + CFBundleSignature + ???? + CFBundleVersion + 2.0 + LSRequiresIPhoneOS + + UIApplicationExitsOnSuspend + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + + + diff --git a/OpenSSL_for_iOS_Prefix.pch b/OpenSSL-for-iOS/OpenSSL-for-iOS-Prefix.pch similarity index 59% rename from OpenSSL_for_iOS_Prefix.pch rename to OpenSSL-for-iOS/OpenSSL-for-iOS-Prefix.pch index b996b48..b88b813 100644 --- a/OpenSSL_for_iOS_Prefix.pch +++ b/OpenSSL-for-iOS/OpenSSL-for-iOS-Prefix.pch @@ -2,7 +2,13 @@ // Prefix header for all source files of the 'OpenSSL-for-iOS' target in the 'OpenSSL-for-iOS' project // -#ifdef __OBJC__ - #import - #import +#import + +#ifndef __IPHONE_4_0 +#warning "This project uses features only available in iOS SDK 4.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import #endif diff --git a/OpenSSL-for-iOS/ViewController.h b/OpenSSL-for-iOS/ViewController.h new file mode 100644 index 0000000..33099d6 --- /dev/null +++ b/OpenSSL-for-iOS/ViewController.h @@ -0,0 +1,23 @@ +// +// ViewController.h +// OpenSSL-for-iOS +// +// Created by Felix Schulze on 04.12.2010. +// Updated by Schulze Felix on 01.04.12. +// Copyright (c) 2012 Felix Schulze . All rights reserved. +// Web: http://www.felixschulze.de +// + +#import + +@interface ViewController : UIViewController + +@property (nonatomic, strong) IBOutlet UITextField *textField; +@property (nonatomic, strong) IBOutlet UILabel *md5TextField; +@property (nonatomic, strong) IBOutlet UILabel *sha256TextField; + +- (IBAction)showInfo; +- (IBAction)calculateMD5:(id)sender; +- (IBAction)calculateSHA256:(id)sender; + +@end diff --git a/OpenSSL-for-iOS/ViewController.m b/OpenSSL-for-iOS/ViewController.m new file mode 100644 index 0000000..6a96888 --- /dev/null +++ b/OpenSSL-for-iOS/ViewController.m @@ -0,0 +1,82 @@ +// +// ViewController.m +// OpenSSL-for-iOS +// +// Created by Felix Schulze on 04.12.2010. +// Updated by Schulze Felix on 01.04.12. +// Copyright (c) 2012 Felix Schulze . All rights reserved. +// Web: http://www.felixschulze.de +// + +#import "ViewController.h" +#include +#include + +@implementation ViewController + +@synthesize textField; +@synthesize md5TextField; +@synthesize sha256TextField; + +#pragma mark - +#pragma mark OpenSSL + +- (IBAction)calculateMD5:(id)sender +{ + /** Calculate MD5*/ + NSString *string = textField.text; + unsigned char *inStrg = (unsigned char*)[[string dataUsingEncoding:NSASCIIStringEncoding] bytes]; + unsigned long lngth = [string length]; + unsigned char result[MD5_DIGEST_LENGTH]; + NSMutableString *outStrg = [NSMutableString string]; + + MD5(inStrg, lngth, result); + + unsigned int i; + for (i = 0; i < MD5_DIGEST_LENGTH; i++) + { + [outStrg appendFormat:@"%02x", result[i]]; + } + md5TextField.text = outStrg; + + //Hide Keyboard after calculation + [textField resignFirstResponder]; +} + +- (IBAction)calculateSHA256:(id)sender +{ + /* Calculate SHA256 */ + NSString *string = textField.text; + unsigned char *inStrg = (unsigned char*)[[string dataUsingEncoding:NSASCIIStringEncoding] bytes]; + unsigned long lngth = [string length]; + unsigned char result[SHA256_DIGEST_LENGTH]; + NSMutableString *outStrg = [NSMutableString string]; + + SHA256_CTX sha256; + SHA256_Init(&sha256); + SHA256_Update(&sha256, inStrg, lngth); + SHA256_Final(result, &sha256); + + unsigned int i; + for(i = 0; i < SHA256_DIGEST_LENGTH; i++) + { + [outStrg appendFormat:@"%02x", result[i]]; + } + sha256TextField.text = outStrg; + + //Hide Keyboard after calculation + [textField resignFirstResponder]; +} + +- (IBAction)showInfo +{ + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"OpenSSL-for-iOS" message:@"OpenSSL-Version: 1.0.1\nLicense: See include/LICENSE\n\nCopyright 2010-2012 by Felix Schulze\n http://www.x2on.de" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil]; + [alert show]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +@end diff --git a/OpenSSL-for-iOS/en.lproj/InfoPlist.strings b/OpenSSL-for-iOS/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/OpenSSL-for-iOS/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/OpenSSL-for-iOS/en.lproj/ViewController_iPad.xib b/OpenSSL-for-iOS/en.lproj/ViewController_iPad.xib new file mode 100644 index 0000000..6022a9d --- /dev/null +++ b/OpenSSL-for-iOS/en.lproj/ViewController_iPad.xib @@ -0,0 +1,562 @@ + + + + 1296 + 11D50b + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIView + IBProxyObject + IBUILabel + IBUIBarButtonItem + IBUITextField + IBUINavigationBar + IBUINavigationItem + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + + + + 292 + {{20, 239}, {728, 31}} + + + + NO + YES + 7 + NO + IBIPadFramework + + + 1 + MCAwIDAAA + + + 3 + MQA + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + + + + 292 + {{19, 54}, {42, 21}} + + + + NO + YES + 7 + NO + IBIPadFramework + Text: + + + 1 + 10 + + + + + + 292 + {{19, 278}, {729, 21}} + + + + NO + YES + 7 + NO + IBIPadFramework + SHA256-Hash: + + + 1 + 10 + + + + + + 290 + + + + 292 + {{743, 12}, {18, 19}} + + + + NO + IBIPadFramework + 0 + 0 + 3 + YES + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {768, 44} + + + + IBIPadFramework + 1 + + + + OpenSSL-for-iOS + + IBIPadFramework + 1 + + + + IBIPadFramework + + + + + + 292 + {{19, 83}, {729, 31}} + + + + NO + YES + IBIPadFramework + 0 + Enter an Text here + 3 + + 3 + MAA + + 2 + + + YES + 17 + + IBCocoaTouchFramework + + + 1 + 12 + + + Helvetica + 12 + 16 + + + + + 292 + {{19, 210}, {729, 21}} + + + + NO + YES + 7 + NO + IBIPadFramework + MD5-Hash: + + + 1 + 10 + + + + + + 292 + {{19, 122}, {729, 35}} + + + + NO + IBIPadFramework + 0 + 0 + 1 + Calculate MD5 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + + + + 292 + {{19, 307}, {729, 62}} + + + NO + YES + 7 + NO + IBIPadFramework + + + + 1 + 10 + 3 + + + + + + 292 + {{19, 165}, {729, 37}} + + + + NO + IBIPadFramework + 0 + 0 + 1 + Calculate SHA256 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + {{0, 20}, {768, 1004}} + + + + 3 + MQA + + + + 2 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + md5TextField + + + + 16 + + + + sha256TextField + + + + 17 + + + + textField + + + + 18 + + + + calculateMD5: + + + 1 + + 19 + + + + calculateSHA256: + + + 1 + + 20 + + + + showInfo + + + 1 + + 21 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + + + + 4 + + + + + 5 + + + + + 6 + + + + + 7 + + + + + + + + 8 + + + + + 9 + + + + + 10 + + + + + 11 + + + + + 12 + + + + + 13 + + + + + + + + 14 + + + + + + + + 15 + + + + + + + ViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 21 + + + + + ViewController + UIViewController + + id + id + id + + + + calculateMD5: + id + + + calculateSHA256: + id + + + showInfo + id + + + + UILabel + UILabel + UITextField + + + + md5TextField + UILabel + + + sha256TextField + UILabel + + + textField + UITextField + + + + IBProjectSource + ./Classes/ViewController.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/OpenSSL-for-iOS/en.lproj/ViewController_iPhone.xib b/OpenSSL-for-iOS/en.lproj/ViewController_iPhone.xib new file mode 100644 index 0000000..d42f2e3 --- /dev/null +++ b/OpenSSL-for-iOS/en.lproj/ViewController_iPhone.xib @@ -0,0 +1,561 @@ + + + + 1296 + 11D50b + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIView + IBProxyObject + IBUILabel + IBUIBarButtonItem + IBUITextField + IBUINavigationBar + IBUINavigationItem + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{19, 278}, {115, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + SHA256-Hash: + + 1 + MCAwIDAAA + + + 3 + MQA + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + + + + 290 + + + + 292 + {{297, 12}, {18, 19}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + 3 + YES + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {320, 44} + + + + IBCocoaTouchFramework + 1 + + + + OpenSSL-for-iOS + + IBCocoaTouchFramework + 1 + + + + IBCocoaTouchFramework + + + + + + 292 + {{19, 122}, {286, 35}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Calculate MD5 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + + + + 292 + {{19, 210}, {87, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + MD5-Hash: + + + 1 + 10 + + + + + + 292 + {{20, 239}, {285, 31}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + + + + 1 + 10 + + + + + + 292 + {{19, 83}, {286, 31}} + + + + NO + YES + IBCocoaTouchFramework + 0 + Enter an Text here + 3 + + 3 + MAA + + 2 + + + YES + 17 + + IBCocoaTouchFramework + + + 1 + 12 + + + Helvetica + 12 + 16 + + + + + 292 + {{19, 307}, {286, 62}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + + + + 1 + 10 + 3 + + + + + + 292 + {{19, 54}, {42, 21}} + + + + NO + YES + 7 + NO + IBCocoaTouchFramework + Text: + + + 1 + 10 + + + + + + 292 + {{19, 165}, {286, 37}} + + + + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Calculate SHA256 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + {{0, 20}, {320, 460}} + + + + + 1 + MSAxIDEAA + + NO + + IBCocoaTouchFramework + + + + + + + view + + + + 7 + + + + md5TextField + + + + 44 + + + + sha256TextField + + + + 45 + + + + textField + + + + 46 + + + + calculateMD5: + + + 1 + + 47 + + + + calculateSHA256: + + + 1 + + 48 + + + + showInfo + + + 1 + + 49 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + + + + + + + + + + + + 32 + + + + + 33 + + + + + + + + 34 + + + + + 35 + + + + + 36 + + + + + 37 + + + + + 38 + + + + + 39 + + + + + 40 + + + + + 41 + + + + + + + + 42 + + + + + + + + 43 + + + + + + + ViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 49 + + + + + ViewController + UIViewController + + id + id + id + + + + calculateMD5: + id + + + calculateSHA256: + id + + + showInfo + id + + + + UILabel + UILabel + UITextField + + + + md5TextField + UILabel + + + sha256TextField + UILabel + + + textField + UITextField + + + + IBProjectSource + ./Classes/ViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/OpenSSL-for-iOS/main.m b/OpenSSL-for-iOS/main.m new file mode 100644 index 0000000..f7ab801 --- /dev/null +++ b/OpenSSL-for-iOS/main.m @@ -0,0 +1,19 @@ +// +// main.m +// OpenSSL-for-iOS +// +// Created by Felix Schulze on 04.12.2010. +// Updated by Schulze Felix on 01.04.12. +// Copyright (c) 2012 Felix Schulze . All rights reserved. +// Web: http://www.felixschulze.de +// + +#import +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/OpenSSL_for_iOS-Info.plist b/OpenSSL_for_iOS-Info.plist deleted file mode 100644 index 2cce138..0000000 --- a/OpenSSL_for_iOS-Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - UIApplicationExitsOnSuspend - - CFBundleDevelopmentRegion - English - CFBundleDisplayName - ${PRODUCT_NAME} - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - Icon.png - CFBundleIdentifier - de.x2on.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - NSMainNibFile - MainWindow - - diff --git a/main.m b/main.m deleted file mode 100644 index 8128e75..0000000 --- a/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// OpenSSL-for-iPhone -// -// Created by Felix Schulze on 01.02.2010. -// Copyright Felix Schulze 2010. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) { - - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, nil); - [pool release]; - return retVal; -}