Index: .gitignore ================================================================== --- .gitignore +++ .gitignore @@ -1,7 +1,7 @@ *.o *~ -scrypt-pwgen +cryptopassphrase +iOS/CryptoPassphrase.xcodeproj/project.xcworkspace +iOS/CryptoPassphrase.xcodeproj/xcuserdata iOS/DerivedData iOS/ObjFW -iOS/scrypt-pwgen.xcodeproj/project.xcworkspace -iOS/scrypt-pwgen.xcodeproj/xcuserdata ADDED CryptoPassphrase.h Index: CryptoPassphrase.h ================================================================== --- CryptoPassphrase.h +++ CryptoPassphrase.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2016 - 2019 Jonathan Schleifer + * + * https://heap.zone/git/cryptopassphrase.git + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@interface CryptoPassphrase: OFObject +{ + size_t _length; + bool _legacy, _repeat; +} +@end ADDED CryptoPassphrase.m Index: CryptoPassphrase.m ================================================================== --- CryptoPassphrase.m +++ CryptoPassphrase.m @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2016 - 2019 Jonathan Schleifer + * + * https://heap.zone/git/cryptopassphrase.git + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#import "CryptoPassphrase.h" +#import "NewPasswordGenerator.h" +#import "LegacyPasswordGenerator.h" + +OF_APPLICATION_DELEGATE(CryptoPassphrase) + +static void +showHelp(OFStream *output, bool verbose) +{ + [output writeFormat: @"Usage: %@ [-hlr] site\n", + [OFApplication programName]]; + + if (verbose) + [output writeString: + @"\n" + @"Options:\n" + @" -h --help Show this help\n" + @" -k --keyfile Use the specified key file\n" + @" -l --length Length for the derived password\n" + @" -L --legacy Use the legacy algorithm " + @"(compatible with scrypt-genpass)\n" + @" -r --repeat Repeat input\n"]; +} + +@implementation CryptoPassphrase +- (void)applicationDidFinishLaunching +{ + OFString *keyFilePath, *lengthString; + const of_options_parser_option_t options[] = { + { 'h', @"help", 0, NULL, NULL }, + { 'k', @"keyfile", 1, NULL, &keyFilePath }, + { 'l', @"length", 1, NULL, &lengthString }, + { 'L', @"legacy", 0, &_legacy, NULL }, + { 'r', @"repeat", 0, &_repeat, NULL }, + { '\0', nil, 0, NULL, NULL } + }; + OFOptionsParser *optionsParser = + [OFOptionsParser parserWithOptions: options]; + of_unichar_t option; + OFMutableData *keyFile = nil; + OFString *prompt; + const char *promptCString; + char *passphrase; + + while ((option = [optionsParser nextOption]) != '\0') { + switch (option) { + case 'h': + showHelp(of_stdout, true); + + [OFApplication terminate]; + + break; + case ':': + if (optionsParser.lastLongOption != nil) + [of_stderr writeFormat: + @"%@: Argument for option --%@ missing\n", + [OFApplication programName], + optionsParser.lastLongOption]; + else + [of_stderr writeFormat: + @"%@: Argument for option -%C missing\n", + [OFApplication programName], + optionsParser.lastOption]; + + [OFApplication terminateWithStatus: 1]; + break; + case '?': + if (optionsParser.lastLongOption != nil) + [of_stderr writeFormat: + @"%@: Unknown option: --%@\n", + [OFApplication programName], + optionsParser.lastLongOption]; + else + [of_stderr writeFormat: + @"%@: Unknown option: -%C\n", + [OFApplication programName], + optionsParser.lastOption]; + + [OFApplication terminateWithStatus: 1]; + break; + } + } + + if (optionsParser.remainingArguments.count != 1) { + showHelp(of_stderr, false); + + [OFApplication terminateWithStatus: 1]; + } + + id generator = (_legacy + ? [LegacyPasswordGenerator generator] + : [NewPasswordGenerator generator]); + generator.site = optionsParser.remainingArguments.firstObject; + + if (lengthString != nil) { + bool invalid = false; + + @try { + generator.length = (size_t)lengthString.decimalValue; + } @catch (OFInvalidFormatException *e) { + invalid = true; + } @catch (OFOutOfRangeException *e) { + invalid = true; + } + + if (invalid) { + [of_stderr writeFormat: + @"%@: Invalid length: %@\n", + [OFApplication programName], lengthString]; + + [OFApplication terminateWithStatus: 1]; + } + } + + prompt = [OFString stringWithFormat: @"Passphrase for site \"%@\": ", + generator.site]; + promptCString = [prompt cStringWithEncoding: [OFLocale encoding]]; + + if (keyFilePath != nil) + keyFile = [OFMutableData dataWithContentsOfFile: keyFilePath]; + + passphrase = getpass(promptCString); + @try { + if (_repeat) { + char *passphraseCopy = of_strdup(passphrase); + + if (passphraseCopy == NULL) + @throw [OFOutOfMemoryException exception]; + + @try { + of_string_encoding_t encoding = + [OFLocale encoding]; + + prompt = [OFString stringWithFormat: + @"Repeat passphrase for site \"%@\": ", + generator.site]; + passphrase = getpass( + [prompt cStringWithEncoding: encoding]); + + if (strcmp(passphrase, passphraseCopy) != 0) { + [of_stderr writeString: + @"Passphrases do not match!\n"]; + [OFApplication terminateWithStatus: 1]; + } + } @finally { + of_explicit_memset(passphraseCopy, 0, + strlen(passphraseCopy)); + free(passphraseCopy); + } + } + + generator.keyFile = keyFile; + generator.passphrase = passphrase; + + [generator derivePassword]; + @try { + [of_stdout writeBuffer: generator.output + length: generator.length]; + [of_stdout writeBuffer: "\n" + length: 1]; + } @finally { + of_explicit_memset(generator.output, 0, + generator.length); + } + } @finally { + of_explicit_memset(passphrase, 0, strlen(passphrase)); + + if (keyFile != nil) + of_explicit_memset(keyFile.mutableItems, 0, + keyFile.count); + } + + [OFApplication terminate]; +} +@end Index: LegacyPasswordGenerator.h ================================================================== --- LegacyPasswordGenerator.h +++ LegacyPasswordGenerator.h @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: LegacyPasswordGenerator.m ================================================================== --- LegacyPasswordGenerator.m +++ LegacyPasswordGenerator.m @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -1,5 +1,5 @@ all: - @objfw-compile -Werror -o scrypt-pwgen *.m + @objfw-compile -Werror -o cryptopassphrase *.m clean: - rm -f *.o *~ scrypt-pwgen + rm -f *.o *~ cryptopassphrase Index: NewPasswordGenerator.h ================================================================== --- NewPasswordGenerator.h +++ NewPasswordGenerator.h @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: NewPasswordGenerator.m ================================================================== --- NewPasswordGenerator.m +++ NewPasswordGenerator.m @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: PasswordGenerator.h ================================================================== --- PasswordGenerator.h +++ PasswordGenerator.h @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * DELETED ScryptPWGen.h Index: ScryptPWGen.h ================================================================== --- ScryptPWGen.h +++ ScryptPWGen.h @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2016 - 2019 Jonathan Schleifer - * - * https://heap.zone/git/scrypt-pwgen.git - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice is present in all copies. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#import - -@interface ScryptPWGen: OFObject -{ - size_t _length; - bool _legacy, _repeat; -} -@end DELETED ScryptPWGen.m Index: ScryptPWGen.m ================================================================== --- ScryptPWGen.m +++ ScryptPWGen.m @@ -1,198 +0,0 @@ -/* - * Copyright (c) 2016 - 2019 Jonathan Schleifer - * - * https://heap.zone/git/scrypt-pwgen.git - * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice is present in all copies. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include - -#import "ScryptPWGen.h" -#import "NewPasswordGenerator.h" -#import "LegacyPasswordGenerator.h" - -OF_APPLICATION_DELEGATE(ScryptPWGen) - -static void -showHelp(OFStream *output, bool verbose) -{ - [output writeFormat: @"Usage: %@ [-hlr] site\n", - [OFApplication programName]]; - - if (verbose) - [output writeString: - @"\n" - @"Options:\n" - @" -h --help Show this help\n" - @" -k --keyfile Use the specified key file\n" - @" -l --length Length for the derived password\n" - @" -L --legacy Use the legacy algorithm " - @"(compatible with scrypt-genpass)\n" - @" -r --repeat Repeat input\n"]; -} - -@implementation ScryptPWGen -- (void)applicationDidFinishLaunching -{ - OFString *keyFilePath, *lengthString; - const of_options_parser_option_t options[] = { - { 'h', @"help", 0, NULL, NULL }, - { 'k', @"keyfile", 1, NULL, &keyFilePath }, - { 'l', @"length", 1, NULL, &lengthString }, - { 'L', @"legacy", 0, &_legacy, NULL }, - { 'r', @"repeat", 0, &_repeat, NULL }, - { '\0', nil, 0, NULL, NULL } - }; - OFOptionsParser *optionsParser = - [OFOptionsParser parserWithOptions: options]; - of_unichar_t option; - OFMutableData *keyFile = nil; - OFString *prompt; - const char *promptCString; - char *passphrase; - - while ((option = [optionsParser nextOption]) != '\0') { - switch (option) { - case 'h': - showHelp(of_stdout, true); - - [OFApplication terminate]; - - break; - case ':': - if (optionsParser.lastLongOption != nil) - [of_stderr writeFormat: - @"%@: Argument for option --%@ missing\n", - [OFApplication programName], - optionsParser.lastLongOption]; - else - [of_stderr writeFormat: - @"%@: Argument for option -%C missing\n", - [OFApplication programName], - optionsParser.lastOption]; - - [OFApplication terminateWithStatus: 1]; - break; - case '?': - if (optionsParser.lastLongOption != nil) - [of_stderr writeFormat: - @"%@: Unknown option: --%@\n", - [OFApplication programName], - optionsParser.lastLongOption]; - else - [of_stderr writeFormat: - @"%@: Unknown option: -%C\n", - [OFApplication programName], - optionsParser.lastOption]; - - [OFApplication terminateWithStatus: 1]; - break; - } - } - - if (optionsParser.remainingArguments.count != 1) { - showHelp(of_stderr, false); - - [OFApplication terminateWithStatus: 1]; - } - - id generator = (_legacy - ? [LegacyPasswordGenerator generator] - : [NewPasswordGenerator generator]); - generator.site = optionsParser.remainingArguments.firstObject; - - if (lengthString != nil) { - bool invalid = false; - - @try { - generator.length = (size_t)lengthString.decimalValue; - } @catch (OFInvalidFormatException *e) { - invalid = true; - } @catch (OFOutOfRangeException *e) { - invalid = true; - } - - if (invalid) { - [of_stderr writeFormat: - @"%@: Invalid length: %@\n", - [OFApplication programName], lengthString]; - - [OFApplication terminateWithStatus: 1]; - } - } - - prompt = [OFString stringWithFormat: @"Passphrase for site \"%@\": ", - generator.site]; - promptCString = [prompt cStringWithEncoding: [OFLocale encoding]]; - - if (keyFilePath != nil) - keyFile = [OFMutableData dataWithContentsOfFile: keyFilePath]; - - passphrase = getpass(promptCString); - @try { - if (_repeat) { - char *passphraseCopy = of_strdup(passphrase); - - if (passphraseCopy == NULL) - @throw [OFOutOfMemoryException exception]; - - @try { - of_string_encoding_t encoding = - [OFLocale encoding]; - - prompt = [OFString stringWithFormat: - @"Repeat passphrase for site \"%@\": ", - generator.site]; - passphrase = getpass( - [prompt cStringWithEncoding: encoding]); - - if (strcmp(passphrase, passphraseCopy) != 0) { - [of_stderr writeString: - @"Passphrases do not match!\n"]; - [OFApplication terminateWithStatus: 1]; - } - } @finally { - of_explicit_memset(passphraseCopy, 0, - strlen(passphraseCopy)); - free(passphraseCopy); - } - } - - generator.keyFile = keyFile; - generator.passphrase = passphrase; - - [generator derivePassword]; - @try { - [of_stdout writeBuffer: generator.output - length: generator.length]; - [of_stdout writeBuffer: "\n" - length: 1]; - } @finally { - of_explicit_memset(generator.output, 0, - generator.length); - } - } @finally { - of_explicit_memset(passphrase, 0, strlen(passphrase)); - - if (keyFile != nil) - of_explicit_memset(keyFile.items, 0, keyFile.count); - } - - [OFApplication terminate]; -} -@end Index: iOS/AboutController.swift ================================================================== --- iOS/AboutController.swift +++ iOS/AboutController.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * @@ -38,30 +38,33 @@ "body {" + " font-family: sans-serif;" + "}" + "" + "#title {" + - " font-size: 2.5em;" + + " font-size: 2.1em;" + " font-weight: bold;" + + " text-align: center;" + "}" + "" + "#copyright {" + " font-size: 0.9em;" + " font-weight: bold;" + + " text-align: center;" + "}" + "" + "" + "" + "
" + - " scrypt-pwgen \(version ?? "")" + + " CryptoPassphrase \(version ?? "")" + "
" + "" + "

" + - " scrypt-pwgen is free software and the source code is available" + - " at here." + + " CryptoPassphrase is free software and the source code is" + + " available at" + + " here." + "

" + "

" + " It makes use of the" + " ObjFW framework and" + " also uses its scrypt implementation." + Index: iOS/AddSiteController.swift ================================================================== --- iOS/AddSiteController.swift +++ iOS/AddSiteController.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/AppDelegate.swift ================================================================== --- iOS/AppDelegate.swift +++ iOS/AppDelegate.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/Contents.json +++ iOS/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -31,17 +31,17 @@ "scale" : "3x" }, { "size" : "60x60", "idiom" : "iphone", - "filename" : "scrypt-pwgen 120x120.png", + "filename" : "CryptoPassphrase 120x120.png", "scale" : "2x" }, { "size" : "60x60", "idiom" : "iphone", - "filename" : "scrypt-pwgen 180x180.png", + "filename" : "CryptoPassphrase 180x180.png", "scale" : "3x" }, { "idiom" : "ipad", "size" : "20x20", @@ -73,32 +73,32 @@ "scale" : "2x" }, { "size" : "76x76", "idiom" : "ipad", - "filename" : "scrypt-pwgen 76x76.png", + "filename" : "CryptoPassphrase 76x76.png", "scale" : "1x" }, { "size" : "76x76", "idiom" : "ipad", - "filename" : "scrypt-pwgen 152x152.png", + "filename" : "CryptoPassphrase 152x152.png", "scale" : "2x" }, { "size" : "83.5x83.5", "idiom" : "ipad", - "filename" : "scrypt-pwgen 167x167.png", + "filename" : "CryptoPassphrase 167x167.png", "scale" : "2x" }, { "size" : "1024x1024", "idiom" : "ios-marketing", - "filename" : "scrypt-pwgen.png", + "filename" : "CryptoPassphrase.png", "scale" : "1x" } ], "info" : { "version" : 1, "author" : "xcode" } } ADDED iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 120x120.png Index: iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 120x120.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 120x120.png +++ iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 120x120.png cannot compute difference between binary files ADDED iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 152x152.png Index: iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 152x152.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 152x152.png +++ iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 152x152.png cannot compute difference between binary files ADDED iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 167x167.png Index: iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 167x167.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 167x167.png +++ iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 167x167.png cannot compute difference between binary files ADDED iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 180x180.png Index: iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 180x180.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 180x180.png +++ iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 180x180.png cannot compute difference between binary files ADDED iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 76x76.png Index: iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 76x76.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 76x76.png +++ iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase 76x76.png cannot compute difference between binary files ADDED iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase.png Index: iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase.png +++ iOS/Assets.xcassets/AppIcon.appiconset/CryptoPassphrase.png cannot compute difference between binary files DELETED iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 120x120.png Index: iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 120x120.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 120x120.png +++ iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 120x120.png cannot compute difference between binary files DELETED iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 152x152.png Index: iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 152x152.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 152x152.png +++ iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 152x152.png cannot compute difference between binary files DELETED iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 167x167.png Index: iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 167x167.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 167x167.png +++ iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 167x167.png cannot compute difference between binary files DELETED iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 180x180.png Index: iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 180x180.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 180x180.png +++ iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 180x180.png cannot compute difference between binary files DELETED iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 76x76.png Index: iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 76x76.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 76x76.png +++ iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen 76x76.png cannot compute difference between binary files DELETED iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen.png Index: iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen.png ================================================================== --- iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen.png +++ iOS/Assets.xcassets/AppIcon.appiconset/scrypt-pwgen.png cannot compute difference between binary files Index: iOS/Base.lproj/LaunchScreen.storyboard ================================================================== --- iOS/Base.lproj/LaunchScreen.storyboard +++ iOS/Base.lproj/LaunchScreen.storyboard @@ -1,13 +1,13 @@ - + - + @@ -19,13 +19,13 @@ - - + @@ -90,11 +90,11 @@ - + @@ -127,11 +127,11 @@ - + @@ -303,11 +303,11 @@ - + @@ -341,11 +341,11 @@ - + ADDED iOS/CryptoPassphrase.xcodeproj/project.pbxproj Index: iOS/CryptoPassphrase.xcodeproj/project.pbxproj ================================================================== --- iOS/CryptoPassphrase.xcodeproj/project.pbxproj +++ iOS/CryptoPassphrase.xcodeproj/project.pbxproj @@ -0,0 +1,439 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4B2E52EA1DA942840040D091 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E52E81DA942840040D091 /* Main.storyboard */; }; + 4B2E52EC1DA942840040D091 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E52EB1DA942840040D091 /* Assets.xcassets */; }; + 4B2E52EF1DA942840040D091 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E52ED1DA942840040D091 /* LaunchScreen.storyboard */; }; + 4B31D80922B58F0F00494B15 /* SiteStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B31D80822B58F0F00494B15 /* SiteStorage.swift */; }; + 4B5BCEF922B5B94C00E551BD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEF822B5B94C00E551BD /* AppDelegate.swift */; }; + 4B5BCEFB22B5CF3200E551BD /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEFA22B5CF3200E551BD /* MainViewController.swift */; }; + 4B5BCEFD22B5D98800E551BD /* SelectKeyFileController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEFC22B5D98800E551BD /* SelectKeyFileController.swift */; }; + 4B5BCEFF22B5E36900E551BD /* ShowDetailsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEFE22B5E36900E551BD /* ShowDetailsController.swift */; }; + 4B93656E22B5ADA00099DD08 /* HTTPServerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B93656D22B5ADA00099DD08 /* HTTPServerDelegate.swift */; }; + 4B93657022B5AE2C0099DD08 /* AboutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B93656F22B5AE2C0099DD08 /* AboutController.swift */; }; + 4B93657222B5B1FB0099DD08 /* AddSiteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B93657122B5B1FB0099DD08 /* AddSiteController.swift */; }; + 4B9525251F96BB900095F259 /* ObjFW.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525231F96BB820095F259 /* ObjFW.framework */; }; + 4B9525261F96BB900095F259 /* ObjFW_Bridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */; }; + 4B9525291F994CD30095F259 /* ObjFW.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525231F96BB820095F259 /* ObjFW.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 4B95252A1F9953350095F259 /* ObjFW_Bridge.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 4BA115D21DA9432D007ED4EA /* LegacyPasswordGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BA115CE1DA9432D007ED4EA /* LegacyPasswordGenerator.m */; settings = {COMPILER_FLAGS = "-fconstant-string-class=OFConstantString -fno-constant-cfstrings"; }; }; + 4BA115D31DA9432D007ED4EA /* NewPasswordGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BA115D01DA9432D007ED4EA /* NewPasswordGenerator.m */; settings = {COMPILER_FLAGS = "-fconstant-string-class=OFConstantString -fno-constant-cfstrings"; }; }; + 4BA115D61DA94390007ED4EA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BA115D51DA94390007ED4EA /* UIKit.framework */; }; + 4BF4ADEA1DA9A3DB0073B995 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF4ADE91DA9A3DB0073B995 /* Foundation.framework */; }; + 4BF4C3A022B602F50034FCED /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BF4C39F22B602F50034FCED /* main.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 4BB3CDF61DA967C100FEE5ED /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 12; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 4B95252A1F9953350095F259 /* ObjFW_Bridge.framework in Embed Frameworks */, + 4B9525291F994CD30095F259 /* ObjFW.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 4B2E52DC1DA942840040D091 /* CryptoPassphrase.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CryptoPassphrase.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4B2E52E91DA942840040D091 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 4B2E52EB1DA942840040D091 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 4B2E52EE1DA942840040D091 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 4B2E52F01DA942840040D091 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4B31D80822B58F0F00494B15 /* SiteStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteStorage.swift; sourceTree = ""; }; + 4B38148322B5ED01005C27B2 /* bridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bridge.h; sourceTree = ""; }; + 4B5BCEF822B5B94C00E551BD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 4B5BCEFA22B5CF3200E551BD /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; + 4B5BCEFC22B5D98800E551BD /* SelectKeyFileController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectKeyFileController.swift; sourceTree = ""; }; + 4B5BCEFE22B5E36900E551BD /* ShowDetailsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowDetailsController.swift; sourceTree = ""; }; + 4B93656D22B5ADA00099DD08 /* HTTPServerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPServerDelegate.swift; sourceTree = ""; }; + 4B93656F22B5AE2C0099DD08 /* AboutController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutController.swift; sourceTree = ""; }; + 4B93657122B5B1FB0099DD08 /* AddSiteController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSiteController.swift; sourceTree = ""; }; + 4B9525231F96BB820095F259 /* ObjFW.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjFW.framework; path = ObjFW/Frameworks/ObjFW.framework; sourceTree = ""; }; + 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjFW_Bridge.framework; path = ObjFW/Frameworks/ObjFW_Bridge.framework; sourceTree = ""; }; + 4BA115CD1DA9432D007ED4EA /* LegacyPasswordGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LegacyPasswordGenerator.h; path = ../LegacyPasswordGenerator.h; sourceTree = ""; }; + 4BA115CE1DA9432D007ED4EA /* LegacyPasswordGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LegacyPasswordGenerator.m; path = ../LegacyPasswordGenerator.m; sourceTree = ""; }; + 4BA115CF1DA9432D007ED4EA /* NewPasswordGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NewPasswordGenerator.h; path = ../NewPasswordGenerator.h; sourceTree = ""; }; + 4BA115D01DA9432D007ED4EA /* NewPasswordGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NewPasswordGenerator.m; path = ../NewPasswordGenerator.m; sourceTree = ""; }; + 4BA115D11DA9432D007ED4EA /* PasswordGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PasswordGenerator.h; path = ../PasswordGenerator.h; sourceTree = ""; }; + 4BA115D51DA94390007ED4EA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 4BF4ADE91DA9A3DB0073B995 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 4BF4C39F22B602F50034FCED /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4B2E52D91DA942840040D091 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BF4ADEA1DA9A3DB0073B995 /* Foundation.framework in Frameworks */, + 4BA115D61DA94390007ED4EA /* UIKit.framework in Frameworks */, + 4B9525251F96BB900095F259 /* ObjFW.framework in Frameworks */, + 4B9525261F96BB900095F259 /* ObjFW_Bridge.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4B2E52D31DA942840040D091 = { + isa = PBXGroup; + children = ( + 4BA115CC1DA9431D007ED4EA /* CryptoPassphrase */, + 4B2E52DD1DA942840040D091 /* Products */, + 4BA115D41DA94390007ED4EA /* Frameworks */, + ); + sourceTree = ""; + }; + 4B2E52DD1DA942840040D091 /* Products */ = { + isa = PBXGroup; + children = ( + 4B2E52DC1DA942840040D091 /* CryptoPassphrase.app */, + ); + name = Products; + sourceTree = ""; + }; + 4B2E52DE1DA942840040D091 /* iOS */ = { + isa = PBXGroup; + children = ( + 4B2E52EB1DA942840040D091 /* Assets.xcassets */, + 4B93656F22B5AE2C0099DD08 /* AboutController.swift */, + 4B93657122B5B1FB0099DD08 /* AddSiteController.swift */, + 4B5BCEF822B5B94C00E551BD /* AppDelegate.swift */, + 4B93656D22B5ADA00099DD08 /* HTTPServerDelegate.swift */, + 4B2E52F01DA942840040D091 /* Info.plist */, + 4B2E52ED1DA942840040D091 /* LaunchScreen.storyboard */, + 4B2E52E81DA942840040D091 /* Main.storyboard */, + 4B5BCEFA22B5CF3200E551BD /* MainViewController.swift */, + 4B5BCEFC22B5D98800E551BD /* SelectKeyFileController.swift */, + 4B5BCEFE22B5E36900E551BD /* ShowDetailsController.swift */, + 4B31D80822B58F0F00494B15 /* SiteStorage.swift */, + 4B38148322B5ED01005C27B2 /* bridge.h */, + 4BF4C39F22B602F50034FCED /* main.m */, + ); + name = iOS; + sourceTree = ""; + }; + 4BA115CC1DA9431D007ED4EA /* CryptoPassphrase */ = { + isa = PBXGroup; + children = ( + 4B2E52DE1DA942840040D091 /* iOS */, + 4BA115CD1DA9432D007ED4EA /* LegacyPasswordGenerator.h */, + 4BA115CE1DA9432D007ED4EA /* LegacyPasswordGenerator.m */, + 4BA115CF1DA9432D007ED4EA /* NewPasswordGenerator.h */, + 4BA115D01DA9432D007ED4EA /* NewPasswordGenerator.m */, + 4BA115D11DA9432D007ED4EA /* PasswordGenerator.h */, + ); + name = CryptoPassphrase; + sourceTree = ""; + }; + 4BA115D41DA94390007ED4EA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4B9525231F96BB820095F259 /* ObjFW.framework */, + 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */, + 4BF4ADE91DA9A3DB0073B995 /* Foundation.framework */, + 4BA115D51DA94390007ED4EA /* UIKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4B2E52DB1DA942840040D091 /* CryptoPassphrase */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4B2E52F31DA942840040D091 /* Build configuration list for PBXNativeTarget "CryptoPassphrase" */; + buildPhases = ( + 4B2E52D81DA942840040D091 /* Sources */, + 4B2E52D91DA942840040D091 /* Frameworks */, + 4B2E52DA1DA942840040D091 /* Resources */, + 4BB3CDF61DA967C100FEE5ED /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = CryptoPassphrase; + productName = CryptoPassphrase; + productReference = 4B2E52DC1DA942840040D091 /* CryptoPassphrase.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4B2E52D41DA942840040D091 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Jonathan Schleifer"; + TargetAttributes = { + 4B2E52DB1DA942840040D091 = { + CreatedOnToolsVersion = 8.0; + DevelopmentTeam = MXKNFCKFL6; + LastSwiftMigration = 1020; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 4B2E52D71DA942840040D091 /* Build configuration list for PBXProject "CryptoPassphrase" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 4B2E52D31DA942840040D091; + productRefGroup = 4B2E52DD1DA942840040D091 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 4B2E52DB1DA942840040D091 /* CryptoPassphrase */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4B2E52DA1DA942840040D091 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B2E52EF1DA942840040D091 /* LaunchScreen.storyboard in Resources */, + 4B2E52EC1DA942840040D091 /* Assets.xcassets in Resources */, + 4B2E52EA1DA942840040D091 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4B2E52D81DA942840040D091 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B5BCEF922B5B94C00E551BD /* AppDelegate.swift in Sources */, + 4B93656E22B5ADA00099DD08 /* HTTPServerDelegate.swift in Sources */, + 4B5BCEFB22B5CF3200E551BD /* MainViewController.swift in Sources */, + 4B93657222B5B1FB0099DD08 /* AddSiteController.swift in Sources */, + 4BA115D21DA9432D007ED4EA /* LegacyPasswordGenerator.m in Sources */, + 4BA115D31DA9432D007ED4EA /* NewPasswordGenerator.m in Sources */, + 4B31D80922B58F0F00494B15 /* SiteStorage.swift in Sources */, + 4B5BCEFD22B5D98800E551BD /* SelectKeyFileController.swift in Sources */, + 4B5BCEFF22B5E36900E551BD /* ShowDetailsController.swift in Sources */, + 4BF4C3A022B602F50034FCED /* main.m in Sources */, + 4B93657022B5AE2C0099DD08 /* AboutController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4B2E52E81DA942840040D091 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4B2E52E91DA942840040D091 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 4B2E52ED1DA942840040D091 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 4B2E52EE1DA942840040D091 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4B2E52F11DA942840040D091 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 4B2E52F21DA942840040D091 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 4B2E52F41DA942840040D091 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_ENABLE_OBJC_WEAK = YES; + DEVELOPMENT_TEAM = MXKNFCKFL6; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/ObjFW/Frameworks", + ); + HEADER_SEARCH_PATHS = ObjFW/include; + INFOPLIST_FILE = Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = zone.heap.cryptopassphrase; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = bridge.h; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4B2E52F51DA942840040D091 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = NO; + CLANG_ENABLE_OBJC_WEAK = YES; + DEVELOPMENT_TEAM = MXKNFCKFL6; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/ObjFW/Frameworks", + ); + HEADER_SEARCH_PATHS = ObjFW/include; + INFOPLIST_FILE = Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = zone.heap.cryptopassphrase; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = bridge.h; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4B2E52D71DA942840040D091 /* Build configuration list for PBXProject "CryptoPassphrase" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4B2E52F11DA942840040D091 /* Debug */, + 4B2E52F21DA942840040D091 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4B2E52F31DA942840040D091 /* Build configuration list for PBXNativeTarget "CryptoPassphrase" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4B2E52F41DA942840040D091 /* Debug */, + 4B2E52F51DA942840040D091 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4B2E52D41DA942840040D091 /* Project object */; +} Index: iOS/HTTPServerDelegate.swift ================================================================== --- iOS/HTTPServerDelegate.swift +++ iOS/HTTPServerDelegate.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/Info.plist ================================================================== --- iOS/Info.plist +++ iOS/Info.plist @@ -2,10 +2,12 @@ CFBundleDevelopmentRegion en + CFBundleDisplayName + CryptoPassphrase CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion Index: iOS/MainViewController.swift ================================================================== --- iOS/MainViewController.swift +++ iOS/MainViewController.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/SelectKeyFileController.swift ================================================================== --- iOS/SelectKeyFileController.swift +++ iOS/SelectKeyFileController.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/ShowDetailsController.swift ================================================================== --- iOS/ShowDetailsController.swift +++ iOS/ShowDetailsController.swift @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/SiteStorage.swift ================================================================== --- iOS/SiteStorage.swift +++ iOS/SiteStorage.swift @@ -1,26 +1,26 @@ /* -* Copyright (c) 2016 - 2019 Jonathan Schleifer -* -* https://heap.zone/git/scrypt-pwgen.git -* -* Permission to use, copy, modify, and/or distribute this software for any -* purpose with or without fee is hereby granted, provided that the above -* copyright notice and this permission notice is present in all copies. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -* POSSIBILITY OF SUCH DAMAGE. -*/ + * Copyright (c) 2016 - 2019 Jonathan Schleifer + * + * https://heap.zone/git/cryptopassphrase.git + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice is present in all copies. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ import ObjFW import ObjFW_Bridge class SiteStorage: OFObject { Index: iOS/bridge.h ================================================================== --- iOS/bridge.h +++ iOS/bridge.h @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * Index: iOS/main.m ================================================================== --- iOS/main.m +++ iOS/main.m @@ -1,9 +1,9 @@ /* * Copyright (c) 2016 - 2019 Jonathan Schleifer * - * https://heap.zone/git/scrypt-pwgen.git + * https://heap.zone/git/cryptopassphrase.git * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice is present in all copies. * @@ -22,25 +22,17 @@ #import #import #import -#import "scrypt_pwgen-Swift.h" +#import "CryptoPassphrase-Swift.h" @interface OFAppDelegate: OFObject @end OF_APPLICATION_DELEGATE(OFAppDelegate) -void -_references_to_categories_of_ObjFW_Bridge(void) -{ - _NSString_OFObject_reference = 1; - _OFArray_NSObject_reference = 1; - _OFString_NSObject_reference = 1; -} - @implementation OFAppDelegate - (void)applicationDidFinishLaunching { int *argc; char ***argv; DELETED iOS/scrypt-pwgen.xcodeproj/project.pbxproj Index: iOS/scrypt-pwgen.xcodeproj/project.pbxproj ================================================================== --- iOS/scrypt-pwgen.xcodeproj/project.pbxproj +++ iOS/scrypt-pwgen.xcodeproj/project.pbxproj @@ -1,439 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 4B2E52EA1DA942840040D091 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E52E81DA942840040D091 /* Main.storyboard */; }; - 4B2E52EC1DA942840040D091 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E52EB1DA942840040D091 /* Assets.xcassets */; }; - 4B2E52EF1DA942840040D091 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4B2E52ED1DA942840040D091 /* LaunchScreen.storyboard */; }; - 4B31D80922B58F0F00494B15 /* SiteStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B31D80822B58F0F00494B15 /* SiteStorage.swift */; }; - 4B5BCEF922B5B94C00E551BD /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEF822B5B94C00E551BD /* AppDelegate.swift */; }; - 4B5BCEFB22B5CF3200E551BD /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEFA22B5CF3200E551BD /* MainViewController.swift */; }; - 4B5BCEFD22B5D98800E551BD /* SelectKeyFileController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEFC22B5D98800E551BD /* SelectKeyFileController.swift */; }; - 4B5BCEFF22B5E36900E551BD /* ShowDetailsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B5BCEFE22B5E36900E551BD /* ShowDetailsController.swift */; }; - 4B93656E22B5ADA00099DD08 /* HTTPServerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B93656D22B5ADA00099DD08 /* HTTPServerDelegate.swift */; }; - 4B93657022B5AE2C0099DD08 /* AboutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B93656F22B5AE2C0099DD08 /* AboutController.swift */; }; - 4B93657222B5B1FB0099DD08 /* AddSiteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B93657122B5B1FB0099DD08 /* AddSiteController.swift */; }; - 4B9525251F96BB900095F259 /* ObjFW.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525231F96BB820095F259 /* ObjFW.framework */; }; - 4B9525261F96BB900095F259 /* ObjFW_Bridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */; }; - 4B9525291F994CD30095F259 /* ObjFW.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525231F96BB820095F259 /* ObjFW.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4B95252A1F9953350095F259 /* ObjFW_Bridge.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4BA115D21DA9432D007ED4EA /* LegacyPasswordGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BA115CE1DA9432D007ED4EA /* LegacyPasswordGenerator.m */; settings = {COMPILER_FLAGS = "-fconstant-string-class=OFConstantString -fno-constant-cfstrings"; }; }; - 4BA115D31DA9432D007ED4EA /* NewPasswordGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BA115D01DA9432D007ED4EA /* NewPasswordGenerator.m */; settings = {COMPILER_FLAGS = "-fconstant-string-class=OFConstantString -fno-constant-cfstrings"; }; }; - 4BA115D61DA94390007ED4EA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BA115D51DA94390007ED4EA /* UIKit.framework */; }; - 4BF4ADEA1DA9A3DB0073B995 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BF4ADE91DA9A3DB0073B995 /* Foundation.framework */; }; - 4BF4C3A022B602F50034FCED /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BF4C39F22B602F50034FCED /* main.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 4BB3CDF61DA967C100FEE5ED /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 12; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 4B95252A1F9953350095F259 /* ObjFW_Bridge.framework in Embed Frameworks */, - 4B9525291F994CD30095F259 /* ObjFW.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 4B2E52DC1DA942840040D091 /* scrypt-pwgen.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "scrypt-pwgen.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4B2E52E91DA942840040D091 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 4B2E52EB1DA942840040D091 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 4B2E52EE1DA942840040D091 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 4B2E52F01DA942840040D091 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4B31D80822B58F0F00494B15 /* SiteStorage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteStorage.swift; sourceTree = ""; }; - 4B38148322B5ED01005C27B2 /* bridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bridge.h; sourceTree = ""; }; - 4B5BCEF822B5B94C00E551BD /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 4B5BCEFA22B5CF3200E551BD /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; - 4B5BCEFC22B5D98800E551BD /* SelectKeyFileController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectKeyFileController.swift; sourceTree = ""; }; - 4B5BCEFE22B5E36900E551BD /* ShowDetailsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowDetailsController.swift; sourceTree = ""; }; - 4B93656D22B5ADA00099DD08 /* HTTPServerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPServerDelegate.swift; sourceTree = ""; }; - 4B93656F22B5AE2C0099DD08 /* AboutController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutController.swift; sourceTree = ""; }; - 4B93657122B5B1FB0099DD08 /* AddSiteController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddSiteController.swift; sourceTree = ""; }; - 4B9525231F96BB820095F259 /* ObjFW.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjFW.framework; path = ObjFW/Frameworks/ObjFW.framework; sourceTree = ""; }; - 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjFW_Bridge.framework; path = ObjFW/Frameworks/ObjFW_Bridge.framework; sourceTree = ""; }; - 4BA115CD1DA9432D007ED4EA /* LegacyPasswordGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LegacyPasswordGenerator.h; path = ../LegacyPasswordGenerator.h; sourceTree = ""; }; - 4BA115CE1DA9432D007ED4EA /* LegacyPasswordGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LegacyPasswordGenerator.m; path = ../LegacyPasswordGenerator.m; sourceTree = ""; }; - 4BA115CF1DA9432D007ED4EA /* NewPasswordGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NewPasswordGenerator.h; path = ../NewPasswordGenerator.h; sourceTree = ""; }; - 4BA115D01DA9432D007ED4EA /* NewPasswordGenerator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NewPasswordGenerator.m; path = ../NewPasswordGenerator.m; sourceTree = ""; }; - 4BA115D11DA9432D007ED4EA /* PasswordGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PasswordGenerator.h; path = ../PasswordGenerator.h; sourceTree = ""; }; - 4BA115D51DA94390007ED4EA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 4BF4ADE91DA9A3DB0073B995 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 4BF4C39F22B602F50034FCED /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 4B2E52D91DA942840040D091 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 4BF4ADEA1DA9A3DB0073B995 /* Foundation.framework in Frameworks */, - 4BA115D61DA94390007ED4EA /* UIKit.framework in Frameworks */, - 4B9525251F96BB900095F259 /* ObjFW.framework in Frameworks */, - 4B9525261F96BB900095F259 /* ObjFW_Bridge.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 4B2E52D31DA942840040D091 = { - isa = PBXGroup; - children = ( - 4BA115CC1DA9431D007ED4EA /* scrypt-pwgen */, - 4B2E52DE1DA942840040D091 /* iOS */, - 4B2E52DD1DA942840040D091 /* Products */, - 4BA115D41DA94390007ED4EA /* Frameworks */, - ); - sourceTree = ""; - }; - 4B2E52DD1DA942840040D091 /* Products */ = { - isa = PBXGroup; - children = ( - 4B2E52DC1DA942840040D091 /* scrypt-pwgen.app */, - ); - name = Products; - sourceTree = ""; - }; - 4B2E52DE1DA942840040D091 /* iOS */ = { - isa = PBXGroup; - children = ( - 4B2E52EB1DA942840040D091 /* Assets.xcassets */, - 4B93656F22B5AE2C0099DD08 /* AboutController.swift */, - 4B93657122B5B1FB0099DD08 /* AddSiteController.swift */, - 4B5BCEF822B5B94C00E551BD /* AppDelegate.swift */, - 4B93656D22B5ADA00099DD08 /* HTTPServerDelegate.swift */, - 4B2E52F01DA942840040D091 /* Info.plist */, - 4B2E52ED1DA942840040D091 /* LaunchScreen.storyboard */, - 4B2E52E81DA942840040D091 /* Main.storyboard */, - 4B5BCEFA22B5CF3200E551BD /* MainViewController.swift */, - 4B5BCEFC22B5D98800E551BD /* SelectKeyFileController.swift */, - 4B5BCEFE22B5E36900E551BD /* ShowDetailsController.swift */, - 4B31D80822B58F0F00494B15 /* SiteStorage.swift */, - 4B38148322B5ED01005C27B2 /* bridge.h */, - 4BF4C39F22B602F50034FCED /* main.m */, - ); - name = iOS; - sourceTree = ""; - }; - 4BA115CC1DA9431D007ED4EA /* scrypt-pwgen */ = { - isa = PBXGroup; - children = ( - 4BA115CD1DA9432D007ED4EA /* LegacyPasswordGenerator.h */, - 4BA115CE1DA9432D007ED4EA /* LegacyPasswordGenerator.m */, - 4BA115CF1DA9432D007ED4EA /* NewPasswordGenerator.h */, - 4BA115D01DA9432D007ED4EA /* NewPasswordGenerator.m */, - 4BA115D11DA9432D007ED4EA /* PasswordGenerator.h */, - ); - name = "scrypt-pwgen"; - sourceTree = ""; - }; - 4BA115D41DA94390007ED4EA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 4B9525231F96BB820095F259 /* ObjFW.framework */, - 4B9525241F96BB820095F259 /* ObjFW_Bridge.framework */, - 4BF4ADE91DA9A3DB0073B995 /* Foundation.framework */, - 4BA115D51DA94390007ED4EA /* UIKit.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 4B2E52DB1DA942840040D091 /* scrypt-pwgen */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4B2E52F31DA942840040D091 /* Build configuration list for PBXNativeTarget "scrypt-pwgen" */; - buildPhases = ( - 4B2E52D81DA942840040D091 /* Sources */, - 4B2E52D91DA942840040D091 /* Frameworks */, - 4B2E52DA1DA942840040D091 /* Resources */, - 4BB3CDF61DA967C100FEE5ED /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "scrypt-pwgen"; - productName = "scrypt-pwgen"; - productReference = 4B2E52DC1DA942840040D091 /* scrypt-pwgen.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 4B2E52D41DA942840040D091 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1010; - ORGANIZATIONNAME = "Jonathan Schleifer"; - TargetAttributes = { - 4B2E52DB1DA942840040D091 = { - CreatedOnToolsVersion = 8.0; - DevelopmentTeam = MXKNFCKFL6; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 4B2E52D71DA942840040D091 /* Build configuration list for PBXProject "scrypt-pwgen" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - en, - Base, - ); - mainGroup = 4B2E52D31DA942840040D091; - productRefGroup = 4B2E52DD1DA942840040D091 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 4B2E52DB1DA942840040D091 /* scrypt-pwgen */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 4B2E52DA1DA942840040D091 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B2E52EF1DA942840040D091 /* LaunchScreen.storyboard in Resources */, - 4B2E52EC1DA942840040D091 /* Assets.xcassets in Resources */, - 4B2E52EA1DA942840040D091 /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 4B2E52D81DA942840040D091 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B5BCEF922B5B94C00E551BD /* AppDelegate.swift in Sources */, - 4B93656E22B5ADA00099DD08 /* HTTPServerDelegate.swift in Sources */, - 4B5BCEFB22B5CF3200E551BD /* MainViewController.swift in Sources */, - 4B93657222B5B1FB0099DD08 /* AddSiteController.swift in Sources */, - 4BA115D21DA9432D007ED4EA /* LegacyPasswordGenerator.m in Sources */, - 4BA115D31DA9432D007ED4EA /* NewPasswordGenerator.m in Sources */, - 4B31D80922B58F0F00494B15 /* SiteStorage.swift in Sources */, - 4B5BCEFD22B5D98800E551BD /* SelectKeyFileController.swift in Sources */, - 4B5BCEFF22B5E36900E551BD /* ShowDetailsController.swift in Sources */, - 4BF4C3A022B602F50034FCED /* main.m in Sources */, - 4B93657022B5AE2C0099DD08 /* AboutController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 4B2E52E81DA942840040D091 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 4B2E52E91DA942840040D091 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 4B2E52ED1DA942840040D091 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 4B2E52EE1DA942840040D091 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 4B2E52F11DA942840040D091 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 4B2E52F21DA942840040D091 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 4B2E52F41DA942840040D091 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = NO; - CLANG_ENABLE_OBJC_WEAK = YES; - DEVELOPMENT_TEAM = MXKNFCKFL6; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/ObjFW/Frameworks", - ); - HEADER_SEARCH_PATHS = ObjFW/include; - INFOPLIST_FILE = Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "zone.heap.scrypt-pwgen.ios"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = bridge.h; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 4B2E52F51DA942840040D091 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = NO; - CLANG_ENABLE_OBJC_WEAK = YES; - DEVELOPMENT_TEAM = MXKNFCKFL6; - ENABLE_BITCODE = NO; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/ObjFW/Frameworks", - ); - HEADER_SEARCH_PATHS = ObjFW/include; - INFOPLIST_FILE = Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "zone.heap.scrypt-pwgen.ios"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = bridge.h; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 4B2E52D71DA942840040D091 /* Build configuration list for PBXProject "scrypt-pwgen" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B2E52F11DA942840040D091 /* Debug */, - 4B2E52F21DA942840040D091 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4B2E52F31DA942840040D091 /* Build configuration list for PBXNativeTarget "scrypt-pwgen" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B2E52F41DA942840040D091 /* Debug */, - 4B2E52F51DA942840040D091 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 4B2E52D41DA942840040D091 /* Project object */; -}