2
0

Compare commits

..

1412 Commits

Author SHA1 Message Date
Maarten Billemont
1e7491e0d9 Point to spectre.app 2021-04-06 09:36:36 -04:00
Maarten Billemont
e587e06250 Bump Java to 2.7.12. 2021-03-02 19:45:38 -05:00
Maarten Billemont
e0498c992c Release java-2.7.11, cli-2.7.1 2021-02-18 10:17:50 -05:00
Maarten Billemont
736e847b51 Cloudflare Privacy-First Web Analytics. 2020-12-11 11:34:50 -05:00
Maarten Billemont
d7d7567c07 Point macOS users to the Mac App Store. 2020-04-22 14:15:54 -04:00
Maarten Billemont
d8262aea2d Ignore jekyll cache dir. 2020-01-08 13:08:10 -05:00
Maarten Billemont
c0bba20f1c Release 2.7.10 2018-10-15 20:18:03 -04:00
Maarten Billemont
110db0152c Publish masterpassword-gui-2.7.10.jar 2018-10-15 18:40:53 -04:00
Maarten Billemont
ebd2c741fd Release masterpassword-gui-2.7.9 2018-09-26 00:51:12 -04:00
Maarten Billemont
d8d510b6be Release 2.7.8 2018-09-14 10:04:22 -04:00
Maarten Billemont
914a60cd25 Release masterpassword-gui-2.7.7 2018-08-28 02:44:21 -04:00
Maarten Billemont
ff77947d44 Release masterpassword-gui-2.7.6 2018-08-27 13:20:58 -04:00
Maarten Billemont
8c54a29cfb Bump symlink. 2018-08-26 20:41:07 -04:00
Maarten Billemont
c22fc632b6 Release masterpassword-gui-2.7.5 2018-08-26 18:17:57 -04:00
Maarten Billemont
0623231ad5 Fix symlink. 2018-08-02 23:21:11 -04:00
Maarten Billemont
b190b45756 Release masterpassword-gui-2.7.4 2018-08-02 12:33:53 -04:00
Maarten Billemont
23661793de Signed release. 2018-08-02 01:43:58 -04:00
Maarten Billemont
29780f5ee0 Release masterpassword-gui-2.7.3 2018-08-02 01:41:48 -04:00
Maarten Billemont
2457f6dc9c Update to masterpassword-gui-2.7.2. 2018-07-31 15:35:36 -04:00
Maarten Billemont
b01340c8fd Update masterpassword-gui to 2.7.1 2018-07-29 15:38:16 -04:00
Maarten Billemont
7421e1b0a5 Add donation addresses. 2018-06-21 11:28:21 -04:00
Maarten Billemont
979398a325 Release masterpassword-android-2.7.1 2018-06-21 10:22:17 -04:00
Maarten Billemont
83a7595de3 Fix bad link. 2018-06-20 11:14:54 -04:00
Maarten Billemont
34c970666b Retina images and copy tweaks. 2018-06-20 11:10:26 -04:00
Maarten Billemont
6cde8d9db8 Shallow-clone for GitLab runners to save space. 2018-06-05 14:28:32 -04:00
Maarten Billemont
c5e264ee9f GitLab Pages CI. 2018-06-05 13:29:19 -04:00
Maarten Billemont
f7b4ec4066 GitHub -> GitLab 2018-06-05 13:27:52 -04:00
Maarten Billemont
e7a3a2a01d Default to masterpassword.app 2018-05-19 13:50:38 -04:00
Maarten Billemont
868a14ed19 Add support for new domain masterpassword.app. 2018-05-19 13:38:57 -04:00
Maarten Billemont
54bd876ed6 Force password saving off on dummy field & fix img sizing issue. 2018-05-07 10:44:35 -04:00
Maarten Billemont
e38ae21c80 Better scope images in sections. 2018-05-07 09:24:00 -04:00
Maarten Billemont
70a6e5ecd8 Fix word splitting issue. 2018-05-07 09:21:20 -04:00
Maarten Billemont
e886da7af0 Improvements for small screens. 2018-04-25 16:17:24 -04:00
Maarten Billemont
0545fc7999 Master Password android 2.5.1. 2018-04-24 16:52:00 -04:00
Maarten Billemont
e4cc332a77 Updated PDFs. 2018-04-24 15:32:37 -04:00
Maarten Billemont
703c9b6a68 Link to local resources. 2018-04-23 15:52:07 -04:00
Maarten Billemont
2f96072e3e Publish 2.6-cli-5 2018-04-22 09:34:31 -04:00
Maarten Billemont
b059ce7853 Merge branch 'gh-pages' of github.com:Lyndir/MasterPassword into gh-pages 2018-04-21 16:21:30 -04:00
Maarten Billemont
fa72268edc Icon. 2018-04-21 16:19:49 -04:00
Maarten Billemont
6a2d24182a Disable fake password field. 2018-04-21 15:56:16 -04:00
Maarten Billemont
a576204668 Create CNAME 2018-04-21 13:32:20 -04:00
Maarten Billemont
6835615311 masterpasswordapp.com CNAME. 2018-04-21 13:31:37 -04:00
Maarten Billemont
a710dd6f91 Improve linking. 2018-04-21 11:42:24 -04:00
Maarten Billemont
475cb61d52 Base for URLs. 2018-04-21 09:12:40 -04:00
Maarten Billemont
d0cd8ae288 Move site to root in this branch. 2018-04-21 09:11:48 -04:00
Maarten Billemont
409f005eec Be a bit more specific about password storage. 2018-04-20 09:10:52 -04:00
Maarten Billemont
df7903e146 Add in video and resources. 2018-04-20 00:24:44 -04:00
Maarten Billemont
49edaef79d Some clean-up. 2018-04-19 23:34:42 -04:00
Maarten Billemont
fcbed9ef01 Improve wording. 2018-04-19 23:28:59 -04:00
Maarten Billemont
3edb414d23 Fix paroller issues. 2018-04-19 23:17:08 -04:00
Maarten Billemont
d779c21cc1 WIP - parallax hero image. 2018-04-19 15:49:04 -04:00
Maarten Billemont
8d32bc56ae Small print in footer. 2018-04-19 15:48:29 -04:00
Maarten Billemont
9d03ed06c3 Footer. 2018-04-18 12:18:58 -04:00
Maarten Billemont
ee290e5c14 Extensive content and style update. 2018-04-18 11:54:30 -04:00
Maarten Billemont
789761b177 Updates to new site layout. 2018-04-16 17:17:16 -04:00
Maarten Billemont
cd0876d58a project.lyndir.com is no longer in use, migrated to github. 2018-04-16 10:02:27 -04:00
Maarten Billemont
bfae4da56c Update to latest Xcode warnings. 2018-04-03 09:53:40 -04:00
Maarten Billemont
f342ed5940 Only define loggers if not yet provided. 2018-04-03 09:10:15 -04:00
Maarten Billemont
c7373fee28 Improve output alignment. 2018-04-03 08:50:45 -04:00
Maarten Billemont
44b2955652 Ignore cmake files. 2018-04-03 08:50:25 -04:00
Maarten Billemont
8a4af69008 Fix mpw_log override for iOS/macOS. 2018-03-24 16:49:55 -04:00
Maarten Billemont
6650382e19 Fix overriding of ftl behaviour for tests. 2018-03-24 15:27:13 -04:00
Maarten Billemont
a1f5e0ba1c Harmonize log methods by removing trailing \n. 2018-03-24 15:27:04 -04:00
Maarten Billemont
035bb6b285 Swift-compatible typing. 2018-03-24 15:25:43 -04:00
Maarten Billemont
c0107fb90e Move mpw_identicon into mpw-algorithm.h & define colors. 2018-03-24 15:25:32 -04:00
Maarten Billemont
138be9d14c Respect the user's default type when creating new sites. 2018-03-05 08:14:11 -05:00
Maarten Billemont
61f474217b Update Travis Xcode. 2018-02-18 23:59:15 -05:00
Maarten Billemont
d31c5eed0a Merge branch 'master' of github.com:Lyndir/MasterPassword 2018-02-18 23:47:35 -05:00
Maarten Billemont
5060de689b Match template character to source. 2018-02-18 23:47:23 -05:00
Maarten Billemont
b95424ddf3 Update macOS project configuration. 2018-02-10 23:43:42 -05:00
Maarten Billemont
e40a442a30 Build fixes, improvements and project cleanup. 2018-02-10 23:29:55 -05:00
Maarten Billemont
b5134a9faf Updates to project configuration. 2018-02-10 21:07:00 -05:00
Maarten Billemont
a791d449ce Updated info.plist syntax. 2018-02-10 20:52:30 -05:00
Maarten Billemont
43e1a9d539 Improved checks for external build scripts. 2018-02-10 20:51:50 -05:00
Maarten Billemont
e91f80d10e Remove externals. 2018-02-08 12:31:31 -05:00
Maarten Billemont
9db855c7fb Add documentation PDFs. 2018-01-06 15:44:20 -05:00
Maarten Billemont
2dc3636b26 Support empty site names. 2018-01-06 15:42:26 -05:00
Maarten Billemont
4d9df012f6 Fix check for whether there is a directory in the path. 2017-11-21 22:33:42 -05:00
Maarten Billemont
ff9d0d75ef Make additional libraries optional. 2017-11-06 21:58:51 -05:00
Maarten Billemont
4e160b3b33 libcurses is sometimes split off from libtinfo. 2017-11-06 18:41:18 -05:00
Maarten Billemont
5048acc9f9 cmake's find_package is case sensitive & be smarter about git. 2017-11-06 18:38:36 -05:00
Maarten Billemont
1841541bc4 --broken is new and not really needed. 2017-11-06 15:38:30 -05:00
Maarten Billemont
11d9af3844 Fix generation of valid random passwords for state test. 2017-11-06 14:14:37 -05:00
Maarten Billemont
e30b618241 Allow cmake to look up the mpw version from git. 2017-11-06 12:50:15 -05:00
Maarten Billemont
966327571d Fix cmake when VERSION doesn't exist. 2017-11-06 12:22:13 -05:00
Maarten Billemont
303d50c197 Use FindCurses.cmake to discover the right way to build with libcurses. 2017-11-06 12:07:13 -05:00
Maarten Billemont
bcdfdec211 Notify builds on Matrix channel #masterpassword:lyndir.com 2017-10-06 15:32:33 -04:00
Maarten Billemont
fb769d2ac5 Release mpw-2.6-cli-4. 2017-10-06 15:21:07 -04:00
Maarten Billemont
f8043ae16d Fix chdir test & make curses work when stdout is redirected. 2017-10-06 14:59:29 -04:00
Maarten Billemont
7150f2f5c5 Fix test to match context against question keyword. 2017-10-06 14:58:42 -04:00
Maarten Billemont
81bd2e3065 Make mpw_mkpw symlinkable. 2017-10-06 13:33:08 -04:00
Maarten Billemont
78c9618807 Test chdir. 2017-09-26 11:07:02 -04:00
Maarten Billemont
bed8939b8a Debug issue in testSiteState 2017-09-25 18:35:57 -04:00
Maarten Billemont
9443d93500 Remove MPW_COLOR from core, safer decryption, more standard password input & curses dialog. 2017-09-25 18:34:12 -04:00
Maarten Billemont
877eba66be strdup also isn't standard. 2017-09-25 10:51:14 -04:00
Maarten Billemont
3af8aba40c Make source more standard C11 w/POSIX:2008 CLI. 2017-09-25 10:33:31 -04:00
Maarten Billemont
7ece02c73d Remove stale 2.6-cli-3 2017-09-25 03:05:38 -04:00
Maarten Billemont
ebbd2b3ac4 Re-distribute 2.6-cli-3 with standard build fixes. 2017-09-25 03:01:24 -04:00
Maarten Billemont
a85eff4277 Include semi-standard getline. 2017-09-25 02:59:09 -04:00
Maarten Billemont
98f1c776be Fix some warnings. 2017-09-25 02:56:37 -04:00
Maarten Billemont
6b554c67ed More standard memset_s 2017-09-25 02:53:34 -04:00
Maarten Billemont
f2ae35080d mpw-2.6-cli-3 release. 2017-09-24 15:40:19 -04:00
Maarten Billemont
0ff6c93a95 Document default key size. 2017-09-24 13:18:33 -04:00
Maarten Billemont
9147600b97 Travis cache doesn't need to be disabled anymore. 2017-09-24 13:14:58 -04:00
Maarten Billemont
fafe56166e bzero is nonstandard. Replace with memset_s. 2017-09-24 13:14:16 -04:00
Maarten Billemont
0a024b2594 AES-CBC needs PKCS#7 padding. 2017-09-24 13:06:19 -04:00
Maarten Billemont
b4c2a393f1 Clean up aes state, default to 512 key size, improve log output. 2017-09-24 12:00:38 -04:00
Maarten Billemont
39dcef46d2 Show in Travis log why tests fail. 2017-09-24 00:26:58 -04:00
Maarten Billemont
d6a88583f5 AES needs to be CBC, not CTR. 2017-09-23 20:14:53 -04:00
Maarten Billemont
1c17b84dcf Some tweaks for Travis. 2017-09-23 19:24:06 -04:00
Maarten Billemont
cecaf1b5cc Log fixes, test improvements and some refactoring. 2017-09-23 19:11:06 -04:00
Maarten Billemont
888338e107 Fix siteKey algorithm for siteState. 2017-09-23 19:09:19 -04:00
Maarten Billemont
32055abf29 ciphers.plist is no longer needed. 2017-09-22 20:08:46 -04:00
Maarten Billemont
0f72dffaf1 Updated keyID in test case. 2017-09-22 19:05:59 -04:00
Maarten Billemont
5d1be43b65 Deep Java refactoring to match the C API logic and clean up some OO oddities. 2017-09-22 19:03:50 -04:00
Maarten Billemont
dc7089c38c mpw-tests was not checking mpw_tests.xml's keyID. 2017-09-22 18:23:08 -04:00
Maarten Billemont
34540f0844 Finish rename Marshall -> Marshal. 2017-09-22 15:20:14 -04:00
Maarten Billemont
e818713484 Fix filenames in build 2017-09-22 14:21:31 -04:00
Maarten Billemont
6e2289994c Fix gradle build with missing local.properties. 2017-09-21 10:32:38 -04:00
Maarten Billemont
05a9ba46d0 Marshal refactoring to prepare for new format. 2017-09-20 17:45:49 -04:00
Maarten Billemont
70bb30ba0c Skip masterpassword-android if not set up to build it. 2017-09-20 16:52:20 -04:00
Maarten Billemont
444d7e9b35 Source fix-ups: single l marshal, copyright, .travis. 2017-09-20 12:43:03 -04:00
Maarten Billemont
47164c7a92 Marshal has only one l. 2017-09-20 10:48:04 -04:00
Maarten Billemont
ad00ceb4ce Harmonize C/Java code more, WIP crypt/derive in Java. 2017-09-19 14:52:43 -04:00
Maarten Billemont
473e3ca11f Run gradle test in Travis. 2017-09-19 13:46:27 -04:00
Maarten Billemont
35c0431cec Update Java to match C's internal changes. 2017-09-19 13:45:51 -04:00
Maarten Billemont
70c784db83 Update MP_FULLNAME in mpw.bashrc. 2017-09-15 13:24:45 -04:00
Maarten Billemont
d448099a2d -s is -P now. 2017-09-14 23:14:00 -04:00
Maarten Billemont
e3a7ea57e0 Type key is K, subkey context is not bound by BYTES_MIN/MAX. 2017-09-14 23:03:39 -04:00
Maarten Billemont
fa6133200e Added bashlib. 2017-09-14 16:44:32 -04:00
Maarten Billemont
dfa67bdca9 Added some scripts to do math on password strength and generate random dictionary passphrases. 2017-09-14 16:31:11 -04:00
Maarten Billemont
8c9c4ef7b2 Describe how to use the cmake alternative build system. 2017-09-10 14:17:06 -04:00
Maarten Billemont
1adb18a7e7 Fixed #206 - 'p' trigger for phrase was missing. 2017-09-10 14:03:56 -04:00
Maarten Billemont
f50fdb7777 Some build tool updates, primarily cmake. 2017-09-10 13:57:14 -04:00
Maarten Billemont
33bf2c93d0 Some fixes to the CSS for videos. 2017-09-08 11:19:10 -04:00
Maarten Billemont
f2abcc9e43 A few fixes to the about video. 2017-09-08 10:31:43 -04:00
Maarten Billemont
5ef69aa045 Make bcrypt code more standard. 2017-09-07 00:05:55 -04:00
Maarten Billemont
1c0f274868 Include for waitpid. 2017-09-06 23:54:52 -04:00
Maarten Billemont
1f592f50a9 Release 2.6-cli-2 2017-09-06 00:34:09 -04:00
Maarten Billemont
30fdb54e94 Fix support for building without MPW_JSON enabled. 2017-09-06 00:32:57 -04:00
Maarten Billemont
4f552be5a9 Update cmake for source and improve feature checking in ./build 2017-09-06 00:31:49 -04:00
Maarten Billemont
1439df9f9a Add license headers to cli source files. 2017-09-04 19:37:36 -04:00
Maarten Billemont
e676a0e258 Release 2.6-cli-1. 2017-09-04 14:50:57 -04:00
Maarten Billemont
895df6377d Only distribute release tags, include TAG and VERSION. 2017-09-04 14:48:40 -04:00
Maarten Billemont
3d46f60ff4 Add VERSION to distribution archive. 2017-09-04 14:38:08 -04:00
Maarten Billemont
44d8ab6e53 Remove some pointless local's. 2017-09-04 14:29:25 -04:00
Maarten Billemont
cd70009c2c Move instructions into cli-c for distribution. 2017-09-04 14:17:20 -04:00
Maarten Billemont
4261160902 Some more refactoring. 2017-09-03 17:00:35 -04:00
Maarten Billemont
ced7aef5d7 Fix target assignment of mpw-cli-util.c 2017-09-03 16:53:14 -04:00
Maarten Billemont
63100913c5 libjson-c's upstream still has build issues, switch back to our fork. 2017-09-03 15:48:43 -04:00
Maarten Billemont
6904d4c427 purposeResult is not an owned reference. 2017-09-03 15:46:38 -04:00
Maarten Billemont
4271d77225 Remove debugging code. 2017-09-03 15:43:22 -04:00
Maarten Billemont
6811773e54 Refactor CLI code to make the flow more clear and the free'ing more reliable. 2017-09-03 15:41:12 -04:00
Maarten Billemont
060ce61030 Fix ./build's targets interpretation & other improvements. 2017-09-01 11:16:09 -04:00
Maarten Billemont
9a5e9ced31 More consistent spacing in usage output. 2017-08-31 15:32:58 -04:00
Maarten Billemont
568401a612 Extract cli utilities into mpw-cli-util to keep things cleaner. 2017-08-31 15:30:42 -04:00
Maarten Billemont
92a3a0ccbd Switch libjson-c back to upstream and fix some build issues with it. 2017-08-31 15:14:08 -04:00
Maarten Billemont
ba24c2be34 Rename env vars to make it clear they are for the mpw binary, add PATH support for askpass. 2017-08-31 13:42:03 -04:00
Maarten Billemont
019cefd3fb Add support for askpass program for reading answers from the user. 2017-08-31 13:37:28 -04:00
Maarten Billemont
eef82f7ed4 Don't infinite loop when prompting if no terminal is available. 2017-08-31 11:49:36 -04:00
Maarten Billemont
2dfe0f78b0 Build & link all sources at once to allow link-time optimization. 2017-08-31 11:48:34 -04:00
Maarten Billemont
627144b583 Make MPW_JSON optional as documented. 2017-08-31 11:48:10 -04:00
Maarten Billemont
fad0f5e5dd Add PearlCryptUtils back since PearlKeyChain uses it. 2017-08-30 19:05:42 -04:00
Maarten Billemont
8562338b62 Support for reading master password from an FD. 2017-08-30 19:05:21 -04:00
Maarten Billemont
17de69834e Declare __unused if not declared by compiler. 2017-08-30 13:27:59 -04:00
Maarten Billemont
aeeab7dbf6 Improve build script documentation and targets variable. 2017-08-30 10:18:23 -04:00
Maarten Billemont
ce60ba6c9f External libs configuration no longer used. 2017-08-30 09:58:01 -04:00
Maarten Billemont
d22f93e564 Format code. 2017-08-30 09:57:15 -04:00
Maarten Billemont
6f4f6b8d1e Copy TOTP counter support to v2 override. 2017-08-30 09:54:16 -04:00
Maarten Billemont
6fa8ee53cd Currently unused implementation of HOTP. 2017-08-30 09:40:51 -04:00
Maarten Billemont
23af56c150 Slight clean-up of types, includes and warnings. 2017-08-30 09:39:35 -04:00
Maarten Billemont
91828cbad7 Test script for CLI. 2017-08-30 09:38:23 -04:00
Maarten Billemont
40d2788ae0 Implement OTP counter feature for counter values of 0. 2017-08-30 09:35:55 -04:00
Maarten Billemont
21a3a28980 Copy args so we can re-use it. 2017-08-29 12:06:40 -04:00
Maarten Billemont
f5c7bee58f Remove unused Pearl-Crypto. 2017-08-29 01:01:38 -04:00
Maarten Billemont
e364f5159b Fix build warnings. 2017-08-28 23:48:24 -04:00
Maarten Billemont
74f9f1ca00 Fix up objc code to match new C API. 2017-08-28 19:37:51 -04:00
Maarten Billemont
328d38ac19 Remove PearlLayout. 2017-08-28 19:34:22 -04:00
Maarten Billemont
7735d82c7b Silence unused variable warnings for compiler check variables. 2017-08-28 19:25:51 -04:00
Maarten Billemont
1e7c200865 Remove non-standard asprintf from mpw-cli. 2017-08-28 18:25:58 -04:00
Maarten Billemont
724b357dd8 Create path for mpw.d sites files if it doesn't exist yet. 2017-08-28 17:58:57 -04:00
Maarten Billemont
a85efc5736 Remove all build-time external dependency fetching/building logic. 2017-08-27 11:17:45 -04:00
Maarten Billemont
9eb58119ea Remove dependency on external bcrypt. 2017-08-27 10:47:39 -04:00
Maarten Billemont
77b4ed2cfd Remove dependency on asprintf. 2017-08-27 09:25:53 -04:00
Maarten Billemont
011416690a Some warning cleanup. 2017-08-27 09:04:18 -04:00
Maarten Billemont
53eb5c8a73 Refactoring and fix up mpw_color. 2017-08-27 08:53:58 -04:00
Maarten Billemont
2f99855cd4 Remove non-standard host-endian functions. 2017-08-27 07:46:34 -04:00
Maarten Billemont
18eaeec1de Fix some rewrite bugs. 2017-08-23 00:53:14 -04:00
Maarten Billemont
5ee700c9b9 Small fix. 2017-08-23 00:05:50 -04:00
Maarten Billemont
a8949ca07e NULL out free'ed references. 2017-08-23 00:01:23 -04:00
Maarten Billemont
0a42579d9e Improved free'ing on error conditions. 2017-08-22 18:38:36 -04:00
Maarten Billemont
f2f8747126 Support for persisting login/question type & stateful types, null checking, cleanup and rewrite of CLI state. 2017-08-22 18:18:24 -04:00
Maarten Billemont
f83cdacab8 Document -M, -P, allow saving login name. 2017-08-22 11:38:04 -04:00
Maarten Billemont
98aeb02d32 Forgot to merge in i386 2017-08-13 19:06:06 -04:00
Maarten Billemont
2bbaeccd05 Forgot to merge in i386 2017-08-13 18:32:03 -04:00
Maarten Billemont
91e0a04e66 Add support for i386 in libjson-c and libsodium builds. 2017-08-13 16:53:18 -04:00
Maarten Billemont
661fc523ad Don't pass nil error to crashlytics. 2017-08-13 16:49:56 -04:00
Maarten Billemont
b9cbaf7343 Cross-compile fixes for iOS. 2017-08-13 15:52:08 -04:00
Maarten Billemont
e451308fdc Refactoring regression, use right algorithm version for siteKey. 2017-08-13 11:35:15 -04:00
Maarten Billemont
1b51c5efa4 Build script update. 2017-08-13 11:02:05 -04:00
Maarten Billemont
a8776eec58 Fix C cli API. 2017-08-13 08:50:16 -04:00
Maarten Billemont
d9cdb7ef83 Fix error name collision. 2017-08-13 01:00:03 -04:00
Maarten Billemont
28c7a64bd2 Fork json-c temporarily to fix some code issues. 2017-08-13 00:30:25 -04:00
Maarten Billemont
d7193f7753 Adapt macOS for new APIs. 2017-08-12 22:26:48 -04:00
Maarten Billemont
f5c7d11f0e Add marshalling metadata lookup & adapt iOS for new APIs. 2017-08-12 21:57:47 -04:00
Maarten Billemont
c0ba96daa2 Update Darwin platform project with solid support for linking libsodium & libjson-c 2017-08-11 01:42:03 -04:00
Maarten Billemont
b374d9e04a Some type fixes. 2017-08-10 21:29:59 -04:00
Maarten Billemont
2033ebdc72 Documentation improvements. 2017-08-10 12:48:04 -04:00
Maarten Billemont
c3bb896f40 Limit subkeys to 128-512 bit. 2017-08-10 12:45:25 -04:00
Maarten Billemont
4f7c28563d passwordType -> resultType, add derived class and key type. 2017-08-10 12:30:42 -04:00
Maarten Billemont
b1985a2bf2 Added version into compiled binary. 2017-08-08 00:00:14 -04:00
Maarten Billemont
ee50a4d025 Define type for siteCounter, add support for saving hybrid passwords. 2017-08-07 20:35:31 -04:00
Maarten Billemont
b26f5a82d7 Allow migration of redacted state & show URL. 2017-08-07 18:57:10 -04:00
Maarten Billemont
c044ae79cd Support updating the mpw, showing loginName, adding new sites & questions, fix password memory leak. 2017-08-07 17:42:38 -04:00
Maarten Billemont
a261538602 Slight adjustment in printf declarations. 2017-08-06 19:09:13 -04:00
Maarten Billemont
18daef7808 Fix some build warnings. 2017-08-06 18:56:37 -04:00
Maarten Billemont
68d1ab58b7 De-duplicate algorithm implementations and improve trace output. 2017-08-06 11:40:10 -04:00
Maarten Billemont
2b660adf00 Fix a NUL termination issue with aes decryption & add standard trace debugging. 2017-08-05 23:42:47 -04:00
Maarten Billemont
e15d01882f Update the mpsites file after the operation and memory cleanup. 2017-08-05 23:19:24 -04:00
Maarten Billemont
23491faccc Fix up and clean up base64 & aes code. 2017-08-05 21:52:00 -04:00
Maarten Billemont
5f2e1611f1 Fix mpw_tests.xml after purpose rename. 2017-08-05 19:14:25 -04:00
Maarten Billemont
9abacaf905 mpw_realloc solves some issues with the realloc API that can lead to leaks. 2017-08-05 19:04:42 -04:00
Maarten Billemont
322e056661 Implement algorithm support for hybrid personal passwords. 2017-08-05 17:33:45 -04:00
Maarten Billemont
228f8e4ed1 C API for hybrid passwords. 2017-08-04 10:43:46 -04:00
Maarten Billemont
d6415277d0 Wrap up error handling overhaul. 2017-08-04 09:36:03 -04:00
Maarten Billemont
db41a6635f Standardize C CLI exit codes. 2017-08-03 11:05:37 -04:00
Maarten Billemont
096919637f Abort CLI if master password doesn't match. 2017-08-03 01:13:15 -04:00
Maarten Billemont
434d70ebff Improve error handling for marshalling. 2017-08-03 01:07:19 -04:00
Maarten Billemont
bb8829b66f Fix mpw_push_buf regression. 2017-08-02 23:13:51 -04:00
Maarten Billemont
10f2c107c6 More improvements to error handling. 2017-08-02 14:26:41 -04:00
Maarten Billemont
03080b9ccd Render error messages as strings instead of internal codes. 2017-08-01 17:35:13 -04:00
Maarten Billemont
b00ad53e42 Some more error handling. 2017-08-01 17:13:30 -04:00
Maarten Billemont
99e286456e Better ftl failure handling. 2017-08-01 16:50:50 -04:00
Maarten Billemont
46cdf56944 Expose standard names for password type and purpose, and log them in the cli. 2017-08-01 14:34:15 -04:00
Maarten Billemont
9d5105a9e5 Rename identifiers to align better with their meaning (siteVariant -> keyPurpose, siteContext -> keyContext, siteType -> passwordType). 2017-08-01 13:45:54 -04:00
Maarten Billemont
3c5cb1673a Split the API into the three distinct phases of the mpw algorithm. 2017-08-01 08:31:39 -04:00
Maarten Billemont
13107063df Refactor marshall utilities out, some clean-up, and prepare iOS/macOS project for libjson-c 2017-07-28 09:50:26 -04:00
Maarten Billemont
8a73baa6bc Improved error detection and handling. 2017-07-23 17:05:49 -04:00
Maarten Billemont
b65fedf40d WIP - parsing JSON format. 2017-07-23 09:57:48 -04:00
Maarten Billemont
04ab276d93 Memory fixes to JSON export. 2017-07-23 00:48:38 -04:00
Maarten Billemont
6d88d6bde0 Refactor a bit. 2017-07-22 23:58:22 -04:00
Maarten Billemont
4103c6e659 Replace ftl by err. 2017-07-22 23:46:53 -04:00
Maarten Billemont
16004f2ffe Memory fixes & handle masterPassword verification, masterKey site algorithm scoping, etc. 2017-07-22 23:45:54 -04:00
Maarten Billemont
37c0d323d9 Complete parsing of mpsites for CLI defaults. 2017-07-22 21:38:53 -04:00
Maarten Billemont
560cb1a266 WIP performing marshalling of sites in C. 2017-07-15 21:13:49 -04:00
Maarten Billemont
738ad197b2 Fix the main thread lock-up detector across background events. 2017-06-06 22:10:02 -04:00
Maarten Billemont
cfcc5287db Fix bad assumption that there is always a zero'th group. 2017-06-04 09:46:41 -04:00
Maarten Billemont
0b5502b673 WIP site. 2017-06-04 09:35:27 -04:00
Maarten Billemont
d3e3c9d720 Fixes #174 - Login name copy button was made inoperative when hint was hidden. 2017-06-03 11:57:41 -04:00
Maarten Billemont
3c3f88d820 Initial work on a new web design. 2017-05-28 15:34:07 -04:00
Maarten Billemont
2e2c654ec9 Fix for fetchedResultsController getter, haslib() and ability to turn off libsodium. 2017-05-28 15:32:50 -04:00
Maarten Billemont
d361ae2381 Assist the user with store setup and allow continuing anyway. 2017-05-08 14:58:46 -04:00
Maarten Billemont
fcbb93762a Cleanup, renaming restructuring, etc. 2017-05-07 18:44:09 -04:00
Maarten Billemont
f86210f5da Ability to handle versions without suffix after platform. 2017-05-04 14:30:50 -04:00
Maarten Billemont
e96f678236 Introduce a main thread lockup test feature. 2017-05-04 13:57:12 -04:00
Maarten Billemont
8b9067ab4b Merge tag '2.5-ios-4'
2.5-ios-4
2017-05-01 18:44:08 -04:00
Maarten Billemont
5af383235a Fix issue causing site list to appear empty on login. 2017-05-01 18:43:16 -04:00
Maarten Billemont
25b13dfb22 Rollback temporary storyboard hack. 2017-05-01 18:41:55 -04:00
Maarten Billemont
635692ef09 Fix issue causing site list to appear empty on login. 2017-05-01 18:40:51 -04:00
Maarten Billemont
e6bab4e504 Support for associating a URL to sites. 2017-05-01 18:32:52 -04:00
Maarten Billemont
cd6b7e6051 Settle on a method of making the password cells visible in storyboard. 2017-04-30 19:08:34 -04:00
Maarten Billemont
b180202e07 Dismiss keyboard when dropping down preferences or app deactivates. 2017-04-30 18:54:07 -04:00
Maarten Billemont
f83f2af529 Fix store product images and http URL links. 2017-04-30 18:45:08 -04:00
Maarten Billemont
cf2c30cfe6 Convert store into template cells for products. 2017-04-30 17:48:03 -04:00
Maarten Billemont
834e94ebd5 Fix usage of dubious objectID in global context. 2017-04-29 23:52:57 -04:00
Maarten Billemont
6d9be3fdfe Add support for Answers and improved Fabric integration. 2017-04-29 23:03:50 -04:00
Maarten Billemont
07e55140ac Bump Pearl. 2017-04-29 18:07:06 -04:00
Maarten Billemont
fbbd08790d Pasteboard improvements, UI fixes and site name from pasteboard URL.
[UPDATED]   Timeout after 3 min for other pasteboard copies too.
[FIXED]     Sometimes cell content loading can fail, schedule a retry.
[UPDATED]   Dismiss keyboard when copying content.
[IMPROVED]  Handling of deactivation and reactivation observation.
[ADDED]     When a URL is in the pasteboard, search for the hostname.
2017-04-29 17:50:48 -04:00
Maarten Billemont
fcaa5d1d8c Some improvement to observing user changes. 2017-04-29 15:01:24 -04:00
Maarten Billemont
ea5be8efcb Rewrite handling of collection view and table view reloading for reliability. 2017-04-27 02:22:01 -04:00
Maarten Billemont
c8b4933c3d Expire the password from the clipboard after 3 minutes on iOS 10+. 2017-04-26 22:01:27 -04:00
Maarten Billemont
981ee171ae Update site for 2.5-cli-2 2017-04-22 12:35:47 -04:00
Maarten Billemont
3ed6b93736 Keep tarballs in site directory. 2017-04-22 12:33:46 -04:00
Maarten Billemont
56a515c5ea Improve clean methods. 2017-04-22 12:20:52 -04:00
Maarten Billemont
15ac7a2dbf Improve font size and font scaling fixes. 2017-04-22 12:00:47 -04:00
Maarten Billemont
c5c7999753 Ensure the tree is clean before building the distribution archive. 2017-04-22 11:15:07 -04:00
Maarten Billemont
bb58ed0169 Update In-App Settings Kit. 2017-04-22 10:03:31 -04:00
Maarten Billemont
4545a5c745 Improve readability of some of the smaller and thinner fonts. 2017-04-22 09:52:28 -04:00
Maarten Billemont
da8c7064fe Support for reduced transparency. 2017-04-20 22:29:10 -04:00
Maarten Billemont
d9bd604436 Improve support for import/export headers on iOS/Mac.
[ADDED]     iOS/macOS support for Full Name, Algorithm and Default Type mpsites headers.
2017-04-19 21:58:10 -04:00
Maarten Billemont
c99252809d Disable ADHOC and tester functionality / bypasses. 2017-04-18 20:31:38 -04:00
Maarten Billemont
d704f451a3 Fixed issue causing emergency generator password button to not respond. 2017-04-17 22:27:36 -04:00
Maarten Billemont
2c9ab5d153 Fixed issue when cancelling touchID login. 2017-04-17 22:13:01 -04:00
Maarten Billemont
d5d33da12f Fixed UI issues with passwords list and drop-down animation + support for phrase and name default types.
[FIXED]     Fixed issues with animating changes in the passwords list during certain & multiple events.
[FIXED]     Slightly broken UI prior to drop-down animation & improved animation a bit.
[ADDED]     Phrase & Name default password types.
2017-04-17 21:57:08 -04:00
Maarten Billemont
cbef1a611b Update Mac binary to 2.5-mac-2 2017-04-16 13:03:15 -04:00
Maarten Billemont
0a1f215a1a Style login name, add login generated gear, improve logic for when to show login name. 2017-04-15 10:57:52 -04:00
Maarten Billemont
907d2a8ca6 Fixed key disappearing from NSCache after suspension and not being reloaded from keychain. 2017-04-15 02:28:11 -04:00
Maarten Billemont
89f6e77f67 Hack to ensure Xcode doesn't incorrectly link libsodium.dylib instead of libsodium.a 2017-04-14 17:23:41 -04:00
Maarten Billemont
f2fb16a0b9 Improved library check that doesn't depend on wording of error message. 2017-04-14 17:01:24 -04:00
Maarten Billemont
e3edd42b88 Fixed a bug in PearlMutableStaticTableViewController. 2017-04-14 16:10:11 -04:00
Maarten Billemont
cc5d246d7d Update Storyboard. 2017-04-14 13:20:13 -04:00
Maarten Billemont
ca320de6d9 Fix detection of ios platforms. 2017-04-14 13:08:23 -04:00
Maarten Billemont
ae979d7240 Fix up the benefits wording. 2017-04-14 10:13:44 -04:00
Maarten Billemont
eb1c443940 Small README tweaks. 2017-04-14 09:58:35 -04:00
Maarten Billemont
dadcefc9bf FAQ. 2017-04-14 09:51:44 -04:00
Maarten Billemont
cdbaec9751 Explain configuration requirements for the Android SDK. 2017-04-14 09:13:31 -04:00
Maarten Billemont
f48d480c77 Compacted build instructions a bit. 2017-04-14 09:01:04 -04:00
Maarten Billemont
23aae490df Update version calculation. 2017-04-14 00:43:34 -04:00
Maarten Billemont
3fcf1131ac Need to -resume the task to start it, fixes issue with importing sites. 2017-04-14 00:24:34 -04:00
Maarten Billemont
2bdec415e9 Update Travis to ensure mpw-tests is built. 2017-04-13 14:07:02 -04:00
Maarten Billemont
4c12f4af56 Amend the build instructions to mention libsodium and default build only to mpw. 2017-04-13 11:51:05 -04:00
Maarten Billemont
d91140439a Properly deactivate when copying password so previous app regains focus and signOut happens properly. 2017-04-13 11:33:03 -04:00
Maarten Billemont
a7912dd1b7 Small format update. 2017-04-13 00:06:46 -04:00
Maarten Billemont
05391d893e Fix slow fuzzy queries. 2017-04-12 23:41:17 -04:00
Maarten Billemont
2047422b08 Generate libsodium's ios/osx libs first run. 2017-04-10 13:29:52 -04:00
Maarten Billemont
e3fffc1923 Migrate from Tarsnap's scrypt to libsodium. 2017-04-10 11:43:55 -04:00
Maarten Billemont
9bf50569cc Fix some remaining references to libscrypt. 2017-04-09 08:32:34 -04:00
Maarten Billemont
9ef265d9de Don't add scrypt objects in twice. 2017-04-08 16:48:20 -04:00
Maarten Billemont
385f347b33 We don't need libscrypt when linking against sodium. 2017-04-08 16:20:58 -04:00
Maarten Billemont
4058d33202 Support for dynamically linking libscrypt & libsodium as alternative to statically linking Tarsnap's scrypt. 2017-04-08 14:25:54 -04:00
Maarten Billemont
98c5ee3425 Update website for 2.5-CLI-1 release and symlinks. 2017-04-07 22:41:39 -04:00
Maarten Billemont
b01e370fc0 Improvement to distribution script and create release signature. 2017-04-06 15:08:27 -04:00
Maarten Billemont
21d5ef823f Run each Travis script in a subshell so they don't affect each other. 2017-04-06 10:20:26 -04:00
Maarten Billemont
da71ed6f7f Update distribute script for new repo hierarchy. 2017-04-06 10:14:13 -04:00
Maarten Billemont
5a6acb2e44 Perform mpw-tests during CI build & build iOS for simulator so it doesn't depend on a provisioning profile. 2017-04-06 10:03:21 -04:00
Maarten Billemont
29ecbaeb19 Move adhoc-signing into CODE_SIGN_IDENTITY. 2017-04-06 09:19:34 -04:00
Maarten Billemont
3ebdfe1180 Try adhoc-signing for Test builds 2017-04-06 01:20:56 -04:00
Maarten Billemont
60ac096f99 Ensure Travis builds Test configuration. 2017-04-06 00:33:05 -04:00
Maarten Billemont
b13bdb171e Update iOS and macOS schemes. 2017-04-06 00:23:01 -04:00
Maarten Billemont
2cfa1439e6 Don't upload to Crashlytics when not building archive. 2017-04-05 17:03:05 -04:00
Maarten Billemont
a363a8a715 GPLv3 headers on C and ObjC code. 2017-04-05 16:56:22 -04:00
Maarten Billemont
e39062a32d GPLv3 headers on Java code. 2017-04-05 16:30:16 -04:00
Maarten Billemont
4c5c7b8aaf Move code-signing configuration into target and fix loginhelper. 2017-04-05 16:18:35 -04:00
Maarten Billemont
ee4e8f4229 Update Travis osx_image. 2017-04-05 15:45:35 -04:00
Maarten Billemont
e4d3c0b47c Configure macOS Test scheme with no signing. 2017-04-05 14:40:07 -04:00
Maarten Billemont
6e685f0036 Revert "Travis only lets us have one script."
This reverts commit b248f2d440.
2017-04-05 14:16:52 -04:00
Maarten Billemont
b248f2d440 Travis only lets us have one script. 2017-04-05 13:42:55 -04:00
Maarten Billemont
ec0712350f PCH fixes for macOS/iOS switching. 2017-04-05 12:53:56 -04:00
Maarten Billemont
d440f2bcac Merge branch 'master' of github.com:Lyndir/MasterPassword 2017-04-04 20:40:47 -04:00
Maarten Billemont
bef55cca03 Library API annotations. 2017-04-04 20:40:25 -04:00
Maarten Billemont
ebe5206f92 Update .idea ignore. 2017-04-04 20:40:07 -04:00
Maarten Billemont
b478691980 Apply 'Lhunath' code inspection fixes and improvements. 2017-04-04 20:39:18 -04:00
Maarten Billemont
86f956571d Needs 14 2's to work around iTc bug. 2017-04-01 00:43:44 -04:00
Maarten Billemont
559934607b Reformat to AppCode style. 2017-04-01 00:30:53 -04:00
Maarten Billemont
de4300c3d3 Improve the style a little of these menu tips. 2017-03-30 12:29:34 -04:00
Maarten Billemont
05f91d53db Fix description of full-screen menu item. 2017-03-30 12:22:59 -04:00
Maarten Billemont
01eddf9f42 macOS project configuration updates. 2017-03-30 12:15:28 -04:00
Maarten Billemont
9b2c0b33ef Update README.md 2017-03-29 23:50:03 -04:00
Maarten Billemont
77b095e25e Some style fixes to README 2017-03-29 00:32:15 -04:00
Maarten Billemont
93cdcc1743 Merge branch 'master' of github.com:Lyndir/MasterPassword 2017-03-29 00:22:10 -04:00
Maarten Billemont
2fe1ed84e6 Update README with C build instructions. 2017-03-29 00:20:48 -04:00
Maarten Billemont
4903df21f8 Sync up description of variants. 2017-03-26 09:05:31 -04:00
Maarten Billemont
31fb9bc4e1 Update README.md 2017-03-22 15:00:40 -04:00
Maarten Billemont
23dcb11a10 Update README.md 2017-03-22 14:37:05 -04:00
Maarten Billemont
ee0ca569f5 Updated C core and cli build and scripts. 2017-03-21 14:07:40 -04:00
Maarten Billemont
8ca8ef7aab Properly quote YAML value. 2017-03-11 11:38:47 -05:00
Maarten Billemont
018ab83af3 Update Travis build file for new scheme name. 2017-03-11 11:22:05 -05:00
Maarten Billemont
58a6f17641 Updates for latest Xcode. 2017-03-11 11:20:15 -05:00
Maarten Billemont
77bee803b8 Fixes #138- delays identicon update to avoid leaking interactive keyboard input. 2017-03-10 11:31:22 -05:00
Maarten Billemont
c3f4d148a4 Try to reformat the java list. 2017-03-06 20:02:27 -05:00
Maarten Billemont
f94ae03bde Fix URL. 2017-03-06 19:59:04 -05:00
Maarten Billemont
88199db988 Java build update and add gradle wrapper. 2017-03-06 19:56:47 -05:00
Maarten Billemont
33ff573295 Small tweak of C build script. 2017-03-06 18:18:25 -05:00
Maarten Billemont
e0822b270e Instructions for the web platform. 2017-03-06 18:09:45 -05:00
Maarten Billemont
acc4c34b85 Add some icons to releases. 2017-03-06 18:02:58 -05:00
Maarten Billemont
63b757f51a More Master Password availability. 2017-03-06 17:51:43 -05:00
Maarten Billemont
eb527d985b Skip the intro. 2017-03-06 17:34:30 -05:00
Maarten Billemont
94159ed11a Adjust darwin build configuration to new project structure. 2017-03-06 17:25:59 -05:00
Maarten Billemont
18fce4eaf8 Instructions for building the Java code. 2017-03-06 16:06:38 -05:00
Maarten Billemont
8347c72882 Update README.md 2017-03-06 16:02:10 -05:00
Maarten Billemont
f03abb1c8d Updated README. 2017-03-06 15:58:06 -05:00
Maarten Billemont
10cfe95158 Adjust gradle build configuration to new project structure. 2017-03-06 14:52:52 -05:00
Maarten Billemont
c6b285a9c0 Re-organize the project into a better hierarchy. 2017-03-06 13:40:39 -05:00
Maarten Billemont
67e18895ab Update Android APK to fix scrypt issue. 2017-02-09 23:33:04 -05:00
Maarten Billemont
8b7cf2e86d Instructions, so I don't forget. 2017-02-09 23:31:22 -05:00
Maarten Billemont
a267c0d1db APK release configuration. 2017-02-09 23:25:42 -05:00
Maarten Billemont
f60093513e Change to new masterpassword.keystore 2017-02-09 22:59:22 -05:00
Maarten Billemont
5b47d47a1b Android 2.4.1 2017-02-09 22:54:20 -05:00
Maarten Billemont
f8f48743b0 Fix native scrypt on Android. 2017-02-09 00:48:07 -05:00
Maarten Billemont
b46bf25c19 Migrate to Gradle. 2017-02-06 11:16:04 -05:00
Maarten Billemont
e754e1ddce Evaluate the speed of the first and second stage of mpw individually. 2017-01-05 10:58:02 -05:00
Maarten Billemont
0f4a66f5d3 Fix setupterm error evaluation. 2016-11-10 11:15:23 -05:00
Maarten Billemont
3036697004 Don't exit if TERM is not set and color is enabled; setupterm is strange.. 2016-11-06 11:19:52 -05:00
Maarten Billemont
097d240feb Fix leak and segfault wrt reading MP_FULLNAME 2016-11-06 11:17:02 -05:00
Maarten Billemont
dd9e4eafbc lineSize needs to be > 1. 2016-11-06 10:42:23 -05:00
Maarten Billemont
2199757d9b Build and Travis fix. 2016-11-03 20:13:43 -04:00
Maarten Billemont
00887f6277 Travis. 2016-11-03 19:45:37 -04:00
Maarten Billemont
21945ae23f Try to fix Travis builds again. 2016-11-03 16:46:58 -04:00
Maarten Billemont
d3f2a01da2 Fix memory leaks, thanks @daltomi - #134. 2016-11-03 10:31:07 -04:00
Maarten Billemont
f427e06692 Change the names of some utility functions to be more standard and consistent. 2016-11-03 10:04:18 -04:00
Maarten Billemont
73421b3299 Merge branch 'master' of github.com:Lyndir/MasterPassword 2016-10-29 09:29:13 -04:00
Maarten Billemont
564e5d9084 Standardize mpw-wide constants and explain their purpose, also allow non-home .mpw.d. 2016-10-29 09:29:01 -04:00
Maarten Billemont
88d818833c Merge pull request #110 from joshterrill/master
fixed wording on set password dialog
2016-10-29 08:24:21 -04:00
Maarten Billemont
0498a245c6 Some minor code improvements. 2016-10-29 08:18:20 -04:00
Maarten Billemont
77bb2ef4cd Merge pull request #118 from joelsnape/master
Corrected conversion exception (from long to UnsignedInteger) on linux oracle and open jdk.
2016-10-29 07:55:36 -04:00
Maarten Billemont
207b375ae9 Fix version number parsing. 2016-10-27 14:49:02 -04:00
Maarten Billemont
c1f4d2db24 Merge branch 'master' of github.com:Lyndir/MasterPassword 2016-10-27 14:24:49 -04:00
Maarten Billemont
ca3a8ee78c Update Master Password Web version to support all algorithm versions and Tom's latest mpw-js. 2016-10-27 14:14:58 -04:00
Maarten Billemont
e88ec0927e Merge pull request #108 from rolandog/patch-1
Prevented domain name and password leakage
2016-10-27 14:13:20 -04:00
Maarten Billemont
e6774592d7 Merge pull request #121 from nat13ejo/master
Modified the symlink in mpw_test.xml to point to the new location of mpw_test.xml
2016-10-27 14:12:20 -04:00
Emil Johansson
6834f3689f Modified the symlink in mpw_test.xml to point to the new location of
the file at ../Java/masterpassword-tests/src/main/resources/mpw_tests.xml

Fixes #120
2016-10-22 10:26:29 +02:00
Maarten Billemont
c2fc5e6072 Merge pull request #119 from nat13ejo/master
Added the option "-selection clip" to the xclip command. This fixes
2016-10-21 16:04:51 -04:00
Emil Johansson
ade5c274b1 Added the option "-selection clip" to the xclip command. This fixes
the bugg that the automatic copying to the clipboard accesible with
ctrl-V in applications like in e.g firefox is not working in OpenSUSE
41.1 and i suspect in other Linux distros as well.
2016-10-20 22:33:11 +02:00
Joel Snape
1da235bbdf Corrected conversion exception (from long to UnsignedInteger) on linux oracle and open jdk. 2016-10-08 20:51:19 +01:00
Maarten Billemont
b050cc4994 Build fixes. 2016-09-22 18:17:19 -04:00
Maarten Billemont
3e31dac7e0 Update project for Xcode 8, finally with named provisioning profile identifiers! 2016-09-22 17:37:21 -04:00
Maarten Billemont
eea9051dbb Adjust mpw-bench to compare to hmac-sha-256 instead of sha-256, their performance characteristics are quite different. 2016-08-24 00:07:58 -04:00
Maarten Billemont
d560a2052d Mac update. 2016-08-17 18:36:39 -04:00
Maarten Billemont
af7edd05d4 Make TouchID optional. 2016-08-17 18:34:32 -04:00
Joshua Terrill
33f817a585 fixed wording on set password dialog
The wordong says "Click 'Change Password' ...", but the button says "Set Password", not "Change Password".
2016-08-02 00:11:37 -07:00
Maarten Billemont
e2d3f14fdf Fix a crash when the master key could not be computed. 2016-07-23 11:44:17 -04:00
Maarten Billemont
e205926c8c Bump Crashlytics. 2016-07-21 20:07:20 -04:00
Maarten Billemont
d48494a566 Update Master Password for Mac. 2016-07-21 20:06:37 -04:00
Maarten Billemont
00ad9d59ca Better fix to Mac user getting logged out after the app is locked. 2016-07-21 20:03:47 -04:00
Maarten Billemont
af7327555c Merge branch 'master' of github.com:Lyndir/MasterPassword 2016-07-21 10:02:35 -04:00
Maarten Billemont
1977a423a5 Move a few batches of UI work into the main thread. 2016-07-21 09:59:37 -04:00
Maarten Billemont
fa588f8fe2 Update Crashlytics. 2016-07-19 12:06:22 -04:00
Maarten Billemont
ba00d89b99 Fix some potential crashes and memory leaks. 2016-07-19 12:00:19 -04:00
Maarten Billemont
c498d8b1ec Merge pull request #109 from dkunzler/master
fix mpsites export on Java
2016-07-06 15:22:14 -04:00
David Kunzler
e6b398d09d fix mpsites export on Java 2016-07-06 20:23:45 +02:00
Maarten Billemont
a72d893203 Include the build in the short version string. 2016-07-06 01:24:58 -04:00
Maarten Billemont
a5368033a3 Default to Long on invalid type. 2016-07-06 01:18:35 -04:00
Maarten Billemont
588ebe08cd Fix crash when default type is not a generated type, when password is unset and don't crash for fatals. 2016-07-06 01:16:10 -04:00
Maarten Billemont
28bd162e05 Fixed issue when signing out on iOS + issue with biometrics not getting enabled properly after enabling TouchID. 2016-07-05 20:15:18 -04:00
Maarten Billemont
2897bc741c Version can't be > 18 chars, so use the major as the repeater. 2016-07-02 09:46:42 -04:00
Maarten Billemont
e11e73c0db Little hack to work around stupid iTunesConnect restriction. 2016-07-02 09:29:50 -04:00
Maarten Billemont
672d8ba089 Update Master Password for Mac. 2016-07-02 09:18:55 -04:00
Maarten Billemont
3a70d5e38d Don't forget the active user when signing out, so sign-in can re-use the same user.
Also fix some deprecated method usages.
2016-07-02 09:04:31 -04:00
Maarten Billemont
b9298996e8 Make Reveal weak. 2016-06-04 12:01:20 -04:00
Maarten Billemont
28afa1a56d Bump Pearl. 2016-06-04 11:52:17 -04:00
Maarten Billemont
17cc647cf5 Turn off tests. 2016-06-04 11:38:37 -04:00
Maarten Billemont
9863fbb073 Bump Crashlytics. 2016-06-04 11:29:21 -04:00
Maarten Billemont
49398bb9f0 Another attempt at fixing dumb xctool bugs. 2016-06-04 11:27:37 -04:00
Maarten Billemont
b52b310e82 Fix saving of user after sign-in. 2016-06-04 10:44:43 -04:00
Maarten Billemont
6a74ada2fa Dismiss keyboard if active when opening question answers. 2016-06-04 10:14:19 -04:00
Maarten Billemont
c8a40a7062 Build fix for iOS. 2016-06-04 09:52:19 -04:00
Maarten Billemont
2889c73af3 Let's call it 'Desktop' now. 2016-05-16 08:46:55 -04:00
Maarten Billemont
9249967c6f Bump master password mac and distribute via the website instead of through the app store. 2016-05-16 08:44:06 -04:00
Maarten Billemont
24f5ceac51 Fix misplaced frames. 2016-05-16 08:36:14 -04:00
Maarten Billemont
060059ff0c Bugfixes, a gradient backdrop behind bottom buttons and support for generated login names. 2016-05-16 00:50:17 -04:00
Maarten Billemont
0f7793e9ba Fix "full screen" menu item not updating when toggled. 2016-05-15 00:14:41 -04:00
Maarten Billemont
a4cf7f9f3c Mac 2.4 beta. 2016-05-02 11:42:34 -04:00
Maarten Billemont
8978433aed fadeIn/fadeOut cleanup. 2016-04-30 18:09:27 -04:00
Maarten Billemont
b4efe301a4 Fix issues with focus and tips in security questions panel. 2016-04-30 18:06:23 -04:00
Maarten Billemont
9a82e617b3 Fix copy/paste/undo/redo editing hotkeys. 2016-04-30 17:41:51 -04:00
Maarten Billemont
2647279ff6 Only reset the frame size and position if switching window level. 2016-04-30 15:48:10 -04:00
Maarten Billemont
dae84c4a2e Manually fix hardcoded absolute paths, silly Xcode. 2016-04-25 11:13:24 -04:00
Maarten Billemont
3b74543c51 Security answer generation for question keywords. 2016-04-23 23:56:16 -04:00
Maarten Billemont
1918c30bed Wire up some of the security answers UI. Still WIP. 2016-04-23 14:07:08 -04:00
Maarten Billemont
bbeb6bb948 Fix deprecated NSAlert usage. 2016-04-23 12:22:15 -04:00
Maarten Billemont
15b14d67db Improvements to layout, password types and preparations for security answers. 2016-04-23 11:54:13 -04:00
Maarten Billemont
35c443d82d Support for windowed Master Password window on OS X, some UI improvements and modern version of window translucency. 2016-04-17 19:30:06 -04:00
Maarten Billemont
d950d4be3b Improvements to the question UI. 2016-04-17 16:29:37 -04:00
Maarten Billemont
d7aae64b5d Fix appearance of UI on Mac. 2016-04-16 17:22:11 -04:00
rolandog
657e4c8a9d Prevented domain name and password leakage
This prevents a user from logging in with any password into a tab that was left open and being able to view the last domain name and generated password.
2016-04-01 23:01:55 +00:00
Maarten Billemont
f238bb723d WIP - upgrade to tmthrgd latest code. 2016-03-05 16:57:58 -05:00
Maarten Billemont
b4da801bb0 Skip existing files when uploading to s3. 2016-02-21 11:51:32 -05:00
Maarten Billemont
ce7aa46af6 Bump masterpassword-android to 2.4. 2016-02-21 09:08:02 -05:00
Maarten Billemont
83c28692ad [maven-release-plugin] rollback changes from release preparation of 2.4-java 2016-02-20 22:29:27 -05:00
Maarten Billemont
f21d0f7cfc [maven-release-plugin] prepare release 2.4-java 2016-02-20 22:29:27 -05:00
Maarten Billemont
7eb10cb5a6 Fix a bug with storing the default algorithm version. 2016-02-20 22:26:50 -05:00
Maarten Billemont
64829c99d8 Initial support for security questions in Mac app. 2016-02-20 21:56:04 -05:00
Maarten Billemont
0269c2741a Silence warning when releasing about jarsigner version ambiguity. 2016-02-20 21:53:58 -05:00
Maarten Billemont
f5638ea798 A little clean-up. 2016-02-20 21:48:18 -05:00
Maarten Billemont
6a1768a50d Fixed a few bugs. 2016-02-20 21:45:11 -05:00
Maarten Billemont
b346b3be65 Finish up Android UI improvements. 2016-02-20 21:27:59 -05:00
Maarten Billemont
060ec0b5cd Move preferences into a global preferences controller. 2016-02-20 20:30:08 -05:00
Maarten Billemont
7f8a36e32e Added ability to switch from native to java-only KDF. 2016-02-20 18:50:44 -05:00
Maarten Billemont
024899f311 Updated and fixed encoding of a few PNGs. 2016-02-20 18:49:21 -05:00
Maarten Billemont
6ffef78469 Fix some C warnings. 2016-02-19 08:34:06 -05:00
Maarten Billemont
b574158d92 Update logback layout to new format. 2016-02-19 08:25:14 -05:00
Maarten Billemont
7c97cd7a6d Crashlytics for Mac update. 2016-01-27 21:40:09 -05:00
Maarten Billemont
0aa47cc3f4 Mac build fixes and Fabric integration. 2016-01-27 21:38:36 -05:00
Maarten Billemont
39b380b938 Add TouchID to storeVersions and update crypto libs for bitcode. 2016-01-15 00:19:07 -05:00
Maarten Billemont
e6fdd8859e Update copyright. 2016-01-14 11:24:27 -05:00
Maarten Billemont
de70e871a2 Fixes to TouchID in-app checks. 2016-01-14 11:22:15 -05:00
Maarten Billemont
225e932fe7 Enable In-App purchase of TouchID feature and improved auto-height calculation of preferences and store table cells. 2016-01-14 10:50:03 -05:00
Maarten Billemont
61b4ea4525 Finish TouchID support. 2016-01-14 09:58:04 -05:00
Maarten Billemont
a42edec918 TouchID integration and fixes to PearlLogger integration into mpw C code. 2016-01-14 02:14:36 -05:00
Maarten Billemont
360b20d06f Make output verbosity configurable from the CLI and standardize options. 2016-01-04 14:52:05 -05:00
Maarten Billemont
6bc8fa1a6a [maven-release-plugin] rollback changes from release preparation of 2.3.1 2015-12-24 23:32:47 -05:00
Maarten Billemont
be96d4d506 [maven-release-plugin] prepare release 2.3.1 2015-12-24 23:32:47 -05:00
Maarten Billemont
f782b2ef62 Fixed counter type, added Android integrity testing.
[IMPROVED]  Type of Master Password counter is unsigned int; Guava's
            UnsignedInteger allows us to better enforce that in code,
            fixing a few places where ints were treated badly, limiting
            counter support.
[ADDED]     An integrity test activity to the Android app to ensure the
            Android device properly generates the expected passwords
            before allowing the user to rely on it.
[UPDATED]   Made standard test suite available for all without needing
            JAXB; implemented SAX reading of mpw_tests.xml + a good API
            for running the tests and getting feedback at runtime.
2015-12-24 22:26:17 -05:00
Maarten Billemont
188353d39b Provide an API for during runtime tests.
[ADDED]     masterpassword-tests provides an API for performing runtime
            tests of whether the master password algorithm performs as
            it should on the current platform.
2015-12-22 20:45:42 -05:00
Maarten Billemont
acdb96cb6f We don't need to depend on joda-time or opal-crypto. 2015-12-18 12:41:31 -05:00
Maarten Billemont
2c3a706ac4 Cleanup of includes. 2015-12-16 17:23:50 -05:00
Maarten Billemont
0e3160b8bb Suggestions for contributing. 2015-12-13 11:33:00 -05:00
Maarten Billemont
6d8c5e7f94 Merge branch 'master' of github.com:Lyndir/MasterPassword 2015-12-13 11:15:42 -05:00
Maarten Billemont
9e6bb48105 Merge commit 'e8d9796' 2015-12-13 11:15:00 -05:00
Maarten Billemont
e8d9796ba0 Update Android icon. 2015-12-13 11:14:33 -05:00
Maarten Billemont
490e0fbd7e Update masterpassword-gui. 2015-12-13 10:49:58 -05:00
Maarten Billemont
174859ad8d Fabric update. 2015-12-13 09:41:26 -05:00
Maarten Billemont
60506e69ef Merge pull request #106 from Reisen/master
Update algorithm to correct counter.
2015-12-02 15:30:50 -05:00
Reisen
d42c2a17fa Update algorithm to correct counter.
The counter in algorithm.html says the default is 0, however all the official (and non official) apps start at 1.
2015-12-02 19:51:31 +00:00
Maarten Billemont
207d6eadd1 Update CFBundleVersion to just major.minor.build and include the GIT ref elsewhere. 2015-11-06 02:15:58 -05:00
Maarten Billemont
b3674e5324 Try and see if I can convince Apple to allow me to go back to a sane CFBundleVersion. 2015-11-06 01:39:32 -05:00
Maarten Billemont
2aa7d33f7a Update location of Crashlytics.plist in release check script. 2015-11-05 11:43:57 -05:00
Maarten Billemont
7c0628ddc9 Don't hardcode provisioning profiles. 2015-11-05 11:35:35 -05:00
Maarten Billemont
dabc402d45 Improved public header lookup configuration. 2015-11-05 11:30:53 -05:00
Maarten Billemont
537e7d86f9 Fix patching and unpacking of dependency packages. 2015-11-05 11:10:23 -05:00
Maarten Billemont
cdaf8f99d5 Get libscrypt from the official GIT repo or package + El Capitan build fixes + GIT checkout fixes. 2015-11-05 10:33:30 -05:00
Maarten Billemont
b932f132ef Remove fixed TODO. 2015-11-05 00:01:55 -05:00
Maarten Billemont
7f68d4b98f Add "Password for"-label and fix a weird UI bug with bindings, hidden and NSViews with certain inner constraints. 2015-11-04 23:53:46 -05:00
Maarten Billemont
8316e5331d Profile opening window and some project updates. 2015-11-01 00:19:47 -04:00
Maarten Billemont
1bcbb3c90e Upgrade and re-organize Mac Storyboard. 2015-10-31 12:33:03 -04:00
Maarten Billemont
12adde818b Mac Project update, Crashlytics/Fabric update, MP API update and other build fixes. 2015-10-28 21:12:47 -04:00
Maarten Billemont
7cd66f5170 Build Travis for simulator so we don't need to sign. 2015-10-22 15:56:02 -04:00
Maarten Billemont
8a43a0d580 Build Development scheme in Travis so we don't need to sign. 2015-10-22 15:51:37 -04:00
Maarten Billemont
a831a9b3ee Try and fix Travis build issue. 2015-10-22 15:45:54 -04:00
Maarten Billemont
4013ca3578 Update Travis configuration. 2015-10-22 15:33:20 -04:00
Maarten Billemont
39097d4458 Project update. 2015-10-22 14:53:35 -04:00
Maarten Billemont
7608173cca Bump Pearl. 2015-10-22 14:42:30 -04:00
Maarten Billemont
877207e547 Bump Pearl. 2015-10-22 14:37:29 -04:00
Maarten Billemont
21e3b9396f Reference the latest Reveal via symlink. 2015-10-22 14:37:02 -04:00
Maarten Billemont
c662065bc3 Update openssl/scrypt and Crashlytics/Fabric 2015-10-22 14:31:39 -04:00
Maarten Billemont
db7f9d8af8 Xcode updates, type fixes and Mac versioning improvements. 2015-09-23 00:51:20 -04:00
Maarten Billemont
8f1d897660 Fixed MP-59 Master password not recognized when no site added to mpsites file. 2015-06-20 11:36:31 -04:00
Maarten Billemont
6961236534 Fixed MP-51 Keyboard covers security answers 2015-06-20 11:24:17 -04:00
Maarten Billemont
be0893c738 Remove JDK 7 API and AWT from algorithm (for Android < 4.4) 2015-06-20 11:04:52 -04:00
Maarten Billemont
ee922c947f Add Apple Java extension stubs to allow the code to compile on other platforms. 2015-06-20 10:49:29 -04:00
Maarten Billemont
78afbbb128 Fixed mysterious constraints that caused Xcode to crash. 2015-06-20 09:01:09 -04:00
Maarten Billemont
8dbc521773 Add android link to initial window. 2015-06-19 17:17:49 -04:00
Maarten Billemont
ff12aa6d7f Fix selectText for site password. 2015-05-03 14:36:07 -04:00
Maarten Billemont
6afdb38f98 Update site with 2.3 Java releases. 2015-04-19 01:01:54 -04:00
Maarten Billemont
87960a2d60 [maven-release-plugin] rollback changes from release preparation of 2.3 2015-04-18 17:41:45 -04:00
Maarten Billemont
7f5bb9e114 [maven-release-plugin] prepare release 2.3 2015-04-18 17:41:45 -04:00
Maarten Billemont
4c4aaac08b Update to remove the db4o repository. 2015-04-18 17:31:12 -04:00
Maarten Billemont
5320e079ce [maven-release-plugin] rollback changes from release preparation of 2.3 2015-04-18 16:24:34 -04:00
Maarten Billemont
636c337c78 [maven-release-plugin] prepare release 2.3 2015-04-18 16:24:34 -04:00
Maarten Billemont
c2b08678df Also release android. 2015-04-18 16:22:26 -04:00
Maarten Billemont
7117d82aa4 [maven-release-plugin] rollback changes from release preparation of 2.3-android 2015-04-18 16:02:40 -04:00
Maarten Billemont
4fa6436de2 [maven-release-plugin] prepare release 2.3-android 2015-04-18 16:02:40 -04:00
Maarten Billemont
3e30087856 Try to fix releasing just masterpassword-android. 2015-04-18 16:01:40 -04:00
Maarten Billemont
6bd2d70270 [maven-release-plugin] rollback changes from release preparation of 2.3 2015-04-18 15:35:26 -04:00
Maarten Billemont
cf11b01ed6 [maven-release-plugin] prepare release 2.3 2015-04-18 15:35:26 -04:00
Maarten Billemont
7e11f01331 Try to fix maven-release-plugin inside a subdir. 2015-04-18 15:30:31 -04:00
Maarten Billemont
aeca5e18fe [maven-release-plugin] rollback changes from release preparation of 2.3 2015-04-18 15:07:08 -04:00
Maarten Billemont
615e7c98a8 [maven-release-plugin] prepare release 2.3 2015-04-18 15:07:08 -04:00
Maarten Billemont
e713776123 Update to the correct Android SDK dependency. 2015-04-18 15:02:57 -04:00
Maarten Billemont
7d5b7e53d4 Explain what is necessary to build the Android app. 2015-04-18 14:59:11 -04:00
Maarten Billemont
950c68437a Prepare for 2.3 android release. 2015-04-18 14:49:26 -04:00
Maarten Billemont
300a04f5c7 Merge branch 'master' of github.com:Lyndir/MasterPassword 2015-04-18 14:48:35 -04:00
Maarten Billemont
8faf6b48dd Fixed UTF-8 issue, click on A4.4, add notification and expiry.
[FIXED]     A Java UTF-8 encoding issue.
[FIXED]     Android 4.4 wasn't triggering onClick on TextViews.
[ADDED]     A notification when the password is copied.
[ADDED]     Expire the password from the clipboard after 20 seconds.
[UPDATED]   -underscore variant of slf4j-android to make tags settable with setprops
2015-04-18 14:48:27 -04:00
Maarten Billemont
5f0367ad29 Support for deleting sites from the Java GUI. 2015-04-03 12:12:12 -04:00
Maarten Billemont
e126a55912 Update mpw-js. 2015-04-01 08:44:55 -04:00
Maarten Billemont
d05c5eedd8 Update site's masterpassword-gui.jar 2015-04-01 08:11:43 -04:00
Maarten Billemont
6819a2ace5 Delete users + window resize fix.
[ADDED]     Java: support for deleting users.
[FIXED]     Java: Password window resizing issue.
2015-04-01 08:09:48 -04:00
Maarten Billemont
645b6c5f54 Avoid trouble with s3cmd sync not noticing when remote is already up to date. 2015-03-29 21:10:10 -04:00
Maarten Billemont
d3c09fd979 Update masterpassword-gui to have identicon on the bottom. 2015-03-29 21:03:25 -04:00
Maarten Billemont
a41ae1814a Update site for new Java with emoticons. 2015-03-29 20:32:26 -04:00
Maarten Billemont
70f7fa1345 Java identicon support. 2015-03-29 20:30:57 -04:00
Maarten Billemont
ea9d8cc275 Update masterpassword-gui-2.2.jar for Windows L&F improvements. 2015-03-20 14:37:46 -04:00
Maarten Billemont
20d1811b5c Fixes to mpw.completion.bash when no mpsites. 2015-03-13 11:02:30 -04:00
Maarten Billemont
634ef062f3 Merge branch 'master' of github.com:Lyndir/MasterPassword 2015-03-13 09:57:35 -04:00
Maarten Billemont
a424531a8a Some more anchors on secutity.html. 2015-03-13 09:56:28 -04:00
Maarten Billemont
9cffe53993 A bash completion script for mpw. 2015-03-12 01:03:02 -04:00
Maarten Billemont
fd35fea8cf mpw C code is not thread-safe + bad performance long site queries. 2015-03-11 17:31:39 -04:00
Maarten Billemont
01c21e95bb Merge branch 'master' of github.com:Lyndir/MasterPassword 2015-03-10 16:40:42 -04:00
Maarten Billemont
5af3ffa178 Merge branch 'master' of github.com:Lyndir/MasterPassword
Conflicts:
	Site/2013-05/index.html
2015-03-10 14:39:05 -04:00
Maarten Billemont
651d07f982 mpw is now available via homebrew. 2015-03-10 14:37:47 -04:00
Maarten Billemont
a383d0eee7 Make new site creation on Mac same as iOS.
[FIXED]     Unable to create a site that is a substring of an existing site.
2015-03-05 17:28:04 -05:00
Maarten Billemont
ca8f14fd3e Site-specific support for keys of different algorithm versions.
[ADDED]     Ability to downgrade sites.
[ADDED]     A more explicit message that sites need to be upgraded.
2015-02-28 10:01:41 -05:00
Maarten Billemont
fd855bb025 Add link to Tom's test suite. 2015-02-28 09:53:00 -05:00
Maarten Billemont
af340806af Update mpw-js to include Tom's latest fixes. 2015-02-28 09:20:28 -05:00
Maarten Billemont
cdeee2576d More algorithm trace logging. 2015-02-27 08:49:04 -05:00
Maarten Billemont
779d2776a0 Fix V0 in Java and support for testing algorithms. 2015-02-27 08:35:10 -05:00
Maarten Billemont
563aab9a81 More verbose in TRC about what algorithm is used + fix mpw_charlen on some platforms. 2015-02-18 17:32:33 -05:00
Maarten Billemont
73de98c5e2 Ignore Windows Thumbs.db 2015-02-16 23:58:03 -05:00
Maarten Billemont
c330728ac3 UI Improvements for Windows and system L&F. 2015-02-16 23:56:58 -05:00
Maarten Billemont
2db601475f UI improvements for Windows and system look and feel. 2015-02-16 19:04:43 -05:00
Maarten Billemont
d898646097 Build fixes for mpw_color. 2015-02-09 20:51:12 +00:00
Maarten Billemont
afaa17948f A fix build fixes on other platforms. 2015-02-09 18:02:22 +00:00
Maarten Billemont
8514a58e64 Sizing and memory related C fixes.
[FIXED]     mpw_templatesForType now returns a fully allocated array, was relying on undefined behavior before.
[FIXED]     mpw_variantWithName was allocating a badly sized standard string.
2015-02-07 11:10:59 -05:00
Maarten Billemont
f80bbff46e Small C tweaks and add 2.2 to the site.
[UPDATED]   mpw-cli's usage: line.
[IMPROVED]  Safer code for standardizing of type name.
[FIXED]     Detection of missing Crashlytics API Key wasn't detecting the file being missing.
[ADDED]     2.2 desktop and android to the site.
2015-02-07 09:16:17 -05:00
Maarten Billemont
f7d595b0e7 Update site with new versions. 2015-02-05 21:02:06 -05:00
Maarten Billemont
422066ad4a [maven-release-plugin] rollback changes from release preparation of 2.2-android 2015-02-05 20:28:25 -05:00
Maarten Billemont
73372f507a [maven-release-plugin] prepare release 2.2-android 2015-02-05 20:28:25 -05:00
Maarten Billemont
feddd038e3 Also sign masterpassword-gui 2015-02-05 20:27:09 -05:00
Maarten Billemont
3f6773f3a9 Android release preparation. 2015-02-05 17:29:29 -05:00
Maarten Billemont
12b1610dc7 Remove unavailable resources + update graphics. 2015-02-05 16:34:04 -05:00
Maarten Billemont
e20b33a051 Prepare for making Android releases. 2015-02-05 13:43:57 -05:00
Maarten Billemont
b84ae532f2 Some generic code fix-ups throughout. 2015-02-05 13:14:17 -05:00
Maarten Billemont
145008406d Big overhaul for proper site-specific algorithm support and big Android UI update. 2015-02-05 00:56:24 -05:00
Maarten Billemont
a6ab9b9194 Moar UI work on the Java app + support for per-site algorithm versioning. 2015-02-04 19:51:38 -05:00
Maarten Billemont
78c593fc08 Many UI improvements to the Java GUI. 2015-02-04 11:25:18 -05:00
Maarten Billemont
5b08149ca6 Fix a crash on older OS X versions. 2015-02-02 14:48:12 -05:00
Maarten Billemont
58afc19c26 Make string constants C constants, not macros. 2015-02-02 14:47:16 -05:00
Maarten Billemont
b3109187e9 Some project cleanup. 2015-01-31 11:08:22 -05:00
Maarten Billemont
a6e7a749bf Android improvements.
[UPDATED]   Opal API
[ADDED]     Scrypt native binaries for more archs.
[IMPROVED]  Android activity secure.
[FIXED]     White background on buttons for some devices.
[IMPROVED]  Android layout.
[WIP]       Remember password on Android.
2015-01-31 10:55:08 -05:00
Maarten Billemont
ca5d83d40c Put LDFLAGS after .o files that use them for compatibility with the 11.10+ linker. 2015-01-29 14:37:15 -05:00
Maarten Billemont
285813324f mpw-js is now back in sync with Tom's repo. 2015-01-23 08:31:50 -05:00
Maarten Billemont
d4b772b467 Update to Tom's latest mpw-js to fix issues with maximum security passwords. 2015-01-23 08:14:13 -05:00
Maarten Billemont
f392ad4053 Merge branch 'master' of github.com:Lyndir/MasterPassword 2015-01-21 11:12:23 -05:00
Maarten Billemont
35990f3bdd Update Java GUI. 2015-01-21 09:11:14 -05:00
Maarten Billemont
3932857c21 Fix for not being able to copy the password from the password field. 2015-01-21 09:07:57 -05:00
Maarten Billemont
6f771a972b his -> their. 2015-01-20 10:37:43 -05:00
Maarten Billemont
806a07135a Update 2.1-cli4 again. 2015-01-19 23:32:26 -05:00
Maarten Billemont
f6b2287778 Build fixes for iOS and Mac. 2015-01-19 23:30:19 -05:00
Maarten Billemont
f4e90bb839 Update 2.1-cli4 2015-01-19 23:23:10 -05:00
Maarten Billemont
21630e919b Standardize includes for other POSIX platforms. 2015-01-19 23:21:10 -05:00
Maarten Billemont
ae74ab6906 Site references to mpw-cli C packages. 2015-01-19 23:07:49 -05:00
Maarten Billemont
caf361cd10 Rename mpw formula. 2015-01-19 21:54:50 -05:00
Maarten Billemont
aeedc1946e Some audit fixes to mpw.rb. 2015-01-19 21:53:41 -05:00
Maarten Billemont
93ae31f679 An initial Homebrew formula for installing mpw. 2015-01-19 21:48:44 -05:00
Maarten Billemont
d5ff215da2 Support for passing the master password non-interactively for testing. 2015-01-19 21:34:54 -05:00
Maarten Billemont
b34f7377da Handle dependencies unpacked by a package manager. 2015-01-19 20:58:53 -05:00
Maarten Billemont
0c2e182039 Release a new C CLI and update links. 2015-01-19 17:22:05 -05:00
Maarten Billemont
438daf27ee Use anchor tags for anchors to avoid id collision. 2015-01-19 00:23:27 -05:00
Maarten Billemont
aa6634970a Fix anchors. 2015-01-19 00:17:14 -05:00
Maarten Billemont
9052416786 Update Java Desktop app. 2015-01-19 00:15:33 -05:00
Maarten Billemont
9d19eaf667 Some anchors. 2015-01-19 00:13:28 -05:00
Maarten Billemont
7ae9afa63a Merge commit '3d856b3' 2015-01-17 13:51:31 -05:00
Maarten Billemont
3d856b3773 Warnings update. 2015-01-17 13:51:22 -05:00
Maarten Billemont
7617b2382a Fix V0 C implementation. 2015-01-17 11:17:16 -05:00
Maarten Billemont
a03dcf6859 Ability to pass the algorithm version on the CLI. 2015-01-16 00:25:18 -05:00
Maarten Billemont
57769ba199 Algorithm versions in C and wire ObjC into C, remove ObjC algorithm implementation. 2015-01-15 17:43:41 -05:00
Maarten Billemont
6304b3a619 Looks like the default close operation is hide and WINDOW_CLOSING is only an interactive request to close the window. 2015-01-04 11:28:30 -05:00
Maarten Billemont
d1649f3c33 Just dispose on close and scope executors to a window, clean up on window hide. 2015-01-03 14:25:20 -05:00
Maarten Billemont
80f507b4cc Remove VERSION from project. 2015-01-02 13:41:29 -05:00
Maarten Billemont
f8a665db65 use libscryptenc-ios-sim for simulator builds. 2015-01-02 12:51:23 -05:00
Maarten Billemont
b15f2a8a26 Properly invoke the default close operation when dismissing the password frame. 2015-01-02 12:19:49 -05:00
Maarten Billemont
e9094097a2 Mask the generated password by default, provide a check box to unmask it. 2014-12-31 14:46:44 -05:00
Maarten Billemont
bea6ac5e68 Attempt to fix copy issue when Java app closes after copying. 2014-12-31 14:04:14 -05:00
Maarten Billemont
778533ac7f Fix log-in after entering the wrong master password. 2014-12-31 13:53:28 -05:00
Maarten Billemont
83fcde5bd0 Add new Mac OS X binary. 2014-12-31 13:44:02 -05:00
Maarten Billemont
c9ec5874d3 Add support for Crashlytics to Mac OS X app. 2014-12-31 13:02:23 -05:00
Maarten Billemont
4ce5fd25bc Allow importing without a KeyID, fix a possible deadlock and fix showing error messages + replace light font with regular on non-retina. 2014-12-29 16:37:58 -05:00
Maarten Billemont
1ed28ebc9b Update Master Password for Java GUI. 2014-12-29 16:32:48 -05:00
Maarten Billemont
c03199f7e5 Update directory to mpw.d and fix issue that caused only one user to be visible in the drop-down. 2014-12-28 14:46:20 -05:00
Maarten Billemont
9f10bcdec4 Bump cli2 to fix symlink issue. 2014-12-21 23:59:07 -05:00
Maarten Billemont
82c96ddfe3 Update distribute script to include source files for symlinks. 2014-12-21 23:58:33 -05:00
Maarten Billemont
c0fea076b9 Release 2.1-cli2 2014-12-21 23:50:41 -05:00
Maarten Billemont
b779ff5d1c Added C tests for mpw_tests.xml 2014-12-21 23:45:19 -05:00
Maarten Billemont
73c10906e3 Some better memory maintenance. 2014-12-21 12:37:21 -05:00
Maarten Billemont
0ccd545dd4 More restructuring and rewriting of the C code. 2014-12-20 14:30:34 -05:00
Maarten Billemont
49da0b47c7 Complete an initial rewrite/restructure of mpw.c 2014-12-20 00:21:03 -05:00
Maarten Billemont
672b28a5b7 Restructure, split up mpw cli from mpw core. 2014-12-19 23:15:32 -05:00
Maarten Billemont
2dbada3c7c Update build script to install header files in a shared include path, akin to how ObjC does. 2014-12-19 09:00:38 -05:00
Maarten Billemont
3dbc105fbd Update C code for inclusion in ObjC and update scrypt to colin's latest code. 2014-12-19 00:03:54 -05:00
Maarten Billemont
43d55211b0 Revert "Revert accidentally committed changes."
This reverts commit a62ae8c757.
2014-12-18 17:47:38 -05:00
Maarten Billemont
f170e9df69 Update Java GUI. 2014-12-17 00:44:48 -05:00
Maarten Billemont
1fbb6b0754 Clear the password input field and pop a warning when entering bad master password. 2014-12-17 00:31:34 -05:00
Maarten Billemont
4c526d6f08 Fixed a bug causing exceptions loading maximum security passwords. 2014-12-17 00:18:02 -05:00
Maarten Billemont
a62ae8c757 Revert accidentally committed changes. 2014-12-16 23:07:31 -05:00
Maarten Billemont
f2eb53569b Use ~/.mpwrc since ~/.mpw is used by other tools.. 2014-12-16 22:14:52 -05:00
Maarten Billemont
c2a6a3d035 Full ability to load, add and autocomplete sites from history. 2014-12-16 22:13:11 -05:00
Maarten Billemont
97dcc65eac Update install scripts for new env var names. 2014-12-16 08:54:58 -05:00
Maarten Billemont
1bd76dbb61 Read avatar from user export and allow user to modify it by clicking the picture. 2014-12-12 17:25:32 -05:00
Maarten Billemont
0fdf894bf0 Fix issue with passing context in Java algorithm and test case. 2014-12-12 10:54:28 -05:00
Maarten Billemont
19202e07d4 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-12-12 10:14:09 -05:00
Maarten Billemont
84b624aea2 WIP - integrate user and site storage through export files into Java Swing GUI. 2014-12-11 20:35:19 -05:00
Maarten Billemont
c7ac5087b3 Fix test cases loginName, securityAnswer and securityAnswer_context 2014-12-10 10:34:55 -05:00
Maarten Billemont
4ff8cd6d90 A persistence model for the Java implementation and ability to parse in and write out export files. 2014-12-08 11:11:29 -05:00
Maarten Billemont
3f4558da2b Standardize on a naming scheme: cipher -> template, userName -> fullName, element -> site. 2014-12-05 17:59:10 -05:00
Maarten Billemont
b976e79b0f Fix some mpw.c link errors.
[FIXED]     Libraries should be specified after the objects that need them for some compilers apparently..
[FIXED]     bool type requires stdbool.h, disable more color code when COLOR not defined.
[UPDATED]   Disable mpw_color by default as it doesn't link cleanly on some Linux'es for now..
2014-12-05 13:51:02 -05:00
Maarten Billemont
3d064fa68d A full test script for various inputs and a Java TestNG implementation that tests it. 2014-12-05 02:17:28 -05:00
Maarten Billemont
1a1e024178 Fix Java unit test expected values from C implementation's output. 2014-12-04 00:35:21 -05:00
Maarten Billemont
4876d62b56 Copy the string into masterPassword because the line is getting free'd. 2014-12-04 00:28:38 -05:00
Maarten Billemont
8006b7096f Make Java and C debug output comparable. 2014-12-03 23:36:18 -05:00
Maarten Billemont
a82ce7310d Remove plist dependency, fix length bug, import ciphers.plist.
[REMOVED]   Java code no longer depends on ciphers.plist and net.sf.plist.
[ADDED]     Java code now explicitly defines the algorithm's templates.
[FIXED]     Java code now properly counts the site name and user name's byte length.
[FIXED]     Java code now explicitly uses 32-bit integers.
2014-12-03 00:46:00 -05:00
Maarten Billemont
ae08cb62c5 Add the env variables to the usage output. 2014-12-03 00:40:54 -05:00
Maarten Billemont
c48fba6c01 No color fixes & malloc bug in .mpw reading.
[FIXED]     We weren't properly excluding all dependencies on ncurses when colors are not enabled.
[FIXED]     There was a memory realloc bug when reading multiple lines from ~/.mpw.
2014-12-02 20:46:53 -05:00
Maarten Billemont
3db25e7e3b Some more attempts at being better at memory handling + remove useless and untested cygwin stuff. 2014-11-23 14:01:29 -05:00
Maarten Billemont
1f7a49378b Allocate enough space for the NUL c-string delimitor. 2014-11-23 13:44:37 -05:00
Maarten Billemont
37ec21f5be Disable colors when output is not a terminal. 2014-11-23 13:33:09 -05:00
Maarten Billemont
2b8498f569 Support for patching dependencies + ARM patch for bcrypt. 2014-11-21 09:39:30 -05:00
Maarten Billemont
5c4fc61a12 Bump bashlib. 2014-11-21 08:15:51 -05:00
Maarten Billemont
c0ec65bbae Make identicon color an optional feature and specify the dependency. 2014-11-21 08:06:29 -05:00
Maarten Billemont
9ab1b2d47a Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-11-21 01:31:07 -05:00
Maarten Billemont
17d38235a1 Initial test of identicon support. 2014-11-21 01:30:47 -05:00
Maarten Billemont
1fe3edec04 oops - syntax error in build script. 2014-11-18 15:33:19 -05:00
Maarten Billemont
8dd932da31 Comment on what to do when libcrypto.a is in a non-standard path for now. 2014-11-18 09:56:53 -05:00
Maarten Billemont
71ba6bd502 Travis still noisy? 2014-11-18 08:19:13 -05:00
Maarten Billemont
33eab0f199 Work around the weirdest Xcode build failure: don't output :: STUFF :: from a build script or Xcode will fail it. 2014-11-18 08:13:39 -05:00
Maarten Billemont
7d6f2533db work around pinf hang under Travis by forcing the TERM to dumb. 2014-11-18 07:32:17 -05:00
Maarten Billemont
c6cd50379e exit before pinf 2014-11-18 07:23:26 -05:00
Maarten Billemont
fb86b3bc15 exit before pinf and cp 2014-11-18 07:21:56 -05:00
Maarten Billemont
964b6f050b exit before java -jar. 2014-11-18 07:17:28 -05:00
Maarten Billemont
617923557a exit after niftyninepatch. 2014-11-18 00:11:41 -05:00
Maarten Billemont
719deb7926 exit in front of niftyninepatch 2014-11-18 00:11:27 -05:00
Maarten Billemont
a51d2b5eb4 move exit down... 2014-11-18 00:10:00 -05:00
Maarten Billemont
1f1407f31f move exit down... 2014-11-18 00:04:12 -05:00
Maarten Billemont
afb0a0365a move exit down a bit.. 2014-11-17 23:59:11 -05:00
Maarten Billemont
834434a499 exit genassets before anything useful happens - this type of debugging is really lame. You suck, Travis. 2014-11-17 23:16:55 -05:00
Maarten Billemont
00033eca37 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-11-17 20:15:50 -05:00
Maarten Billemont
574f239545 cut genassets in half to debug Travis. 2014-11-17 17:42:32 -05:00
Maarten Billemont
99f5dfe040 Try without exec, now will you run it, Travis? 2014-11-17 17:35:39 -05:00
Maarten Billemont
c0e6e60a38 Revert "More debug attempts for Travis CI."
This reverts commit b656899532.
2014-11-17 17:35:08 -05:00
Maarten Billemont
b656899532 More debug attempts for Travis CI. 2014-11-17 17:28:06 -05:00
Maarten Billemont
dbd5265ee0 Try to debug Travis CI hang on genassets. 2014-11-17 17:12:40 -05:00
Maarten Billemont
09d67113a2 Fix deadlock when PSC's store becomes available. 2014-11-10 16:45:25 -05:00
Maarten Billemont
f0fa350e64 Fix mixed content and bad path for setImmediate-polyfill. 2014-11-10 16:44:37 -05:00
Maarten Billemont
435d72a509 Read the user's name and site name from stdin if not given. 2014-11-10 12:35:31 -05:00
Maarten Billemont
395f7c71a2 Switch more references to HTTPS. 2014-11-06 07:48:02 -05:00
Maarten Billemont
96b482d94b KCOrderedAccessorFix was forked. 2014-11-03 16:04:41 -05:00
Maarten Billemont
c9c9aec9dd Sync mpw-js to js.masterpasswordapp.com. 2014-11-03 15:56:46 -05:00
Maarten Billemont
7bb79c6a1e Use HTTPS for all download links on home page. 2014-11-03 12:12:05 -05:00
Maarten Billemont
4b2251d4fa Support for fuzzy searching on iOS. 2014-11-03 12:11:46 -05:00
Maarten Billemont
1c72643aaa Move mpw-js out of the homepage. 2014-11-02 10:27:02 -05:00
Maarten Billemont
acf9b4aec8 Fix Mac darkening & icon rounding. 2014-11-01 16:37:09 -04:00
Maarten Billemont
1f173d7586 Support for dark mode icon. 2014-10-30 21:05:13 -04:00
Maarten Billemont
34be1eac70 Mac LoginHelper distribution configuration. 2014-10-30 00:39:56 -04:00
Maarten Billemont
e1a9c8194c Bump xib. 2014-10-30 00:26:42 -04:00
Maarten Billemont
e18dee2242 Also try upgrading to V2 if migrationlevel is unset but a store is available. 2014-10-30 00:18:01 -04:00
Maarten Billemont
a38829c1e2 Match the define name to its value. 2014-10-29 21:55:18 -04:00
Maarten Billemont
8615f6af5d Fuzzy site name search and highlight fuzzy results. 2014-10-29 21:24:35 -04:00
Maarten Billemont
d642cb1aee Use exposure adjust for darkening without destroying dark backgrounds. 2014-10-28 17:20:38 -04:00
Maarten Billemont
2be2a19fa0 Build fixes and layout improvements for Mac on Yosemite. 2014-10-28 00:53:16 -04:00
Maarten Billemont
0d5b51ed8d Put Mac icon into AppIconSet 2014-10-26 13:26:41 -04:00
Maarten Billemont
c781bcf10a Move Info.plist update script into Scripts to share it between Mac and iOS. 2014-10-26 12:01:30 -04:00
Maarten Billemont
1c45a0df4a Don't crash if attempting to import with an invalid password type. 2014-10-26 10:54:28 -04:00
Maarten Billemont
6b16e4d606 Remove USM from Mac app. 2014-10-26 10:41:15 -04:00
Maarten Billemont
e837752777 Explicitly synchronize configuration updates and warn if it fails. 2014-10-24 00:35:05 -04:00
Maarten Billemont
84c23fa7f6 debug genassets. 2014-10-24 00:00:51 -04:00
Maarten Billemont
2b0cc8ec7b Reference mpw-js from the main page + interlace the images. 2014-10-23 22:17:17 -04:00
Maarten Billemont
6f77e1922b Remove adwords. 2014-10-23 21:57:03 -04:00
Maarten Billemont
653f90c59c Force a refresh of the referenced stylesheet and js. 2014-10-23 21:35:17 -04:00
Maarten Billemont
3076cc3de4 A few disclaimers on mpw-js. 2014-10-23 21:33:19 -04:00
Maarten Billemont
15c53c06c6 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-10-23 20:10:44 -04:00
Maarten Billemont
b3a886a6db mpw-js: A javascript implementation of Master Password. 2014-10-23 20:10:25 -04:00
Maarten Billemont
41ae6a5de5 Remove pushqueue/popqueue, not compatible with bash3 2014-10-23 17:29:14 -04:00
Maarten Billemont
92bd2cd016 Explicitly use sha256 digests. 2014-10-23 12:03:19 -04:00
Maarten Billemont
4b975b5b04 Fix pkg_sha of crypt_blowfish; verified by checking the signature of the package against crypt_blowfish-1.3.tar.gz.sign 2014-10-23 00:26:07 -04:00
Maarten Billemont
56f04a8924 xctool gets project targets confused; specify iOS project explicitly. 2014-10-23 00:14:45 -04:00
Maarten Billemont
3c2b5de4b8 Fix crash when clearing the pasteboard. 2014-10-22 23:32:25 -04:00
Maarten Billemont
33e1492b44 clean up todo. 2014-10-22 23:21:21 -04:00
Maarten Billemont
9384e27247 submodules needs to be explicitly true? + fix version numbering. 2014-10-22 23:10:07 -04:00
Maarten Billemont
a95561dd50 Re-enable submodule support in Travis; Pearl is no longer excessive. 2014-10-22 23:05:04 -04:00
Maarten Billemont
9d809f34d9 Remove MPCheckpoints, no longer useful. Perform pasteboard importing on a background thread. 2014-10-22 23:00:20 -04:00
Maarten Billemont
fc21bd959f Add a tip on how to solve a build error on the Raspberry Pi. 2014-10-22 22:29:05 -04:00
Maarten Billemont
2de17384ff More portable digest() 2014-10-22 22:02:17 -04:00
Maarten Billemont
85dab50996 More robust against exceptions and a few other fixes. 2014-10-22 21:54:48 -04:00
Maarten Billemont
bb97e8f3e8 Fix Core Data store migration code. 2014-10-22 20:26:22 -04:00
Maarten Billemont
f3d0368a75 Don't sync .git repos. 2014-10-22 16:03:40 -04:00
Maarten Billemont
283d555d3b Missing site resources. 2014-10-20 19:59:02 -04:00
Maarten Billemont
d909e64670 Add disclaimer. 2014-10-20 14:31:21 -04:00
Maarten Billemont
10f100186c Remove pushqueue for bash 3 compatibility. 2014-10-20 08:51:58 -04:00
Maarten Billemont
2af2351ebf Make usage text a bit more obvious. 2014-10-19 00:58:13 -04:00
Maarten Billemont
49b3fe7913 Add support for login names and security answers to C app. 2014-10-19 00:55:26 -04:00
Maarten Billemont
9d926be8ae Support for pre-downloaded dependency packages and digest verification.
[UPDATED]   Allow overriding of targets to build at command-line via target=X ./build
[ADDED]     Support pre-downloaded packages for integration with package managers.
[ADDED]     Support for package digest verification.
[UPDATED]   Skip fetching on in a method-specific way, more reliable.
2014-10-18 20:56:28 -04:00
Maarten Billemont
c3474de2ff FreeBSD build fixes. 2014-10-18 18:22:29 -04:00
Maarten Billemont
68b9b4e09a Fix git-svn/git checkouts of dependencies. 2014-10-18 17:13:01 -04:00
Maarten Billemont
b810c1032b Include signed version in release package. 2014-10-18 15:56:31 -04:00
Maarten Billemont
a4ab3c7bc9 Script to distribute C packages. 2014-10-18 15:42:49 -04:00
Maarten Billemont
039547b735 Check the presence of tools needed to build the C targets. 2014-10-18 15:38:51 -04:00
Maarten Billemont
6f741f6f2f Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-10-18 15:30:58 -04:00
Maarten Billemont
38d4b761b7 Remove binaries. I don't intend to maintain binary distributions at this point. 2014-10-18 14:36:05 -04:00
Maarten Billemont
18f8ebb9dc Fix check for whether a dependency was built + improved mpw-bench output. 2014-10-17 17:10:43 -04:00
Maarten Billemont
794d064a99 Merge pull request #91 from linwiz/master
Added information to the output of mpw-bench
2014-10-17 09:19:05 -04:00
linwiz
090b274363 Added information to the output of mpw-bench 2014-10-17 08:52:15 -04:00
Maarten Billemont
25ba87f119 Make mpw-bench optional. 2014-10-15 22:18:16 -04:00
Maarten Billemont
f0b659a0c7 Add bcrypt dependency and ability to compile arbitrary dependencies in C build script. 2014-10-15 22:17:49 -04:00
Maarten Billemont
7736788920 Disable debug verbosity by default. 2014-10-15 16:27:33 -04:00
Maarten Billemont
e3be98f3ad Added mpw-bench as an extra target. 2014-10-15 16:26:09 -04:00
Maarten Billemont
d9b1b44de0 Replace editline and readline with getpass. 2014-10-15 16:03:46 -04:00
Maarten Billemont
c3c2de5d14 Ensure master password isn't lost after ending editline context. 2014-10-15 15:37:29 -04:00
Maarten Billemont
6aa50bac04 Ensure we use the correct C language standard. 2014-10-15 15:32:10 -04:00
Maarten Billemont
5268039c3d A bunch of cross-platform fixes for mpw.c + make config file optional and read master password from input instead. 2014-10-15 14:00:44 -04:00
Maarten Billemont
0d66d4660e Add code to the build script for automatically fetching and building libscrypt. 2014-10-15 08:44:41 -04:00
Maarten Billemont
e981df3c8b Fixed type of level 3 attacker.
[FIXED]     Type of level 3 attacker was string instead of integer.
2014-10-13 23:39:07 -04:00
Maarten Billemont
543ebd4bac Update provisioning profiles. 2014-10-13 22:08:36 -04:00
Maarten Billemont
e6d21e1c1d Add new question cells and fix sizing issue with store cells.
[FIXED]     Cell sizing of autosized the store cells.
[IMPROVED]  Add new question rows as soon as the last question row is used.
2014-10-13 21:56:46 -04:00
Maarten Billemont
a3ebcf0608 Fix a few spelling mistakes. 2014-10-12 12:03:57 -04:00
Maarten Billemont
556d1d3d58 Make the site more mobile-friendly. 2014-10-07 19:55:36 -04:00
Maarten Billemont
979d3a2a5a Add fallback in case the video doesn't work. 2014-10-06 23:30:41 -04:00
Maarten Billemont
480e7f192a Added a new introduction video to the Master Password website. 2014-10-06 22:03:18 -04:00
Maarten Billemont
a18793b161 Update of the site to simplify understanding Master Password and how to use it. 2014-10-05 01:22:28 -04:00
Maarten Billemont
9b24efa65c Fix iOS 8 bug causing site search field to be auto-capitalized. 2014-10-01 07:35:57 -04:00
Maarten Billemont
3e217d5a69 Project configuration update. 2014-09-30 08:33:46 -04:00
Maarten Billemont
c8ca1c80e6 Remove generated resources from repository. 2014-09-30 08:25:47 -04:00
Maarten Billemont
88c18db010 Optimize icons. 2014-09-30 08:24:29 -04:00
Maarten Billemont
f909cdbae4 More icon fixes + don't delete store rows... 2014-09-30 08:20:35 -04:00
Maarten Billemont
8b8d5d325e Fix some warnings. 2014-09-30 00:09:40 -04:00
Maarten Billemont
c7670f47db Record the amount of fuel consumed and show status + icon update & genassets run script. 2014-09-30 00:01:33 -04:00
Maarten Billemont
f3f25f5890 Add question about hiding passwords to setup flow. 2014-09-28 22:57:38 -04:00
Maarten Billemont
3065433a37 Stop showing thanks tips after user opens thanks page. 2014-09-28 22:25:48 -04:00
Maarten Billemont
41b3964363 Lots of UI improvements and tips + parental gate, guide update.
[IMPROVED]  Emergency VC can now scroll when keyboard is up.
[IMPROVED]  Language of the guide + new updated screenshots.
[FIXED]     Size of guide cells on different devices.
[IMPROVED]  Don't show messages claiming login name was updated when nothing changed.
[FIXED]     Weird back-toggle bug when toggling site settings.
[ADDED]     Lots of handy tips throughout.
[ADDED]     Notification of new store features.
[FIXED]     Weird sizing issue & animation with store cells.
[ADDED]     Loading spinner while loading store products.
[ADDED]     Thanks link to store footer.
[FIXED]     Bought products should not respond to click, non-bought ones should.
[FIXED]     Fuel elapsed time counter was backward.
[ADDED]     Parental gate when deleting or resetting users.
[UPDATED]   App Icon background texture.
2014-09-28 22:15:55 -04:00
Maarten Billemont
5e8810c535 Dismiss popdown on sign out, fuel check date not recorded, avatar improvements. 2014-09-28 10:05:36 -04:00
Maarten Billemont
8c3dfc8510 Update of icon and launch image + background for iPhone 6 / 6+ 2014-09-28 01:53:50 -04:00
Maarten Billemont
b4b9ee3cb9 Import sites from pasteboard. 2014-09-27 20:29:58 -04:00
Maarten Billemont
da4bad7977 Fix a few build warnings, two-way site question relationship. 2014-09-27 16:30:17 -04:00
Maarten Billemont
984434cca4 Remove header hack to inset password cells, use collection layout instead. 2014-09-27 14:53:30 -04:00
Maarten Billemont
064122f36d Build fixes. 2014-09-27 12:52:17 -04:00
Maarten Billemont
5db083bf7c Improve notification registration and cleanup + fix removal of site questions. 2014-09-27 01:27:05 -04:00
Maarten Billemont
44f91e0618 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-09-26 00:32:19 -04:00
Maarten Billemont
6050b5d6fd Development fuel, store improvements and navigation fixes. 2014-09-26 00:32:07 -04:00
Maarten Billemont
8e3e77c2c1 Remove UbiquityStoreManager 2014-09-24 16:04:35 -04:00
Maarten Billemont
a2e71aa94d Merge branch 'master' of github.com:Lyndir/MasterPassword
Conflicts:
	MasterPassword/ObjC/iOS/MPPasswordsViewController.m
2014-09-24 16:02:29 -04:00
Maarten Billemont
a5bc2eb584 Store product thumbnails. 2014-09-24 08:00:10 -04:00
Maarten Billemont
9bb613a3b6 MPAlgorithm V2: handle multi-byte UTF-8 correctly by counting bytes, not characters. 2014-09-24 07:58:23 -04:00
Maarten Billemont
466863f8fd Improved overlay navigation, store refactoring and automatic sizing of store cells. 2014-09-24 01:07:02 -04:00
Maarten Billemont
fe5828c724 Fix removal of questions. Blast you Core Data. 2014-09-22 22:32:31 -04:00
Maarten Billemont
b3ec7a848d Make answers VC a pop-over. 2014-09-22 08:48:51 -04:00
Maarten Billemont
17734652b4 Completed answers generation. 2014-09-21 23:48:49 -04:00
Maarten Billemont
9e742fa40f Use fullDescription for all error logging. 2014-09-21 23:28:50 -04:00
Maarten Billemont
d03b1746e0 Handle failure to load store. 2014-09-21 23:11:05 -04:00
Maarten Billemont
58156be793 Generating security question answers for sites. 2014-09-21 22:45:21 -04:00
Maarten Billemont
d5a5cd7de4 Fix a few issues after element->site rename. 2014-09-21 14:09:43 -04:00
Maarten Billemont
2100662fb3 Add a model version for MPSiteQuestionEntity and element->site renames. 2014-09-21 13:56:37 -04:00
Maarten Billemont
248627aa92 Project cleanup. 2014-09-21 13:45:33 -04:00
Maarten Billemont
449ccaa3d4 Storyboard fixups. 2014-09-21 13:39:47 -04:00
Maarten Billemont
0a7465282b Prepare generate answers product. 2014-09-21 12:54:48 -04:00
Maarten Billemont
5b85ba3a4b Element -> Site 2014-09-21 11:47:53 -04:00
Maarten Billemont
b3a0b6a7c0 Element -> Site, site security question answers 2014-09-21 10:49:57 -04:00
Maarten Billemont
4396ce436e Element -> Site WIP 2014-09-21 10:39:09 -04:00
Maarten Billemont
68e6106ee7 Extract In-App logic into app delegate category & improvements to import file handling and advanced export + store fixes. 2014-09-21 10:29:18 -04:00
Maarten Billemont
4c12f368f5 Ability to generate pass phrases as well as names. 2014-09-21 01:57:45 -04:00
Maarten Billemont
0156f8c3c8 More store work.
[FIXED]     A strange issue with reloading password cells.
[FIXED]     Product identifiers and showing the first product in the store.
[ADDED]     Restoring purchases made from other devices.
[REMOVED]   iCloud entitlements.
2014-09-17 20:59:03 -04:00
Maarten Billemont
2e5cbac761 Added in-app purchase store and made generated logins a product. 2014-09-17 02:00:33 -04:00
Maarten Billemont
a043b7c049 Fixes to new store loading if not migrated. 2014-09-16 07:53:31 -04:00
Maarten Billemont
06c62f70ed Fixes to V0 algorithm debug log output. 2014-09-16 00:45:39 -04:00
Maarten Billemont
c97546a232 Improvements to login name editing, saving/generating. 2014-09-16 00:34:22 -04:00
Maarten Billemont
88fdc89f27 Removed iCloud + added generated login names.
[REMOVED]   UbiquityStoreManager and iCloud support.  Now using simplified local Core Data store logic.
[ADDED]     Generating site login names.
[IMPROVED]  Some refactoring and interface improvements for optionally generated user names.
2014-09-15 08:47:36 -04:00
Maarten Billemont
9109a59410 Fixes for better landscape sizing of avatar cells. 2014-09-12 17:13:33 -04:00
Maarten Billemont
61bed8b29c Fixes for positioning of avatars in different states. 2014-09-12 00:41:17 -04:00
Maarten Billemont
72b1d36626 Fix sizing issues with avatars on different size devices.
[FIXED]     Avatar cells badly sized on some size devices.
2014-09-11 20:31:23 -04:00
Maarten Billemont
6e14554f95 Weird layout problems now when building from Xcode 6.. 2014-09-11 00:26:01 -04:00
Maarten Billemont
fecbd2ea1c Some storyboard maintenance for Xcode 6. 2014-09-10 22:40:43 -04:00
Maarten Billemont
1c5f5675a5 Project update. 2014-09-10 22:18:26 -04:00
Maarten Billemont
76b717e06d Fix build for iOS simulator. 2014-09-10 22:07:51 -04:00
Maarten Billemont
eb48f749e2 Remove Love Lyndir from privacy statement, no longer used. 2014-09-09 08:35:32 -04:00
Maarten Billemont
398f7bdb66 login name UI improvements and saved key login fix.
[IMPROVED]  -saveContent now returns YES if successful and NO if nothing changed.
[FIXED]     Fix for unsetting the login key when key is saved due to a notification race.
[IMPROVED]  UI improvements for login name.
[IMPROVED]  Remove system fonts all-over and replace with Exo2.
[IMPROVED]  Various UI improvements and fixes throughout.
2014-09-08 00:15:18 -04:00
Maarten Billemont
d40ccee0fe Update of icons and site updates with new support and mac app store link. 2014-09-04 00:30:51 -04:00
Maarten Billemont
a481626f80 Small tweaks to avoid a rare crash during initialization of cells. 2014-09-03 19:29:46 -04:00
Maarten Billemont
24c48a78f8 Minor Pearl bump. 2014-09-02 23:50:32 -04:00
Maarten Billemont
edda3cf12a Fix the border radius of the iOS icon. 2014-09-02 23:48:04 -04:00
Maarten Billemont
6c2cd01015 Prettier password cells. 2014-09-02 23:19:34 -04:00
Maarten Billemont
c9988d8cc2 Fix for showing setup VC on landscape iPad + old -> new section objects crash. 2014-09-02 21:40:53 -04:00
Maarten Billemont
bc88daf08d Don't use old section info from an old NSFetchedResultsSectionInfo object. 2014-09-02 14:51:04 -04:00
Maarten Billemont
a8bb434ded Add mp.update.check property to disable update checking. 2014-08-31 22:14:18 -04:00
Maarten Billemont
1e8a832cba Bump lyndir POM to 1.20 to fix some warnings and dependency issues. 2014-08-31 21:55:37 -04:00
Maarten Billemont
4f70e0f676 Master Password Java GUI update. 2014-08-30 20:11:10 -04:00
Maarten Billemont
9d7799c814 Improved Master Password algorithm API & GUI improvements.
[IMPROVED]  Read the master password using Console, not stdin.
[IMPROVED]  Clear the site password when the dialog closes.
[IMPROVED]  Make the site password selectable.
2014-08-30 20:08:20 -04:00
Maarten Billemont
2adb74c971 Make log level configurable with -Dlog.level, default to INFO. Thanks @pitpalme. 2014-08-30 15:54:52 -04:00
Maarten Billemont
cc80a66331 Update of images on homepage. 2014-08-29 21:07:49 -04:00
Maarten Billemont
cf8ecb2952 Site style tweaks and Android beta link. 2014-08-28 20:10:53 -04:00
Maarten Billemont
adcea94a37 Master Password update on the site for Android & Java GUI. 2014-08-28 09:53:08 -04:00
Maarten Billemont
3ebef16007 Sign android release build and fix check for Apple classes in GUI. 2014-08-28 09:50:10 -04:00
Maarten Billemont
3225985e1e Fix update check. 2014-08-28 00:07:24 -04:00
Maarten Billemont
76280ac71c Update check for Java GUI + Copy password on Android + Native scrypt for Android. 2014-08-27 23:05:24 -04:00
Maarten Billemont
f47ff67ba9 Add tip to copy password & close app + less console verbosity in Java GUI. 2014-08-27 22:08:53 -04:00
Maarten Billemont
65cef6d8ed First working Master Password for Android, yay! 2014-08-26 19:54:33 -04:00
Maarten Billemont
89145d6e13 Prepare for Android development.
[FIXED]     Naming of avatar images.
[FIXED]     Dependency, SDK & other Maven configuration.
[UPDATED]   Dependencies changed to stable versions.
2014-08-24 22:43:34 -04:00
Maarten Billemont
63b4c605e2 OS X -> Mac 2014-08-24 00:22:03 -04:00
Maarten Billemont
b3b7858c1d Round-rect Mac icon. 2014-08-24 00:13:01 -04:00
Maarten Billemont
eb4ea08a8b Update Media.xcassets. 2014-08-24 00:01:17 -04:00
Maarten Billemont
51d61b8bc0 Mac Icon update. 2014-08-23 23:36:18 -04:00
Maarten Billemont
bddbd199e2 Type warning fixes. 2014-08-23 23:33:10 -04:00
Maarten Billemont
b579dac180 Icon update. 2014-08-23 19:17:41 -04:00
Maarten Billemont
609675f663 Minor type fixes. 2014-08-23 01:41:46 -04:00
Maarten Billemont
c57bd5d5d3 A few fixes to site import/export.
[FIXED]     A few core data issues.
[ADDED]     Avatar to export file.
[ADDED]     Generated site counter to export file.
[ADDED]     Site login name to export file.
2014-08-23 01:39:47 -04:00
Maarten Billemont
a4fe13842a Release build fixes. 2014-08-22 00:57:53 -04:00
Maarten Billemont
56bb5bf5db Provisioning profile update. 2014-08-22 00:55:01 -04:00
Maarten Billemont
f720d552bb Bump Pearl. 2014-08-22 00:53:11 -04:00
Maarten Billemont
ce8a00fd48 Minor fixes and guide pages update. 2014-08-22 00:51:36 -04:00
Maarten Billemont
d72defb0bc More optimal layoutIfNeeded. 2014-08-21 22:27:47 -04:00
Maarten Billemont
27f6bd7905 Edit indicator, cell reuse fix and item reloading improvement.
[ADDED]     Indicator when user needs to find the edit button to either set a password or login name.
[FIXED]     Cell reuse when changing between transient / element.
[IMPROVED]  Collection view item reloading now avoids reloading items that stay the same and animates better.
2014-08-21 21:51:47 -04:00
Maarten Billemont
2aebcadf70 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-08-21 00:31:59 -04:00
Maarten Billemont
cf750f30e0 Small fixes to the website. 2014-08-21 00:31:52 -04:00
Maarten Billemont
cf52221175 Deprecate iCloud and remove hardcoded absolute paths from lib dirs. 2014-08-21 00:30:38 -04:00
Maarten Billemont
adc79d331b Initial work on an Android master password app. 2014-08-21 00:26:47 -04:00
Maarten Billemont
942d10e7a2 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-08-20 15:22:31 -04:00
Maarten Billemont
aa60dcfbe4 The x template doesn't use all the symbols from the o template. 2014-08-20 15:22:08 -04:00
Maarten Billemont
a831e15b3e No more iCloud advertisement. 2014-08-11 21:56:50 +02:00
Maarten Billemont
18ae7a316f Master Password OS X on the website. 2014-08-11 21:49:00 +02:00
Maarten Billemont
7bcc631caf Build configuration for correct header copying and disable iCloud for Mac. 2014-08-11 21:14:30 +02:00
Maarten Billemont
caab474355 Fixed strength calculations, added a strength level and upgraded openssl to 1.0.1h 2014-07-28 18:53:50 -04:00
Maarten Billemont
2d4e26e009 Added time-to-crack.
[ADDED]     Compute time-to-crack for all passwords, including personal ones.
2014-07-26 01:26:33 -04:00
Maarten Billemont
7ce8df664c Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-07-21 22:58:18 -04:00
Maarten Billemont
6597a44096 Change type of sites and edit password / login name. 2014-07-21 22:57:57 -04:00
Maarten Billemont
b481af2a51 Serious rewrite of site configuration UI. 2014-07-20 23:54:32 -04:00
Maarten Billemont
d35434705c Minor change. 2014-07-18 22:44:41 -04:00
Maarten Billemont
512f6faf84 Deprecating iCloud on Mac. 2014-07-18 22:04:10 -04:00
Maarten Billemont
60ecd8181e track outbound links. 2014-07-18 12:03:27 -04:00
Maarten Billemont
31b2f22ded Bump css version. 2014-07-18 10:06:02 -04:00
Maarten Billemont
9d5c2e29af Fix play icon on video button. 2014-07-18 10:05:07 -04:00
Maarten Billemont
3740ade240 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-07-18 09:45:10 -04:00
Maarten Billemont
9f2c83e4a9 Master Password video on index page. 2014-07-18 09:45:05 -04:00
Maarten Billemont
82195ee090 Site: Leaning laptop main image. 2014-07-18 09:43:40 -04:00
Maarten Billemont
eb2e070fe3 Site: known issues. 2014-07-17 14:37:15 -04:00
Maarten Billemont
14311dfe66 Fix weirdly added excess statement... 2014-07-02 00:00:12 -04:00
Maarten Billemont
10838aad00 Remove stale Love Lyndir references. 2014-07-01 23:56:44 -04:00
Maarten Billemont
d340278ec5 Did Travis CI fix their shell escaping? 2014-07-01 23:46:42 -04:00
Maarten Billemont
2eb074be87 Some fixes to the Java GUI. Thanks cuardin!
[UPDATED]   Allow lookup by short name.
[FIXED]     GUI only supports generated types, only show generated types in its list.
[UPDATED]   Update site password when type changes.
[FIXED]     Exceptions on illegal input arguments for generation, eg. empty site name.
2014-07-01 12:41:35 -04:00
Maarten Billemont
b84c9b79c8 Travis fix attempt. 2014-07-01 01:13:16 -04:00
Maarten Billemont
c367d5e6cb Small tip tweak. 2014-06-30 22:56:18 -04:00
Maarten Billemont
f8973d6c52 Added some general usage tips. 2014-06-30 21:32:17 -04:00
Maarten Billemont
beaf4e67e7 Small UI tweaks. 2014-06-30 21:12:37 -04:00
Maarten Billemont
06a150792d Catch commands when sites table is active.
[REMOVED]   Love Lyndir, just linking to http://thanks.lhunath.com now.
[UPDATED]   PearlString -> strf
[ADDED]     Catching commands when the sites table view is active too (enter/esc/..)
2014-06-30 21:00:25 -04:00
Maarten Billemont
9816e783e7 Fixed a sizing issue with the new icons. 2014-06-30 00:23:02 -04:00
Maarten Billemont
8b26c301cf Updated icon. 2014-06-30 00:17:03 -04:00
Maarten Billemont
6ddd608a3f Provisioning profiles update. 2014-06-29 23:30:00 -04:00
Maarten Billemont
f1a72d8160 Initial window improvements, reveal and reset master password.
[FIXED]     Initial intro window didn't always show up reliably.
[ADDED]     Ability to temporarily reveal master password while typing it.
[IMPROVED]  When you go down the sites list, fade out the fade-out gradient to prevent the selection from becoming invisible.
[ADDED]     Ability to reset your master password.
[UPDATED]   Initial screenshot of Master Password for Mac and iPhone.
2014-06-29 23:18:25 -04:00
Maarten Billemont
6d4d57441b Usage tip on hide passwords. 2014-06-29 00:29:05 -04:00
Maarten Billemont
971538d6b5 Remove dialog & add import/export
[REMOVED]   Mac password Dialog.
[ADDED]     Mac sites import / export.
[FIXED]     Copying of hidden passwords.
2014-06-28 23:45:06 -04:00
Maarten Billemont
34d8dc375f Update screen capture code to accurately capture the active display only. 2014-06-28 00:04:40 -04:00
Maarten Billemont
f294a8c9f5 hidePasswords, preferences, UI improvements.
[ADDED]     hidePasswords to Mac app for hiding the passwords in the large passwords display, hold alt to reveal.
[ADDED]     Way to easily open the Mac app's preferences.
[IMPROVED]  Use transparent main window to improve the blur effect.
[ADDED]     Key equivalent coach marks when holding alt.
[FIXED]     Don't change sites table when site text field loses focus.
2014-06-26 23:13:21 -04:00
Maarten Billemont
2bd4d57869 Mention IRC channel on site. 2014-06-26 01:59:09 -04:00
Maarten Billemont
c7344dbb0c Small usage tip. 2014-06-26 01:44:53 -04:00
Maarten Billemont
97809a1bc7 Added fancy password display. 2014-06-26 01:35:05 -04:00
Maarten Billemont
5056f9e2e4 Add missing features to new Mac UI: changing password type, setting custom passwords, deleting sites. 2014-06-26 01:19:42 -04:00
Maarten Billemont
150304941c UI changes to the results table. 2014-06-25 14:14:56 -04:00
Maarten Billemont
ff36f6ce87 The search for a background that works on all screens ... 2014-06-24 22:00:33 -04:00
Maarten Billemont
6422084fa0 UI improvements to the Mac app. 2014-06-24 20:30:15 -04:00
Maarten Billemont
651a398798 More Mac GUI work. 2014-06-24 10:47:04 -04:00
Maarten Billemont
31b667c7f7 More work on the experimental new Mac gui. 2014-06-24 00:55:08 -04:00
Maarten Billemont
10affd615c Remove TestFlight. 2014-06-21 23:12:14 -04:00
Maarten Billemont
126c962a98 Disable cloudSwitch when iCloud is unavailable. 2014-06-21 23:04:56 -04:00
Maarten Billemont
2d6a298095 Provisioning profile update. 2014-06-21 22:16:19 -04:00
Maarten Billemont
cc086e2dff A step-by-step guide, fix setup appearance + fix capitalization of master password.
[ADDED]     A new step-by-step guide which uses images and text to explain the basics of Master Password.
[FIXED]     The setup flow didn't appear anymore.
[FIXED]     When creating a new user, the master password field was auto-capitalized.
2014-06-21 22:00:27 -04:00
Maarten Billemont
c5fc87b7b5 An experimental new mac ui that blurs the whole screen. 2014-06-21 21:56:28 -04:00
Maarten Billemont
1433c0851e Crashlytics update. 2014-06-15 20:26:07 -04:00
Maarten Billemont
c60780a197 Hide passwords, placeholder visibility, cancel search, copy login and dark keyboard.
[ADDED]     Option to hide passwords and reveal with long-touch.
[IMPROVED]  More visible placeholder text.
[ADDED]     Cancel button on search field.
[ADDED]     Ability to copy user name.
[UPDATED]   Use dark style keyboard throughout to avoid flickery switches.
[FIXED]     Smaller ui fixes.
2014-06-15 19:51:03 -04:00
Maarten Billemont
bb48771989 Small main context fix. 2014-06-15 11:56:29 -04:00
Maarten Billemont
5466e48629 Allow leaving the master password empty in the config file for the GUI. 2014-06-15 00:05:45 -04:00
Maarten Billemont
d4969a776a Update GUI jar on site. 2014-06-14 23:37:07 -04:00
Maarten Billemont
bb81f5bd5b Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-06-14 23:35:38 -04:00
Maarten Billemont
c38920f238 Improve reliability with regards to bad config files. 2014-06-14 23:33:00 -04:00
Maarten Billemont
be0ae7ff45 UI improvements for the Java GUI. 2014-06-11 09:16:24 -04:00
Maarten Billemont
6808016ab7 Added support for the C CLI's ~/.mpw config file to speed up sign-in to the GUI. 2014-06-11 01:45:31 -04:00
Maarten Billemont
d3c2698790 Add FreeBSD CLI binary. 2014-06-10 16:33:12 -04:00
Maarten Billemont
d1cc9481c3 Small C build and script fixes. 2014-06-10 16:26:24 -04:00
Maarten Billemont
cced75cdfe Update site with different Master Password options. 2014-06-08 23:49:49 -04:00
Maarten Billemont
b74bc79699 A basic cross-platform GUI for the Master Password generation algorithm. 2014-06-08 16:39:26 -04:00
Maarten Billemont
585268eb0f Update AdHoc provisioning. 2014-06-07 20:16:06 -04:00
Maarten Billemont
a713a639cd Added "delete user", fixed some minor UI issues. 2014-06-07 20:13:53 -04:00
Maarten Billemont
113c3790fb Added OS X precompiled binary package. 2014-06-07 15:53:41 -04:00
Maarten Billemont
d732b03828 Finished the C implementation & CLI tool. Providing an OS X binary. 2014-06-07 15:51:11 -04:00
Maarten Billemont
cf9dabcc82 Closed Mac beta due to overwhelming demand! 2014-06-07 13:03:12 -04:00
Maarten Billemont
2bc357cee6 WIP - Initial complete C implementation that's still buggy and generates broken passwords, yay. 2014-06-07 01:27:18 -04:00
Maarten Billemont
c4dca14800 Merge branch 'crashlytics-196' 2014-06-05 22:41:44 -04:00
Maarten Billemont
d8e2707ac0 Fixed crash when scrolling to first element of transient site.
[FIXED]     The first cell of the transient site isn't a Delete button, this caused a crash due to it being rendered with an unexpected type.
2014-06-05 22:41:28 -04:00
Maarten Billemont
25df56f90a Merge branch 'crashlytics-198'
Conflicts:
	External/Pearl
2014-06-05 22:03:32 -04:00
Maarten Billemont
2006e382d4 Hopefully fixed issue with rendering maximum security cells re-used from "new site" cells.
[FIXED]     When a "new site" cell gets recycled as a "maximum security" entity's cell, we may not be able to scroll to the cell index for the type because the collection view's cell indexes weren't updated yet.
2014-06-05 22:00:20 -04:00
Maarten Billemont
98bffa3755 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-06-05 21:44:23 -04:00
Maarten Billemont
789aa26066 Fix infinite loop when enabling iCloud.
[FIXED]     When enabling iCloud and setting the local user defaults, we re-started enabling iCloud and updating local user defaults.
2014-06-05 21:43:06 -04:00
Maarten Billemont
773058da78 WIP - remove dependency on ciphers.plist. 2014-06-05 17:49:16 -04:00
Maarten Billemont
339ef8d1bc Small improvements to the Internet Defense League code snippet. 2014-06-05 17:48:07 -04:00
Maarten Billemont
db55634ab2 Update logo. 2014-06-04 00:21:07 -04:00
Maarten Billemont
c3364bbbef Fix link opening and popup dismissal bugs. 2014-06-03 23:58:16 -04:00
Maarten Billemont
74e8001506 Site style, description and link updates. 2014-06-03 23:57:39 -04:00
Maarten Billemont
c1c15ddb89 Clean up old UI.
[ADDED]     Password strength to type cells.
[FIXED]     Lots of misc UI fixes.
[ADDED]     Footer links in pull-down.
2014-06-03 21:04:22 -04:00
Maarten Billemont
c8eb2fdde7 Saved passwords login.
[FIXED]     Some crashes.
[ADDED]     Support for saved passwords login.
2014-06-01 22:45:29 -04:00
Maarten Billemont
da7abf1030 Try to fix login item code signing. 2014-05-20 01:20:03 -04:00
Maarten Billemont
8250e9b2c4 Update provisioning profile and sign mac adhoc with dev too (adhoc doesn't allow icloud apps). 2014-05-19 15:13:47 -04:00
Maarten Billemont
e97d6bded4 Project configuration update. 2014-05-19 14:41:45 -04:00
Maarten Billemont
8805a411ba Show all when empty and fix UI updates.
[FIXED]     Updating UI when changing entity model.
[UPDATED]   Show all recent sites when query is empty.
2014-05-19 14:37:05 -04:00
Maarten Billemont
a1ca633aaf Test for TestFlight Application Token. 2014-05-18 08:39:11 -04:00
Maarten Billemont
78d5fc0904 Fix a bunch of warnings... 2014-05-18 00:19:36 -04:00
Maarten Billemont
d9e251c2cd Updated profiles. 2014-05-17 23:53:41 -04:00
Maarten Billemont
fe2b6024bc Remove Localytics and Google+ entirely. 2014-05-17 23:52:51 -04:00
Maarten Billemont
1be65c0969 Merge branch 'new-storyboard'
Conflicts:
	External/LoveLyndir
	External/Pearl
2014-05-17 20:13:51 -04:00
Maarten Billemont
557eb95c7e Login name fixes and coachmark improvements.
[IMPROVED]  Coachmark improvement and animation.
[UPDATED]   Password cell hierarchy refactoring and improvements.
[FIXED]     Login name button.
2014-05-17 20:12:59 -04:00
Maarten Billemont
9941dba008 Clean up classes after removing the small password cell. 2014-05-13 22:56:06 -04:00
Maarten Billemont
fa57b8817b Bugfixes with regards to swiping password types. 2014-05-13 07:27:11 -04:00
Maarten Billemont
943c378206 Delete site WIP. 2014-05-10 21:42:11 -04:00
Maarten Billemont
b53de7a648 Rotation and marquee link.
[UPDATED]   Different Crashlytics for Mac/iOS.
[UPDATED]   Mac build fixes.
[FIXED]     Layout on rotation.  WIP.
[ADDED]     Link on marquee to thanks.lhunath.com.
2014-05-10 09:18:46 -04:00
Maarten Billemont
09afe61a4c Fix .mpw parsing. 2014-05-06 17:21:12 -04:00
Maarten Billemont
7e96496614 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-05-05 11:18:19 -04:00
Maarten Billemont
d43c19a749 Add C implementation of Master Password. 2014-05-05 11:16:59 -04:00
Maarten Billemont
989cafda71 Add "Internet Defense League" snippet. 2014-05-05 11:15:57 -04:00
Maarten Billemont
e165c6941d Merge branch 'new-storyboard' of github.com:Lyndir/MasterPassword into new-storyboard 2014-04-26 23:24:29 -04:00
Maarten Billemont
9105055ff4 Hopefully fixed an odd PearlLogger bug. 2014-04-26 16:29:13 -04:00
Maarten Billemont
6345899783 Fixed a crash on enumerateCloudStores if iCloud is disabled. 2014-04-26 15:01:24 -04:00
Maarten Billemont
b1daeaf8ed Type fixes. 2014-04-26 14:35:38 -04:00
Maarten Billemont
9fee4a2bbe Fixed critical issue with storing passwords & inconsistency recovery + dictation support.
[FIXED]     Fixed an issue that caused stored passwords to be saved without encryption.
[ADDED]     Logic to check for any data inconsistencies and fix them.
[ADDED]     Support for using dictation in site search box.
2014-04-26 14:03:44 -04:00
Maarten Billemont
fc82790b8c Mac fixes + enabled stored default types. 2014-04-25 20:02:58 -04:00
Maarten Billemont
d95e5ec263 Bump TestFlightSDK to 3.0.0 2014-04-24 22:17:40 -04:00
Maarten Billemont
99456a35ab Remove Google+, DCIntrospect. 2014-04-24 22:12:18 -04:00
Maarten Billemont
b4e052fc9d Small type fixes. 2014-04-24 22:03:23 -04:00
Maarten Billemont
d3852dc78c Small type fix. 2014-04-24 22:00:38 -04:00
Maarten Billemont
f41b7813f9 Code signing configuration update. 2014-04-24 21:59:06 -04:00
Maarten Billemont
6df4a13d93 Remove DCIntrospect now that we have Reveal. 2014-04-24 21:54:05 -04:00
Maarten Billemont
aa461b73c8 Fixed sending emails when the key window is an alert window + added coachmarks. 2014-04-24 21:43:47 -04:00
Maarten Billemont
e070082f4a Restructured passwords UI a bit for a saner nav bar. 2014-04-21 23:35:29 -04:00
Maarten Billemont
079434d62b Fixed pull-down, added sections for settings and logs. 2014-04-20 11:09:49 -04:00
Maarten Billemont
f57de77545 Permanent IDs are now properly generated before save. 2014-04-15 01:07:46 -04:00
Maarten Billemont
18657271ba Fixed MOC hierarchy, saving and permanent object ID resolution. 2014-04-15 00:26:13 -04:00
Maarten Billemont
11d1dc711d Remove status bar from login screen. 2014-04-13 15:45:08 -04:00
Maarten Billemont
965d5efe7f Dismiss emergency generator when deactivated. 2014-04-13 14:06:33 -04:00
Maarten Billemont
87b01fcaaf Operational emergency generator. 2014-04-13 13:04:18 -04:00
Maarten Billemont
b2624c7572 Emergency generator, avatar change, improvements.
[ADDED]     Ability to change avatar while creating new user.
[FIXED]     Transition oddness.
[IMPROVED]  Remove passwordsVC while not needed.
[ADDED]     Emergency generator.
2014-04-12 14:43:41 -04:00
Maarten Billemont
bd37f1d6a7 Completed password cell handling and misc UI and moc update improvements.
[UPDATED]   Make private moc parent of all private blocks to avoid blocking the main thread for writes, update the main moc on private moc updates.
[FIXED]     Don't cause a crash on elements with a bad type.
[UPDATED]   Improved cell handling and UI update handling.
[UPDATED]   Replace FontReplacer with moarfonts to fix issues in UICollectionViewCells.
2014-04-06 23:34:18 -04:00
Maarten Billemont
f475c15360 Dismiss search when tapped outside. 2014-03-20 16:49:33 -04:00
Maarten Billemont
d3d4aeea41 Fix avatar item size to collection view size. 2014-03-20 08:42:15 -04:00
Maarten Billemont
5913ce80e5 full-height avatar collection view + iphone 4 height/keyboard fix. 2014-03-20 08:13:06 -04:00
Maarten Billemont
4c8bed2826 New passwords display in collection view. 2014-03-20 07:15:37 -04:00
Maarten Billemont
d036b43d6f Updated animations for activation of the passwords VC and fancier focussed user. 2014-03-19 20:09:25 -04:00
Maarten Billemont
318aca4d8f WIP - new UI for Master Password. 2014-03-15 20:38:14 -04:00
Maarten Billemont
060c9f91f3 "gmail.com" in guide search bar, iCloud description and tip tooltip.
[UPDATED]   Layout of setup on 4" iPhones.
[UPDATED]   iCloud description text.
[UPDATED]   Show "gmail.com" in the guide's search bar.
[ADDED]     A tooltip on the tip button.
2014-03-08 16:37:36 -05:00
Maarten Billemont
4184f609d6 Fixed updating search results when query is no match or element deleted.
[FIXED]     Make search results empty when no results.
[FIXED]     Update search results upon deletion.
2014-02-28 20:44:29 -05:00
Maarten Billemont
658d710847 Cloud and initial window improvements.
[ADDED]     Advanced option to mark self as corrupt.
[ADDED]     Tell user initial cloud sync can take a moment.
[IMPROVED]  Initial window now visible on full-screen spaces.
[FIXED]     User name label.
2014-02-22 18:27:14 -05:00
Maarten Billemont
3fa9843855 Improved site operations UI.
[IMPROVED]  New UI for site operations.
[ADDED]     Ability to delete a site.
2014-02-21 00:19:24 -05:00
Maarten Billemont
de3f51b447 Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-02-20 07:29:27 -05:00
Maarten Billemont
43c32e0f4c Improved input handling. 2014-02-20 07:29:05 -05:00
Maarten Billemont
775a6fd4ea Collection-view for elements and swipe to modify.
[ADDED]     NSCollectionView for navigating between elements.
[ADDED]     Mac: Functional buttons for changing type, loginName and counter.
2014-02-19 00:59:57 -05:00
Maarten Billemont
4f594c8c1d Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-02-13 17:53:42 -05:00
Maarten Billemont
ebadac8cd8 "Get it for" on new site pages. 2014-02-13 17:53:06 -05:00
Maarten Billemont
c48bed5ebd Add license to site. 2014-02-13 07:44:02 -05:00
Maarten Billemont
4f3efde6f0 Rewrite Mac UI for better multiple site handling. 2014-02-12 00:13:12 -05:00
Maarten Billemont
5b4e86a90a iOSPorts is no longer a requirement + fix some Pearl API. 2014-02-11 08:28:45 -05:00
Maarten Billemont
2be83752db Merge branch 'master' of github.com:Lyndir/MasterPassword 2014-02-10 22:45:13 -05:00
Maarten Billemont
bd1a0f4e25 Fix Mac provisioning. 2014-02-10 22:45:05 -05:00
Maarten Billemont
70cd397591 Get it links on the site. 2014-02-10 09:25:35 -05:00
Maarten Billemont
1120529e34 Added an FAQ page to the homepage.
[ADDED]     FAQ: Answers common questions, most importantly, how to pick a master password.
2014-02-09 22:26:12 -05:00
Maarten Billemont
f57415a08b Security page improvements.
[ADDED]     Table of contents.
[FIXED]     Inline header style fixes.
[ADDED]     Trade-offs.
2014-02-09 17:57:20 -05:00
Maarten Billemont
f9da568bfd Security page improvements.
[UPDATED]   Linguistic improvements to security page.
[ADDED]     Explanation why MP is cryptographically secure.
[ADDED]     Paragraph about Silent Circle and Lavabit to trust section.
[ADDED]     Summary of MP's security features.
[ADDED]     Brief prelude about account security.
2014-02-09 15:44:12 -05:00
Maarten Billemont
39c9f8c5a0 Explain all the security properties of the Master Password solution.
[ADDED]     security.html to the site.
2014-02-07 01:02:43 -05:00
Maarten Billemont
a645e22973 Bump Crashlytics. 2014-01-26 18:57:26 -05:00
Maarten Billemont
eaf86d3348 Use gittip.com instead of Love Lyndir. 2014-01-26 18:55:08 -05:00
Maarten Billemont
2565321a4a Bump TestFlightSDK. 2014-01-26 18:48:05 -05:00
Maarten Billemont
ec828a82fd Build Master Password iOS scheme. 2014-01-26 12:14:33 -05:00
Maarten Billemont
411aa41226 Remove private 'Press' repo. 2014-01-26 12:09:36 -05:00
Maarten Billemont
00b164058d Check out dependencies using script, not git submodule init directly. 2014-01-26 12:03:23 -05:00
Maarten Billemont
9808613c75 Prepare for Travis-CI. 2014-01-26 11:57:57 -05:00
Maarten Billemont
1d20d81652 Bump libraries. 2013-12-23 10:31:06 -05:00
Maarten Billemont
f5c66ff35a Merge branch 'master' of github.com:Lyndir/MasterPassword
Conflicts:
	.gitmodules
2013-12-19 08:17:29 -05:00
Maarten Billemont
4c3d3234f5 Fixed submodule path for LoveLyndir. 2013-12-19 08:16:39 -05:00
Maarten Billemont
d543173b18 API and libraries bump. 2013-12-16 09:07:01 -05:00
Maarten Billemont
d8578e0162 USM fix and misc fixes.
[UPDATED]   UbiquityStoreManager to fix "bad file descriptor" errors.
[FIXED]     Crashlytics script when plist is empty.
[FIXED]     Missing DCIntrospect in updateDependencies.
[UPDATED]   Project configuration.
2013-12-03 20:34:48 -05:00
Maarten Billemont
d665833eba Add masterpassword CLI tool to website. 2013-12-03 20:29:26 -05:00
Maarten Billemont
33e25a5fed CLI tool install script.
[UPDATED]   Templates are now in ciphers.plist.
[ADDED]     Install script for Java-based mpw CLI tool.
[UPDATED]   Java tool is now bundled in a single executable self-containing JAR.
2013-12-03 08:16:32 -05:00
Maarten Billemont
c0737de939 Fix LoveLyndir submodule checkout. 2013-11-29 20:43:19 -05:00
Maarten Billemont
a18679eba8 Fix typo. 2013-11-17 12:49:15 -05:00
Maarten Billemont
ce321aeceb Make sure symbols of libs still exist in .app.
[FIXED]     Don't strip libs, only .app.
2013-11-16 16:36:46 -05:00
Maarten Billemont
6074547f64 Small fixes and privacy policy.
[UPDATED]   Reload users if the selected user can't be found.
[ADDED]     Privacy policy to the website.
[UPDATED]   Pearl - PearlOverlay from main thread.
2013-11-16 16:35:14 -05:00
Maarten Billemont
8432932cb7 Improved icons. 2013-11-09 21:14:23 -05:00
Maarten Billemont
f8dccc04d7 Minor versions 0-padded to 2 digits.
[FIXED]     Automatic app version calculator broke for minor versions < 10... moar hacks.
2013-11-09 21:04:47 -05:00
Maarten Billemont
b38ef59c93 Cleaner iOS icon for iOS 7. 2013-11-09 20:50:53 -05:00
Maarten Billemont
c1162c76d3 LoveLyndir & USM fixes.
[IMPROVED]      Sped up emergency display.
[UPDATED]       LoveLyndir and USM bump for fixes.
2013-11-09 20:18:36 -05:00
Maarten Billemont
231426d5b3 Add LoveLyndir module. 2013-11-09 19:54:55 -05:00
Maarten Billemont
783eb95438 LoveLyndir bump. 2013-11-07 22:07:46 -05:00
Maarten Billemont
7bdc3e153d Removed NSURL+UbiquityStoreManager from USM. 2013-11-07 22:06:06 -05:00
Maarten Billemont
28460d4576 Handle StoreUUID conflicts and new (offline) devices. 2013-11-07 22:03:34 -05:00
Maarten Billemont
396f6fa7bd Navbar overlap in all-sites VC.
[FIXED]     Navbar hack in all-sites causing overlap on device in iOS 7.
[UPDATED]   iCloud defaults to off.
2013-11-04 08:22:30 -05:00
Maarten Billemont
e39eafee7f Importing sites, activity in iOS 7, wipe cloud, love lyndir.
[FIXED]     Bugs when importing mpsites when the user doesn't exist yet.
[FIXED]     Activity now displayed using PearlOverlay, PearlAlert broke in iOS 7 for activity.
[ADDED]     Advanced option to wipe cloud container.
[UPDATED]   Love Lyndir completion.
2013-10-30 23:37:12 -04:00
Maarten Billemont
f1549fe922 Explain other solutions to the iCloud sites problem.
[UPDATED]   Site explains other solutions to iCloud sites disappearing.
2013-10-18 11:13:02 -04:00
Maarten Billemont
b16c539607 Initial LoveLyndir integration. 2013-10-18 01:16:26 -04:00
Maarten Billemont
b11b33da5f Fix potential crash due to reloading of main view and gesture recognizers.
[MOVED]     Search delegates and controllers and gesture recognizers are now fully handled by the storyboard.
2013-10-17 08:15:29 -04:00
Maarten Billemont
6e9cd5a1f5 Fixed app review URL.
[FIXED]     Review button from within app wasn't working anymore on iOS 7.
2013-10-05 21:25:11 -04:00
Maarten Billemont
b67132671a Modernized Obj-C syntax.
[UPDATED]   Modernized Obj-C syntax.
2013-09-27 21:23:52 -04:00
Maarten Billemont
14e34e8e7a Debug an issue with iOS 6 -> iOS 7 cloud store migration. 2013-09-27 20:06:07 -04:00
Maarten Billemont
16f5ab29fa Fix EXCLUDED_SOURCE_FILE_NAMES. 2013-09-22 23:58:21 -04:00
Maarten Billemont
2af717fe5e Bump USM. 2013-09-22 23:56:19 -04:00
Maarten Billemont
c5be6bd742 Fixed local store migration and possible crash.
[FIXED]     Migration to local store.
[FIXED]     Potential crash when enumerating sheets to dismiss.
2013-09-22 23:46:06 -04:00
Maarten Billemont
693eddb578 Bump libraries. 2013-09-22 01:12:19 -04:00
Maarten Billemont
46e5bc2cbf Bump Pearl. 2013-09-21 22:13:32 -04:00
Maarten Billemont
f11afaaa45 Bump Pearl. 2013-09-21 10:46:27 -04:00
Maarten Billemont
cf64ce96f2 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-09-21 10:44:04 -04:00
Maarten Billemont
b1eae1b06a Bump libs. 2013-09-21 10:43:39 -04:00
Maarten Billemont
d19af3aba8 Fixes for 64-bit and ubiquity logging.
[ADDED]     Debugging with DCIntrospect and Reveal.
[REMOVED]   A bunch of google+ files that are no longer necessary.
[FIXED]     Type and formatting fixes for 64-bit platform types.
[UPDATED]   Production logging of what StoreManager is doing to help people with trouble out.
[ADDED]     Log reason for ubiquity error to checkpoint.
2013-09-21 10:34:48 -04:00
Maarten Billemont
ece5341e27 Cloud store recovery procedure.
[ADDED]     Describe the procedure to recover cloud stores on the website.
2013-09-20 19:25:53 -04:00
Maarten Billemont
7f9aaf4642 Submodule fixes.
[UPDATED]   InAppSettingsKit now uses the lhunath repo.
[UPDATED]   Fix to updating submodule repo URLs in updateDependencies.
[UPDATED]   Minor fix to PearlEmail.
2013-09-19 11:27:47 -04:00
Maarten Billemont
d59c3690d4 Bump Pearl. 2013-09-18 00:22:47 -04:00
Maarten Billemont
37070e482d Fixed a bunch of UI quirks, iOS 6 & 7.
[FIXED]     UI Quirks in iOS 6 and iOS 7.
2013-09-18 00:21:52 -04:00
Maarten Billemont
7fd322a5c6 Fixed icon and version references in Info.plist.
[FIXED]     Remove obsolete icon Info.plist keys.
[FIXED]     Auto-generated CFBundleVersion hash->decimal must be 9 digits long or version bump may end up lowering version number.
2013-09-17 00:13:21 -04:00
Maarten Billemont
07dd98823f Fixes to migration of local store from old Master Password model persistence models. 2013-09-16 23:18:01 -04:00
Maarten Billemont
40d6019f71 Improvements to store migration.
[IMPROVED]  Don't ask to migrate store when there's no sites in it.
2013-09-15 23:14:51 -04:00
Maarten Billemont
32ec0038b6 Bump USM. 2013-09-14 20:24:07 -04:00
Maarten Billemont
99a1d505d3 Fix a deadlock.
[FIXED]     Deadlock when NSUserDefaultsDidChange is handled on the main queue when the main queue is waiting for the persistence queue.
[FIXED]     Logging of cloudEnabled.
[REMOVED]   Debug NSLogs.
2013-09-14 20:21:25 -04:00
Maarten Billemont
62076d8170 Bump USM. 2013-09-14 14:05:47 -04:00
Maarten Billemont
009b1ff996 Fixes to cloud store switching.
[UPDATED]   Log out when user is no longer available.
[UPDATED]   Re-enabled cloud store switching using new USM store enumeration facilities.
[UPDATED]   Lower log level for test and crash logs so we can see why stuff fails.
2013-09-14 14:04:06 -04:00
Maarten Billemont
27870c7420 Fix positioning of toggles.
[FIXED]     Positioning of on/off toggles.
2013-09-14 00:10:12 -04:00
Maarten Billemont
7a16b47e37 Fading improvement, re-login fixed, UI tweaks.
[IMPROVED]  Fading of share/tip delayed, nicer effect.
[FIXED]     No automatic re-login when store changes and saveKey is YES for the current user.
[UPDATED]   Misc UI improvements.
[REMOVED]   Unassigned app icons and launch images.
2013-09-13 23:58:00 -04:00
Maarten Billemont
48324735e1 Fixed counter issue, status bar issue and updated app icons.
[FIXED]     Counter should default to 1, not 0.
[FIXED]     Some issues with the status bar in the MPMainViewController.
[UPDATED]   AppIcons and LaunchImages converted to asset catalog.
[ADDED]     New iOS 7 size app icon images.
2013-09-13 22:32:32 -04:00
Maarten Billemont
f0dcc4c34c Fixed queuing of password generation logic.
[IMPROVED]  Removed password logic out of MPEntities so that it can be backgrounded without relying on the persistence layer staying up.
[IMPROVED]  Some workload removed from the main thread.
2013-09-13 08:14:58 -04:00
Maarten Billemont
36386c3213 iOS 7 cloud loading. 2013-09-08 10:42:28 -04:00
Maarten Billemont
8ea0f00cf0 Improved cloud store enumeration.
[ADDED]     Stores now enumerated in a TVC.
2013-09-07 10:08:49 -04:00
Maarten Billemont
0921796136 Log VC, iCloud toggling, iOS 7 fixes.
[UPDATED]   Show users and sites in cloud stores of log VC.
[ADDED]     Ability to turn off iCloud if corruption happens.
[ADDED]     When switching iCloud on/off, provide user the option to migrate his current sites.
[ADDED]     Ability to get to settings & logs from unlock VC.
2013-09-05 23:52:12 -04:00
Maarten Billemont
ab360066e5 More robust migration.
[FIXED]     Better recovery from failure to migrate local store.
[FIXED]     Ability to migrate outdated local store models.
2013-08-31 12:29:56 -04:00
Maarten Billemont
34645c9433 Theming for iOS 6, updated status hiding and more exception handling.
[ADDED]     More verbose log printing when trace enabled.
[ADDED]     More exception handling on application launch; we can't allow any of this to keep us from being able to open the emergency generator.
[UPDATED]   Only apply UI theming on iOS 6-.
[ADDED]     Modern way of hiding the status bar on iOS 7.
2013-08-27 23:28:51 -04:00
Maarten Billemont
b2a608824c Merge branch 'master' into ios7
Conflicts:
	MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj/project.pbxproj
2013-08-27 22:18:40 -04:00
Maarten Billemont
af56920fd9 Show all release checks that fail at once. 2013-08-27 22:15:45 -04:00
Maarten Billemont
784b741b60 Fix documentation of LocalyticsSession.h 2013-08-27 22:05:16 -04:00
Maarten Billemont
ea066bd828 Fix some warnings in Pearl. 2013-08-27 21:56:47 -04:00
Maarten Billemont
c5d88bd5c7 Bumping libraries and project configuration updates.
[UPDATED]   TestFlight SDK -> 2.0.0
[UPDATED]   USM to deal with exceptions better.
[UPDATED]   Project configuration.
2013-08-27 21:51:56 -04:00
Maarten Billemont
a8115fdced Bump USM. 2013-08-27 20:49:02 -04:00
Maarten Billemont
c0406888fc Fix storyboard inconsistencies.
[FIXED]     Storyboard had multiple resource references with the same name.
2013-08-26 23:25:03 -04:00
Maarten Billemont
c7f04f8449 Merge branch 'master' into ios7 2013-08-26 23:20:28 -04:00
Maarten Billemont
ae4be86ecf UI fix for iOS 7.
[FIXED]     New ActionSheet doesn't deal well with spacing in items.
[FIXED]     UI now works on iOS 7.
2013-08-26 23:20:19 -04:00
Maarten Billemont
d188985823 Revert "UI fix for iOS 7."
This reverts commit ac0d412123.
2013-08-26 23:20:08 -04:00
Maarten Billemont
ac0d412123 UI fix for iOS 7.
[FIXED]     New ActionSheet doesn't deal well with spacing in items.
[FIXED]     UI now works on iOS 7.
2013-08-26 23:19:44 -04:00
Maarten Billemont
19e35dbccd Unclutter the UI and revert to no news. 2013-08-26 23:18:04 -04:00
Maarten Billemont
3086baf523 Fix MPAppsVC pager positioning on 4".
[FIXED]     Manually added pager VC added to wrong superview.
2013-08-26 23:17:02 -04:00
Maarten Billemont
e3d8d3c31c statusbar/navbar visibility & news.html
[FIXED]     Handle statusbar/navbar visibility only from viewWillAppear.
[FIXED]     URL to news.html.
2013-08-26 21:43:34 -04:00
Maarten Billemont
7589b3a048 Revert Xcode 5 change to storyboard. 2013-08-25 18:50:17 -04:00
Maarten Billemont
72f0d69a71 Don't use Localytics or Crashlytics when disabled. 2013-08-25 18:49:13 -04:00
Maarten Billemont
2399156ee4 Conditionally enable crash/analytics. 2013-08-25 15:38:38 -04:00
Maarten Billemont
3d3f08da9b Add a release checking script to prevent bad releases. 2013-08-15 22:18:17 -04:00
Maarten Billemont
2a0abf0da7 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-08-15 19:38:16 -04:00
Maarten Billemont
2d8146edbd Fixed potential crashed due to rare nil values at checkpoints.
[FIXED]     Avoid nil values at checkpoints since they will cause crashes.
2013-08-15 19:38:05 -04:00
Maarten Billemont
dad198f5e1 Update radials in site to support other browsers. 2013-08-15 09:53:08 -04:00
Maarten Billemont
0a5329fe17 Email/support un news.
[UPDATED]   Refresh news whenever the app opens.
[UPDATED]   Email and support links in news.html
2013-08-11 16:20:56 -04:00
Maarten Billemont
64d9f09cf6 Minor USM bump. 2013-08-11 15:40:44 -04:00
Maarten Billemont
d583d12099 Option to turn off iCloud on corruption.
[ADDED]     Option to turn off iCloud when store is broken.
2013-08-11 15:37:51 -04:00
Maarten Billemont
17bb5706f8 Fixed some minor crash cases.
[FIXED]     Crash when changing iCloud store.
[FIXED]     Use main thread when holding down on a user.
2013-08-11 15:30:01 -04:00
Maarten Billemont
d583bdfd3c Added support page to site.
[ADDED]     Site support page.
2013-08-11 14:11:19 -04:00
Maarten Billemont
9eb9667163 Make sure CFBundleVersion is always higher, try 2... 2013-08-11 00:23:45 -04:00
Maarten Billemont
a315a9dfc3 Make sure CFBundleVersion is always higher... 2013-08-11 00:20:10 -04:00
Maarten Billemont
8375808cdc Bump External dependencies. 2013-08-11 00:08:25 -04:00
Maarten Billemont
77439af486 Bump Crashlytics SDK. 2013-08-10 23:49:43 -04:00
Maarten Billemont
76f4a00738 Revert Storyboard back to Xcode 4 compatible format. 2013-08-10 23:32:33 -04:00
Maarten Billemont
9d615b2d4c Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-07-07 21:17:00 -04:00
Maarten Billemont
aaffc0297e Profile bump.
[UPDATED]   Master Password Ad Hoc profile.
2013-07-07 21:15:57 -04:00
Maarten Billemont
5dc5885582 Site updates.
[UPDATED]   Mention the value of passwords never leaving your device.
[UPDATED]   Added some emphasis in the algorithm section.
2013-06-28 09:07:53 -04:00
Maarten Billemont
7389f5bf45 Fix queue of observer/notification blocks.
[FIXED]     Make sure all notification and observer blocks that expect the main thread are scheduled on it.
2013-06-26 20:23:02 -04:00
Maarten Billemont
b06d461a36 Fix code active signing profile. 2013-06-16 20:27:53 -04:00
Maarten Billemont
802f57878b Bump Press. 2013-06-16 20:25:11 -04:00
Maarten Billemont
bccf35d057 More clear master password creation tip.
[IMPROVED]  Word wall tip.
2013-06-16 19:31:09 -04:00
Maarten Billemont
137a1c531c Legacy icon set. 2013-06-16 15:09:33 -04:00
Maarten Billemont
e96df9f990 Xcode 4 build fixes. 2013-06-16 15:08:05 -04:00
Maarten Billemont
691670cc43 Fix Xcode 4 issues & double type trigger. 2013-06-16 14:22:36 -04:00
Maarten Billemont
bd64bfec67 Password window improvements.
[FIXED]     Password window closes initially.
[FIXED]     Site label more visible.
2013-06-16 13:48:51 -04:00
Maarten Billemont
0813fb40d0 Retire use of confinement concurrency type.
[FIXED]     Confinement concurrency type is just all sorts of buggy.
2013-06-16 12:39:52 -04:00
Maarten Billemont
3cb8215d5a Migrate to xcassets for app icon. 2013-06-16 11:26:32 -04:00
Maarten Billemont
a7fe11e8db Press bump. 2013-06-16 01:01:53 -04:00
Maarten Billemont
4a9fc66b5a Fix new analysis and compiler warnings. 2013-06-16 01:00:57 -04:00
Maarten Billemont
fb81cd61a9 More project configuration. 2013-06-16 00:49:44 -04:00
Maarten Billemont
13034b4184 Project configuration improvements and warning fixes.
[UPDATED]   Fixed some warnings by explicitly type-casting NSNotFound checks.
[UPDATED]   Fixed some Xcode 5 warnings by doing project configuration improvements.
2013-06-16 00:47:33 -04:00
Maarten Billemont
b2345da9f3 Type selection for Mac.
[ADDED]     Mac: Type selection for site passwords.
[UPDATED]   Type changing refactored to be OS independant.
2013-06-15 01:39:49 -04:00
Maarten Billemont
08d3d9ad30 Improve lock/unlock assurance flow.
[FIXED]     Bug that caused the window to sometimes re-open when closed.
2013-06-09 19:03:54 -04:00
Maarten Billemont
797060f609 Add a space to the OS X wrapper name. 2013-06-08 20:37:53 -04:00
Maarten Billemont
ea09116929 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-06-08 18:13:20 -04:00
Maarten Billemont
86758b498c Open at Login and initial window improvements.
[ADDED]     Mac: Open at Login.
[UPDATED]   Mac: Mark users menu item when no user selected.
[ADDED]     Mac: Toggle open-at-login and enable-cloud from initial window.
2013-06-08 18:12:49 -04:00
Maarten Billemont
9115b56a42 Update updateDependencies. 2013-06-05 09:09:23 -04:00
Maarten Billemont
c400868026 Activate before no-user alert.
[FIXED]     Also activate app before no-user alert.
2013-06-04 21:31:02 -04:00
Maarten Billemont
b4dbb15853 Submodule maintenance. 2013-06-04 08:25:32 -04:00
Maarten Billemont
195f70db53 Menu and first-launch improvements.
[ADDED]     On first start, show the status item by highlighting and opening it.
[UPDATED]   Using RHStatusItemView for status item so we can highlight it programmatically.
[FIXED]     Activate app on startup so apps window shows.
[ADDED]     NSAlert when trying to open password window with no user selected.
[UPDATED]   Crisper menu icon.
2013-06-04 00:56:19 -04:00
Maarten Billemont
f3248f446c Missing news site causes error message in MP.
[ADDED]     Dummy news.html.
2013-06-04 00:52:29 -04:00
Maarten Billemont
80cb2c8a4f Based site on HTML5 boilerplate. 2013-06-02 19:12:25 -04:00
Maarten Billemont
35a600080b iCloud availability check.
[UPDATED]   Disable iCloud preference when iCloud is unavailable.
[FIXED]     Username in incorrect-mp error popup.
2013-05-31 00:14:04 -04:00
Maarten Billemont
af1efe7bc6 iCloud no longer required for Mac.
[UPDATED]   Mac: Allow iCloud to be disabled.
2013-05-30 00:16:03 -04:00
Maarten Billemont
8219ef10f5 New website. 2013-05-30 00:14:51 -04:00
Maarten Billemont
35411c3261 Added new website. 2013-05-26 01:06:44 -04:00
Maarten Billemont
e8bab69ed7 Mac: iOS App Advertisement + bug fixes.
[ADDED]     Window to advertise iOS app.
[FIXED]     Under some conditions, quit didn't work reliably.
[UPDATED]   Mac UI improvements.
[UPDATED]   Mac Executable Name 'Master Password'.
2013-05-19 16:55:43 -04:00
Maarten Billemont
9904fb2d57 Alert display issues fixed.
[FIXED]     Alert display issues.
[FIXED]     Access to activeUser from a different thread.
2013-05-16 00:59:32 -04:00
Maarten Billemont
d7f369350b Store loading and locking modal alerts.
[ADDED]     Waiting until the store is loaded.
[UPDATED]   Hide or lock password window when locked.
2013-05-16 00:19:50 -04:00
Maarten Billemont
0df322f648 Fixed saveKey getting unset and some MOC threading issues.
[FIXED]     Don't unset saveKey when loading the key fails.
            This causes saveKey to fail as soon as it's synced to a device that hasn't saved the key yet.
[FIXED]     A bunch of threading violation issues with thread-confined MOCs.
2013-05-15 22:42:21 -04:00
Maarten Billemont
cb860cec96 Prepare for new site. 2013-05-13 21:11:58 -04:00
Maarten Billemont
14c0b2dd27 Resource clean-up.
[REMOVED]   Unused resources removed from .app.
[DELETED]   Guide pages aren't used anymore.
[UPDATED]   pngcrush'ed all PNGs to reduce their size.
2013-05-13 00:22:24 -04:00
Maarten Billemont
a2521483c2 Fix orientation bug in lock screen.
[FIXED]     When navigating back from oriented main vc, lock vc isn't rotated back to portrait.
2013-05-12 16:48:54 -04:00
Maarten Billemont
fa4b2a9e54 Ability to select a different cloud store.
[ADDED]     Advanced feature to allow selecting a different cloud store.
2013-05-12 14:08:45 -04:00
Maarten Billemont
e3963a72ad Press bump. 2013-05-11 20:05:07 -04:00
Maarten Billemont
cefe8d144d Import fix, password type change fix, fancier generator appearance.
[FIXED]     Import of ubiquity changes was using wrong delegate method and MOC.
[FIXED]     Password type change broken when password type causes a class change.
[IMPROVED]  Fancier animation of emergency generator appearance.
2013-05-11 19:43:41 -04:00
Maarten Billemont
076cfb1257 MOC saving improvements, Mac app activation, loading overlay, USM update.
[MOVED]     iOS code from MPAppDelegate_Shared to MPiOSAppDelegate.
[FIXED]     Perform MOC saving in MOC perform blocks.
[FIXED]     Mac: Activate app when showing password window and not active.
[FIXED]     Hide overlay while corruption dialog is up.
[FIXED]     Hide corruption dialog when reloading store.
2013-05-11 08:55:09 -04:00
Maarten Billemont
71e3f44c8c Improved migration, file-based StoreUUID, Mac fixes.
[ADDED]     Migration to file-based StoreUUID.
[IMPROVED]  Cleaner, more modular, migration code.
[FIXED]     Don't hook activation to show password window: too annoying when focus shifts.
[FIXED]     Don't set the active user when just importing ubiquity changes, it causes a log-out.
[ADDED]     Mac: Ability to rebuild iCloud.
[REMOVED]   Mac: wasRunning logic to avoid password window appearance on first activation.
[FIXED]     Mac: Retrieve siteName from main thread.
2013-05-10 11:13:55 -04:00
Maarten Billemont
c36f34346d Output info level logs when sendInfo is enabled to aid in debugging. 2013-05-07 16:16:33 -04:00
Maarten Billemont
cd6b83ffe8 iPhone 5 alignment issue in unlock VC.
[FIXED]     Deselect new user avatar if MOC is unavailable when tapping it.
[FIXED]     Position of avatars & spinner on iPhone 5.
[IMPROVED]  Issue button in review dialog.
2013-05-07 13:25:05 -04:00
Maarten Billemont
d110fd18c1 Started checkpoint and executable name revert.
[ADDED]     "Started" checkpoint that logs some platform environment properties.
[REVERTED]  Executable/app name back to just MasterPassword.
2013-05-07 11:22:01 -04:00
Maarten Billemont
e45b9985c2 Mac: New sites.
[MOVED]     Creation of new elements moved to shared code.
[FIXED]     When switching user, unset active key.
[FIXED]     Synchronize content calculation to avoid race issues while typing.
[ADDED]     Ability to create new sites.
[FIXED]     Unset active element when hitting backspace or escape.
2013-05-07 00:48:48 -04:00
Maarten Billemont
8f4eb6df84 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-05-03 23:50:57 -04:00
Maarten Billemont
809bd60169 Info.plist fixes.
[FIXED]     Add extensions to Icon as well to CFBundleIconFiles because Xcode doesn't seem to listen to the Apple docs.
[FIXED]     Removed newsstand metadata: this is not a newsstand app.
2013-05-03 11:29:38 -04:00
Maarten Billemont
802c5949da More compatible way of specifying icon files.
[FIXED]     Add extensions to Icon as well to CFBundleIconFiles because Xcode doesn't seem to listen to the Apple docs.
2013-05-03 10:15:27 -04:00
Maarten Billemont
407c5528ee Fix sign comparison of enum. 2013-05-02 22:03:53 -04:00
Maarten Billemont
fed3a2bc10 Fix sign comparison of enum. 2013-05-02 22:03:53 -04:00
Maarten Billemont
7329353c6c Work-around for a weird Core Data bug. 2013-05-02 22:01:18 -04:00
Maarten Billemont
a7c861d1b0 Work-around for a weird Core Data bug. 2013-05-02 22:01:18 -04:00
Maarten Billemont
9af8ab3360 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-05-02 20:41:46 -04:00
Maarten Billemont
ddb5328019 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-05-02 20:41:46 -04:00
Maarten Billemont
96d97d95e1 New user on Mac.
[ADDED]     Mac: Support for creating a new user.
2013-05-02 20:40:12 -04:00
Maarten Billemont
ab15694d9a Safer migration, boolean description fix.
[ADDED]     Safer store migration: don't delete the old store, allowing the client to downgrade.
[ADDED]     Log checkpoints and send to TestFlight too.
[FIXED]     Describe booleans as YES/NO, not 1/0.
2013-05-02 11:19:34 -04:00
Maarten Billemont
81312e3ff4 Safer migration, boolean description fix.
[ADDED]     Safer store migration: don't delete the old store, allowing the client to downgrade.
[ADDED]     Log checkpoints and send to TestFlight too.
[FIXED]     Describe booleans as YES/NO, not 1/0.
2013-05-02 11:19:34 -04:00
Maarten Billemont
5e1e88bdeb Fancier password dialog.
[ADDED]     Mac: Shadows on labels so they're easier to read in regular mode.
[ADDED]     Mac: Some "subtle" bling on the password.
2013-04-30 21:10:52 -04:00
Maarten Billemont
9882bf408c Content generation fix.
[UPDATED]   For safer MOC usage API.
[FIXED]     Actually set the active element so that content is generated.
2013-04-30 20:49:42 -04:00
Maarten Billemont
40f34f3d77 Avoid using object.managedObjectContext - when no strong reference exists to the MOC, it may yield nil.
[FIXED]     Unexpected nil MOCs.
2013-04-30 01:49:53 -04:00
Maarten Billemont
0ee1e176ed Don't use temporary objectIDs for state.
[FIXED]     Make sure we have permanent ObjectIDs before storing them in state.
[FIXED]     MP-14
2013-04-30 00:32:30 -04:00
Maarten Billemont
c73f89e4a1 App versioning update.
[UPDATED]   App versioning: version is now: decimal short commit hash, short version is now tag+commit number.
2013-04-29 21:24:45 -04:00
Maarten Billemont
fe9a1cdbc4 Log Inspector and trace mode.
[ADDED]     Log Inspector, shake on preference screen to open log.
[ADDED]     Trace Mode: Log at trace level.
[FIXED]     Log messages weren't being recorded for inclusion in feedback.
2013-04-29 21:15:14 -04:00
Maarten Billemont
8a4eecd9fa Removed volume button.
[REMOVED]   Volume button in guide - there is no voice-over.
2013-04-28 00:46:08 -04:00
Maarten Billemont
d27a0fdbad Core Data context fixes and migration fixes.
[FIXED]     More careful Core Data threading and context usage.
[FIXED]     iOS bug when migrating, now using USM's copy migration.
[ADDED]     Better handling of store changes while in Main VC and Element List VCs.
2013-04-28 00:35:32 -04:00
Maarten Billemont
07e44a46ae Remove Facebook App ID & add icon to archive. 2013-04-27 17:53:54 -04:00
Maarten Billemont
dfda47bca0 Warn when secret data is unavailable so we notice when it is. 2013-04-27 17:39:31 -04:00
Maarten Billemont
6fb36035c2 TestFlight now uses an "Application Token". 2013-04-27 17:17:51 -04:00
Maarten Billemont
a6e3b83ebb Dumped Google+ SDK.
[UPDATED]   Google+ SDK.
2013-04-27 17:14:05 -04:00
Maarten Billemont
dc3c30a2f7 Localytics update.
[UPDATED]   Localytics update.
[ADDED]     When sendInfo is enabled, set the user identifier on Localytics.
2013-04-27 16:37:32 -04:00
Maarten Billemont
3219fc764f Fixed and updated InAppSettingsKit.
[UPDATED]   InAppSettingsKit
[IMPROVED]  Text in Settings.bundle.
2013-04-27 16:01:31 -04:00
Maarten Billemont
5d5e9395b3 Threading fixes for Mac, spinner fix for iOS.
[UPDATED]   TestFlight.
[FIXED]     Mac: References to MPAppDelegate that should be OS-independant now use MPAppDelegate_Shared.
[FIXED]     Mac: Threading and content UI updates.
[FIXED]     iOS: Spinner was showing when going back to unlock VC.
2013-04-27 00:34:28 -04:00
Maarten Billemont
291b408995 More workspace fixes to avoid iOS/Mac confusion by IDE.
[RENAMED]   MPAppDelegate -> MPiOSAppDelegate for iOS to avoid class name confusion in workspace.
2013-04-24 21:26:04 -04:00
Maarten Billemont
ceb0333fcf Active user switching for for password window.
[RENAMED]   MPAppDelegate -> MPMacAppDelegate for Mac to avoid class name confusion in workspace.
[FIXED]     Window behavior when switching user.
2013-04-24 21:23:53 -04:00
Maarten Billemont
44b4e5430a Password window style.
[ADDED]     Ability to change style of password window.
[FIXED]     Some window activation oddities (WIP).
[UPDATED]   Renamed executable iOS/Mac specific in the hopes of helping with IDE conflicts.
2013-04-24 00:25:51 -04:00
Maarten Billemont
cb7e145e83 Fixed a bunch of OS X issues.
[FIXED]     Don't create a moc when the main moc is unset.
[FIXED]     Load the MPUserEntity into the moc when doing selectUser:
[FIXED]     Remove KVO on activeUserObjectID, isn't used anymore.  Instead, override setActiveUser:
[FIXED]     Don't show the password window on launch.
[FIXED]     Don't force unlock of the key whenever unset - only when the window pops.
[REMOVED]   Migration - this app is not ready for explicit migration, additionally, this block appears to cause a lock-up of the PSC.
2013-04-23 20:38:56 -04:00
Maarten Billemont
35ef2b0789 Icon file restructuring. 2013-04-22 00:57:17 -04:00
Maarten Billemont
e34adae8f0 OS X build fixes. 2013-04-21 17:05:59 -04:00
Maarten Billemont
5137cbf14d Checkpoint for opening emergency generator. 2013-04-21 13:34:33 -04:00
Maarten Billemont
32fb52f48f Update emergencyContentTipContainer in storyboard. 2013-04-20 19:53:54 -04:00
Maarten Billemont
95d5d8b40c Reformat. 2013-04-20 14:11:19 -04:00
Maarten Billemont
c0d57b5561 MPCheckpoint
[UPDATED]   Refactoring of checkpoints.
2013-04-20 13:51:37 -04:00
Maarten Billemont
efcfbe2584 Fixed popup appearance.
[FIXED]     Appearance of popup when copying emergency password.
2013-04-20 12:14:44 -04:00
Maarten Billemont
eeac1d0dd3 Initial page-flip other apps, emergency password copy and marquee hint.
[ADDED]     Initial page-flip animation on opening of other apps VC to make it clear to the user that pages can be flipped.
[ADDED]     Copying of password from emergency generator.
[ADDED]     Marquee animate the bottom tip to also hint about the emergency generator.
2013-04-20 11:44:26 -04:00
Maarten Billemont
ac1358a0ec Emergency generator, action pictograms.
[ADDED]     Emergency Generator!
[ADDED]     Easier method for just using the master password algorithm bare.
[UPDATED]   Pictograms in action popup and centering of text.
2013-04-19 00:43:01 -04:00
Maarten Billemont
c31df49599 activeUser refactor, tool tip hiding and dismiss when logout.
[UPDATED]   Made activeUser access follow same pattern as activeElement which makes it more clear what the thread model is like.
[FIXED]     Save after update of all elements.
[UPDATED]   Tool tips hidden in IB now; makes it less cluttered.
[FIXED]     Dismissing view controllers when logging out.
2013-04-17 22:00:15 -04:00
Maarten Billemont
ee93412dd1 Search & AllSites improvements, sort by recency, rememberLogin setup.
[UPDATED]   Simplified AllSites VC in IB (removed the unused navVC).
[UPDATED]   Outdated sites are now shown in the AllSites VC.
[ADDED]     An update-all-sites button when showing outdated sites in the AllSites VC.
[REMOVED]   Search scopes.
[ADDED]     Sorting elements by recency and usage count now.
[FIXED]     Initial positioning of help container.
[ADDED]     Setup VC for rememberLogin.
2013-04-15 00:04:16 -04:00
Maarten Billemont
7cf2c7f5c6 Setup and guide.
[FIXED]     Setup wasn't showing up on app load.
[FIXED]     More temporary moc fixes and main thread fixes.
[IMPROVED]  Guide now plays an introduction animation.
[FIXED]     Setup iCloud switch is now functional.
2013-04-14 10:26:34 -04:00
Maarten Billemont
5bf8842031 More fixes of temporary moc accesses. 2013-04-13 14:03:50 -04:00
Maarten Billemont
abe874cda3 Temporary moc fix, setup & new guide.
[FIXED]     Pass along temporary mocs, they appear to be stored __weak in the object and we can't rely on them not being nil.
[ADDED]     Setup flow for initially setting the iCloud preference.
[ADDED]     New guide.
[IMPROVED]  Hierarchy and flow of unlock -> main.
2013-04-13 13:40:17 -04:00
Maarten Billemont
036c04f65f Migration cleanup and improvements.
[IMPROVED]  Migration code cleanup.
[FIXED]     When local store migration fails, fall back to opening the old local store if possible.
[FIXED]     Better migration of cloud preferences.
[FIXED]     Better checking of when to perform cloud store migration.
[FIXED]     Always migrate the local store, even when the cloud store is enabled.
[UPDATED]   Removed the loading indicator in favor of a loading overlay.
[UPDATED]   Sorted the file references lexicographically.
2013-04-07 19:43:14 -04:00
Maarten Billemont
418411769d Migration fixes.
[FIXED]     Moved migration into the persistence queue by performing it on willLoadStore.
[FIXED]     Re-enabled cloud after migration.
[UPDATED]   Allow rebuilding the old cloud store if it got deleted locally.
2013-04-06 19:41:20 -04:00
Maarten Billemont
12804984ba Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-04-05 00:33:10 -04:00
Maarten Billemont
de36cf8645 Fixes for new properties in MPAppDelegate_Store
[FIXED]     Properties in categories aren't synthesized.  Using fancy new PearlAssociateObjectProperty from Pearl now to make a fake property.
[FIXED]     Show overlay on UI thread.
[FIXED]     ONLY_ACTIVE_ARCH = NO because weird codesign errors happen on second build with it set to YES.
	modified:   External/Pearl
2013-04-05 00:31:05 -04:00
Maarten Billemont
922230c54e Remove iCloudStoreManager.
[REMOVED]   iCloudStoreManager was replaced by UbiquityStoreManager.
2013-04-04 14:16:33 -04:00
Maarten Billemont
e0e548c611 Merge branch 'master' of github.com:Lyndir/MasterPassword 2013-04-04 10:54:07 -04:00
Maarten Billemont
5e40258f54 Updated for new UbiquityStoreManager API.
[UPDATED]   New and improved UbiquityStoreManager with better API.
2013-04-03 19:25:15 -04:00
Maarten Billemont
2f17639eeb Revert "Temporary build fix: Disable iCloudStoreManager integration."
This reverts commit b301d0bdd6.
2013-04-01 22:03:28 -04:00
Maarten Billemont
e22be0f97c Build fixes. 2013-03-30 11:53:26 -04:00
Maarten Billemont
0a394265fa Update Mac project after file restructuring. 2013-03-29 20:24:06 -04:00
Maarten Billemont
9c10a2c4e3 Xcode workspace
[UPDATED]   Crashlytics.
2013-03-29 17:41:22 -04:00
Maarten Billemont
93a672b22f Update build scripts for new paths.
[FIXED]     After relocation, the build scripts need path updates.
2013-03-29 12:10:01 -04:00
Maarten Billemont
b301d0bdd6 Temporary build fix: Disable iCloudStoreManager integration. 2013-03-29 12:03:31 -04:00
Maarten Billemont
1c79545245 Serious houskeeping: Better file structure & preparation for Xcode workspace. 2013-03-29 11:59:47 -04:00
Maarten Billemont
02b323d640 Keep track of some todos. 2013-03-29 09:07:01 -04:00
Maarten Billemont
4b8d30ac28 Initial android artifact.
[ADDED]     Added initial stub for an android MP app.
2013-03-29 09:05:15 -04:00
Maarten Billemont
cd475580ff iCloudStoreManager is now UbiquityStoreManager 2013-03-29 09:05:03 -04:00
Maarten Billemont
f937792fc2 Typo correction in site. 2013-03-28 10:19:30 -04:00
Maarten Billemont
31d4d5b6c6 Extract common code from SearchVC and AllVC.
[ADDED]     A more generic element listing controller, now used by the
            search controller and all elements listing controller.
[IMPROVED]  Improved change detection and UI handling in the element
            listing controllers.
[FIXED]     Bug with previewing generated password types for
            non-generated elements.
2013-02-10 15:28:58 -05:00
Maarten Billemont
d7d91d13c6 UI updates: site search & type change
[ADDED]     Display the password type when searching for sites.
[ADDED]     Indicate the strength of a password type by time to crack.
[ADDED]     Display a password prediction below each password type on
            the type selection screen.
[MOVED]     Moved the Short type below the Basic type because it's less
            secure.
[FIXED]     Some font regression bugs.
2013-02-08 18:11:24 -05:00
Maarten Billemont
16a7b87d2a Update content font to Source Code Pro.
[UPDATE]    Font of element content and loginName to Source Code Pro for
            improved legibility and distinguishment between O and 0.
[REMOVED]   Unused fonts from the bundle to save space.
2013-02-02 14:17:35 -05:00
Maarten Billemont
21f1e7ee49 New element fix and statusbar experimentation.
[FIXED]     Set lastUsed when creating a new site since elements can't
            be saved without that value set.
[UPDATED]   Configuration for tinting of status bar.
            Doesn't work yet with the custom navbar container image:
            Should check if last row of that image's pixels isn't too
            dark.  iOS 6 apparently averages it for the tint color.
2013-02-02 01:38:11 -05:00
Maarten Billemont
ad8317a7a0 All sites add button.
[ADDED]     An add site button in the all sites VC.
2013-02-02 00:45:30 -05:00
Maarten Billemont
820be14845 Add missing dependencies to updateDependencies. 2013-02-01 16:45:35 -05:00
Maarten Billemont
b7d3b2d02c Ignore IDE preferences of Java implementation. 2013-02-01 12:54:57 -05:00
Maarten Billemont
a710765336 Bump Java dependencies to release.
[UPDATED]   Java: property-list to 2.0.0
2013-02-01 12:53:17 -05:00
Maarten Billemont
9a68cbf533 Listing all sites now with bookmark button and modal VC.
[ADDED]     Modal VC to show all sites.
[UPDATED]   All sites button on search bar now uses bookmark button.
[REMOVED]   Query string hack for search results button.
2013-02-01 01:13:45 -05:00
Maarten Billemont
2bb0e2e3ef Icon update.
[UPDATED]   Icon graphics updated.
2013-01-31 20:58:27 -05:00
Maarten Billemont
17c47269a3 Startup UI improvements.
[IMPROVED]  Fade-in effect when opening Master Password.
[IMPROVED]  Shade of circular shadow fixed between launch image and
            background image.
2013-01-31 18:58:56 -05:00
Maarten Billemont
6c23134e47 Update Google+ integration.
[UPDATED]   Google+ SDK to 1.1.0.
2013-01-31 16:33:46 -05:00
Maarten Billemont
cc015ada1b Delete stale reference to facebook-ios-sdk
[REMOVED]   Stale reference to facebook-ios-sdk submodule.
2013-01-31 12:29:24 -05:00
Maarten Billemont
acd52e8ef6 Bump Pearl and TestFlight for iOS 6 fixes.
[UPDATED]   Pearl for iOS 6 compilation fixes.
[UPDATED]   TestFlight for close_file bugfix.
2013-01-31 12:25:17 -05:00
Maarten Billemont
f2ee139db6 Social update, CoreData overhaul & iOS6/rotation fixes.
[REMOVED]   Facebook SDK.
[ADDED]     Social framework integration for Twitter & Facebook.
[MOVED]     User migration warning state moved into MainVC, out of
            data model.
[UPDATED]   Major overhaul of Core Data integration.  Multiple contexts
            and making sure we're on the right thread and the right
            context even for read access.
[FIXED]     Some iOS 6 deprecation fixes.
[FIXED]     Some VC rotation issues.
2013-01-31 00:42:32 -05:00
Maarten Billemont
725da285da Minor code improvement.
[FIXED]     Some minor code fixes thanks to inspections.
[FIXED]     Some iOS6 deprecation issues.
[IMPROVED]  Cleanup with regards to store migration.
2013-01-27 16:27:49 -05:00
Maarten Billemont
1b3f5f5d25 Added a few missing resources.
[ADDED]     Mac: Missing menu icon.
[UPDATED]   Sketch source file for iOS app icon and Mac menu icon.
2013-01-27 01:02:41 -05:00
Maarten Billemont
ecd03ecf42 Update of iOS code for updated API of UbiquityStoreManager.
[UPDATED]   UbiquityStoreManager's new API uses cloudEnabled instead of iCloudEnabled.
2013-01-27 00:54:54 -05:00
Maarten Billemont
d5bffd86d6 Mac fixes and improvements to usability.
[FIXED]     Mac: Locking shouldn't unset the active user.
[IMPROVED]  Mac: Behavior of auto-completing site-name field improved.
[ADDED]     Mac: Alert when MP is incorrect when unlocking.
2013-01-26 22:12:34 -05:00
Maarten Billemont
b07298e203 Fixed migration of old store to new store + don't hold references to CoreData objects.
[FIXED]     Working migration of old store to new store.
[FIXED]     We shouldn't be holding references to CoreData objects anywhere.
            In that light, the user NSMenuItems have been fixed.
2013-01-25 01:05:31 -05:00
Maarten Billemont
4c19a29897 Mac support for user handling and iCloud improvements.
[MOVED]     Extract user migration out of iOS specific codebase.
[UPDATED]   iCloud persistence manager.
[ADDED]     Mac: Hotkey for signing the user out.
[IMPROVED]  Mac: Menu item handling and usability.
2013-01-17 00:37:20 -05:00
Maarten Billemont
32f870406c Mac UI fixes.
[FIXED]     Behavior of the Mac menu item and appearance of the password
            window.
[ADDED]     Disabling menu items while not usable and explaining
            disabled items with tooltips.
2012-11-01 10:55:11 -04:00
Maarten Billemont
05ab38b998 Facebook updates + Mac fixes.
[UPDATED]   Facebook integration bumped for iOS 6.
[FIXED]     Bringing Mac version back up to date.  Compiles again and
            runs with UI bugs.
[ADDED]     Mac: User selection.
2012-10-30 22:54:34 -04:00
Maarten Billemont
678545cc26 Make parent pom resolvable.
[FIXED]     Java: Make the parent POM resolvable for people that don't
            have the snapshot version of it.
2012-10-23 09:21:33 -04:00
Maarten Billemont
4c3e0f0c97 Site updates.
[ADDED]     Smart App Banner added to site.
[UPDATED]   Available-on-App-Store resource updated.
2012-10-09 09:58:44 +02:00
Maarten Billemont
a8752b5f28 Disable TestFlight's feedback dialog.
[REMOVED]   TestFlight's feedback dialog.  It's ugly and it doesn't
            allow log sending.
2012-09-23 17:38:05 +02:00
Maarten Billemont
f75f5c1b30 Signing profile bump. 2012-09-22 17:48:35 +02:00
Maarten Billemont
735a75df92 News file referenced by the new version. 2012-09-22 17:38:05 +02:00
Maarten Billemont
d8414aaab9 Fix the URL of the news page to point to the web. 2012-09-22 10:23:21 +02:00
Maarten Billemont
02a5d48ce4 Added a news view.
[ADDED]     A news view on the unlock screen.
2012-09-22 10:14:41 +02:00
Maarten Billemont
cdee54a0f7 TestFlight update to 1.1 2012-09-22 08:53:55 +02:00
Maarten Billemont
b1f0f70849 Localytics SDK update because of startup issue. 2012-09-21 19:42:18 +02:00
Maarten Billemont
850978cbe3 Fixed bug with scroll view in iOS5.
[FIXED]     On iOS5, the app crashed because gesture recognizers of a
            scrollview were being replaced.  Now properly adding the
            desired gesture recognizer to the scroll view preserving the
            existing gesture recognizers.
2012-09-21 16:45:57 +02:00
Maarten Billemont
e8c00296bd TestFligt identifier + Localytics crash.
[IMPROVED]  Use correct device identifier for TestFlight depending on
            whether we're in AdHoc mode or not.
[FIXED]     Crash when sending nil config values to Localytics.
2012-09-21 10:31:48 +02:00
Maarten Billemont
52b8033c37 Fixed issue with logs in feedback message.
[FIXED]     Including logs in the feedback message caused failure to
            parse attachments.
2012-09-20 21:37:58 +02:00
Maarten Billemont
6f2bc83806 Revert the renameID change to see if it causes model incompatibilties. 2012-09-20 21:19:44 +02:00
Maarten Billemont
2a48c9d272 Fixed some rare crashes.
[FIXED]     Crash for users with no name.
[FIXED]     Crash when copying an element with no content.
2012-09-20 21:16:34 +02:00
Maarten Billemont
27d0373a6e Add TestFlight back. 2012-09-19 23:52:23 +02:00
Maarten Billemont
96b50f7ef0 Not ready yet for ARMv7s.
[REVERTED]  Still too many of our dependant libs have no ARMv7s symbols.
2012-09-19 23:46:39 +02:00
Maarten Billemont
dc7ff5f668 Bump for ARMv7s Pearl libs. 2012-09-19 23:43:15 +02:00
Maarten Billemont
0c9c9737d9 Only show TestFlight feedback in Adhoc mode. 2012-09-19 23:34:17 +02:00
Maarten Billemont
8ef099d707 Signing configuration update. 2012-09-19 23:31:46 +02:00
Maarten Billemont
6da15306b0 Work-around for iOS 6 bug.
[FIXED]     iOS 6 SDK seems to crash on iOS 5 devices when doing
            scrollEnabled.
2012-09-19 23:29:21 +02:00
Maarten Billemont
699d0869fc ARMv7s
[UPDATED]   Project configuration update for ARMv7s support.
2012-09-19 22:11:16 +02:00
Maarten Billemont
83efa853fc Binary libraries only support armv7.
[FIXED]     Crashlytics only supports armv7 so force armv7 for now.
2012-09-13 00:48:45 +02:00
Maarten Billemont
75de4b443f iPhone 5 compatibility.
[ADDED]     Taller iPhone 5-size launch image.
[FIXED]     Missing PSC in MOC.
[IMPROVED]  Slower fade-in of unlock UI.
[FIXED]     Properly set enableHTTPS in Localytics.
2012-09-13 00:38:15 +02:00
Maarten Billemont
42c7fb446e Localytics project configuration update. 2012-09-12 16:07:36 +02:00
Maarten Billemont
bce6b96417 Tag screens in Localytics + email fix + psc fix
[FIXED]     Sending email with no recipient caused a crash.
[FIXED]     Duplicate persistence coordinator.
[UPDATED]   Crashlytics and Localytics SDKs.
[UPDATED]   Don't continue the Localytics session when device locked.
[UPDATED]   Put Localytics communication on HTTPS for confidentiality.
[ADDED]     Tagging screens in Localytics.
2012-09-12 16:02:02 +02:00
Maarten Billemont
6f82cf7f15 Fixed crashes related to over-released gesture recognizers.
[FIXED]     Memory warnings caused Master Password to crash due to
            gesture recognizers and an iOS 5 bug.
2012-09-07 23:55:12 +02:00
Maarten Billemont
fac419dd94 Fixes related to review feedback. 2012-09-02 21:16:16 +02:00
Maarten Billemont
c03d547ad8 Font improvements and copy-login fix.
[FIXED]     Login name copies content instead of login name.
[IMPROVED]  Font of password and login name improved for better
            differentiation between capital and lower-case letters.
2012-09-02 13:14:09 +02:00
Maarten Billemont
e2bf8cefa2 Migration of saved passwords.
[ADDED]     Migrate saved passwords when master password changes.
[IMPROVED]  UI improvements to apps.
2012-09-01 22:14:57 +02:00
Maarten Billemont
d75ec5c689 Added "Other Apps".
[REMOVED]   Cleaned up some check points that weren't really useful.
[ADDED]     Added a few new checkpoints with new functionality.
[ADDED]     An "other apps" page that introduces Gorillas and DeBlock.
[IMPROVED]  Help is now toggled with a drag handle instead of an action
            button.
2012-09-01 14:57:55 +02:00
Maarten Billemont
aa2d9eb202 Bump Pearl. 2012-08-31 16:30:05 +02:00
Maarten Billemont
ac52f38612 Disabled custom button title font because of odd iOS bug.
[FIXED]     Odd bug that causes imageViews to get oddly stretched.
2012-08-31 11:47:50 +02:00
Maarten Billemont
332808027f Make user name entry required.
[FIXED]     Prevent the ability to create a new user without user name.
2012-08-30 22:47:33 +02:00
Maarten Billemont
cd64bff5ef Layout Core Data model graph. 2012-08-30 22:30:42 +02:00
Maarten Billemont
7813ddee38 Fade unlock VC + search bar responder fix.
[ADDED]     Fade effect to unlock view.
[UPDATED]   Signing profiles.
[FIXED]     A rare bug that caused the search bar to remain first responder without making it take input or dismissable (hopefully fixed, at least).
2012-08-28 00:13:46 +02:00
Maarten Billemont
af744235bc Status bar issue.
[FIXED]     Status bar issue.
[FIXED]     Review dialog link and buttons.
2012-08-27 00:14:33 +02:00
Maarten Billemont
ca9cbc9fd1 Follow on social networks.
[UPDATED]   Migrated from MFMailComposeViewController to PearlEMail.
[ADDED]     Social network "follow" button.
2012-08-26 17:40:32 +02:00
Maarten Billemont
5e7b6ed60e Sharing on Facebook, Twitter and Google+
[FIXED]     Font of navbar.
[FIXED]     A few compile fixes.
[IMPROVED]  Made properties nonatomic.
[ADDED]     Support for facebook, twitter and google+ sharing.
2012-08-25 12:55:07 +02:00
Maarten Billemont
b9ccee398e Fixed a few crashes.
[UPDATED]   A nil type is never OK.  Crash early if it is so.
[UPDATED]   Set crashlytics identifiers using its userIdentifier and userName property for good metadata.
[FIXED]     Make sure the MOC has a PSC with stores when returning it.
[FIXED]     Don't reset the store for just any open error! Only if it's actually incompatible.
[IMPROVED]  Remove timestamps from Crashlytics and TestFlight logs, they already provide them.
[FIXED]     Avoid crashes in some odd cases where there's no type set.
2012-08-24 10:12:15 +02:00
Maarten Billemont
7921734740 Modernize ObjC syntax.
[IMPROVED]  Migrate to modern ObjC syntax for type boxing.
2012-08-19 20:02:23 +02:00
Maarten Billemont
9d883b6ff7 UserName -> LoginName 2012-08-19 19:54:06 +02:00
Maarten Billemont
75ef15bb4d Import improvements and core data fixes.
[FIXED]     Import fixes:
                - Wait for MOC to become available.
                - Progress UI while working.
                - Import files exported with a different master password.
                - Core Data crashes.
[RENAMED]   Site's User name -> Login name.
[FIXED]     Core Data crashes related to using entities from old MOCs.
2012-08-19 09:34:49 +02:00
Maarten Billemont
479d357bd1 Fixed importing with a different key and entity access after MOC changes.
[FIXED]   Importing stored content when not logged in with the same key.
[FIXED]   Holding entities is a bad idea when MOCs can change.  Holding ObjectIDs instead now.
2012-08-18 15:37:24 +02:00
Maarten Billemont
d429044f64 Remove debugging "Save" button + fix keybaord appearance.
[FIXED]     Keyboard didn't appear when app is reactivated.
[REMOVED]   "Save" option in user menu on lock screen was for debugging.
2012-08-05 11:40:50 +02:00
Maarten Billemont
b38e8d9ea6 Fix appearance of the Guide on start-up.
[FIXED]     When the unlock VC shows, the guide's appearance is aborted.
2012-08-05 11:18:58 +02:00
Maarten Billemont
c928b1ca2c Fix unlock screen when MOC unavailable.
[REMOVED]   Disable TestFlight for release, it doesn't work anyway.
[FIXED]     Properly handle unlock screen when there is no MOC yet.
[FIXED]     Some log statements format strings & arguments.
2012-08-04 23:15:50 +02:00
Maarten Billemont
553a14dced Empty SMS password in repo. 2012-08-04 13:46:43 +02:00
Maarten Billemont
8b8d727ee0 Fixes to key saving and searching.
[FIXED]     Saving of keyData in keychain.
[FIXED]     MPSearchDelegate before MOC is available.
[FIXED]     Tip during search didn't show up.
2012-08-04 12:22:36 +02:00
Maarten Billemont
4cdeab4256 Don't block the MOC lookup.
[IMPROVED]  Don't block when MOC is not yet ready, just return nil.
[IMPROVED]  Outdated tip links to info, icon links to site search.
[IMPROVED]  Minor improvements to error handling during import.
2012-08-04 10:16:58 +02:00
Maarten Billemont
bc3aa3255e Get rid of these binaries; they don't belong in a repo. 2012-07-30 10:19:46 +02:00
Maarten Billemont
f2fdca6a03 Add env var support to CLI.
[ADDED]     The Java CLI client can now take values for the username and
            master password from the environment.
2012-07-30 10:17:26 +02:00
Maarten Billemont
647235616e Fixes to import code.
[FIXED]     Don't recalculate key for each entry in import list.
[FIXED]     Use correct fetch request to find user entity for import.
[FIXED]     Properly schedule all use of MOC with performBlock*
[ADDED]     Use undoManager to revert failed import changes.
2012-07-30 07:58:18 +02:00
Maarten Billemont
b0b6dcc56b Make iCloud removal use file coordinators. 2012-07-29 15:36:00 +02:00
Maarten Billemont
918a240dba UI fixes to do with password type button and help.
[FIXED]     Password type button goes off-screen.
2012-07-29 13:43:11 +02:00
Maarten Billemont
830dcb45ff Word wall + fixes to: guide, export, UI.
[ADDED]     Word wall: Show some random dictionary words while user
            thinks of a new master password to give him some
            inspiration.
[IMPROVED]  Only select user after he choose to reset.
[IMPROVED]  Ugly backdrops in the guide images cleaned up.
[FIXED]     Export of sites should now include a password version field.
[FIXED]     Filename to save exported passwords into should use day of
            the month instead of day of the year.
[FIXED]     No search predicate was set when search scope button wasn't
            set.  As a result, sites from other users showed up.
2012-07-29 12:40:22 +02:00
Maarten Billemont
7be9884075 Better abstraction for key & algorithm + V1
[IMPROVED]  A master password key is now better abstracted in an object.
[IMPROVED]  A master password algorithm is now better astracted in an
            object.
[ADDED]     Elements now have a specific algorithm version.
[ADDED]     Automatic/explicit migration of elements.
[ADDED]     Searching outdated elements.
2012-07-17 22:57:11 +02:00
Maarten Billemont
5ca0d954bb UI improvements with regards to user name saving.
[IMPROVED]  Settings -> user button.
[IMPROVED]  More sensible and understandable logic.
[FIXED]     State handling of what to show when, etc.
2012-07-16 21:49:27 +02:00
Maarten Billemont
02d69261df Password settings alpha.
[FIXED]     Hide password settings when no element selected.
2012-07-16 21:03:15 +02:00
Maarten Billemont
fc60460935 Settings toggle and site user name.
[ADDED]     Allow saving a user name per site.  This is an optional
            addition, toggled by tapping the new settings icon.
            Obviously user names can't be recovered after loss.
2012-07-16 20:29:48 +02:00
Maarten Billemont
559e11b16e Video and send-to-phone.
[ADDED]     Site: Demo video.
[ADDED]     Site: Send-to-phone using email and SMS.
2012-07-16 18:45:11 +02:00
Maarten Billemont
0a72809b02 Add +1 to site & hide alert.
[FIXED]     Hide alert message when main view appears.
[ADDED]     Google +1 to site.
2012-07-15 15:23:40 +02:00
Maarten Billemont
8c71ed0081 Fix deleting of users.
[FIXED]     When retrieving content without a key set, return nil.
2012-07-15 00:09:20 +02:00
Maarten Billemont
3e19a026ba Accessibility improvements + Xcode 4.3 fixes.
[ADDED]     Accessibility hints and labels.
2012-07-14 23:57:06 +02:00
Maarten Billemont
8fa3c6c75d Improved algorithm page style.
[FIXED]     A few text fixes in algorithm page.
2012-07-14 23:55:22 +02:00
Maarten Billemont
217cf56d94 Versioning + automatic user selection + misc UI tweaks.
[ADDED]     Versioning and explicit migration to MPElementEntity.
[ADDED]     Upgrade button in case the element needs explicit migration.
[ADDED]     Messages in Crashlytics and TestFlight logs upon
            initialization so we can easily see it worked and what the
            client's versioning looks like.
[IMPROVED]  Only show firstRun UI tooltips once.
[IMPROVED]  Automatically select the latest user upon load of unlock.
[IMPROVED]  Automatically select the user when his password is reset.
[IMPROVED]  Hide active element when logging a user out.
2012-07-12 08:50:34 +02:00
Maarten Billemont
6f37f28a4c Element versioning + upgrade tool & tip.
[ADDED]     "version" to MPElementEntity.
[ADDED]     Tool tip, a tip that points at the content tool.
[ADDED]     Upgrade tool, a tool used for upgrading outdated elements.
2012-07-10 07:26:49 +02:00
Maarten Billemont
3b7d2dc08e Exclusion from GA.
[ADDED]     Site: Method of excluding oneself from Google Analytics.
2012-07-10 07:25:57 +02:00
Maarten Billemont
5e9af44736 Press Kit improvements and addition to site.
[IMPROVED]  Press Kit: Front page + grammar.
[ADDED]     Site: Press Kit download button.
[ADDED]     Site: GA /outbound/ events.
2012-07-09 10:47:00 +02:00
Maarten Billemont
be33a29fa0 AdWords + SEO
[ADDED]     Site: AdWords conversion detection.
[ADDED]     Site: SEO by schema.org tagging.
2012-07-07 01:20:37 +02:00
Maarten Billemont
29ed22d0b7 Badge + java version.
[ADDED]     Site: Price badge on front phone.
[ADDED]     Site: Mention Java version.
[ADDED]     Site: Sync script.
[IMPROVED]  Screenshots of lock screen.
2012-07-06 10:39:49 +02:00
Maarten Billemont
8b997528c9 Improved logging of password generation.
[IMPROVED]  Trace-level logging during password generation.
2012-07-05 13:47:50 +02:00
Maarten Billemont
04a6c8e68d A Java proof-of-concept CLI for Master Password. 2012-07-05 13:42:32 +02:00
Maarten Billemont
0e8e4dc06d Add site tip: Promo code for feedback. 2012-07-05 13:40:31 +02:00
Maarten Billemont
8b91c2a0b8 Press data and site experimentation with nivo-slider.
[ADDED]     Press resources: Releases, media, etc.
2012-07-05 00:02:45 +02:00
Maarten Billemont
e967affddb Added unit tests for playing around with the logic. 2012-07-04 23:57:29 +02:00
Maarten Billemont
dea7434bd4 prMac Press Release
[ADDED]     prMac press release for 1.2.1, REV1b
2012-07-03 11:02:58 +02:00
Maarten Billemont
1da63e450d High-resolution iTunesArtwork. 2012-07-03 11:00:25 +02:00
Maarten Billemont
029d240999 Fixed a crash when tapping a non-type row.
[FIXED]     MP-23 Crash when tapping non-type row
2012-07-03 10:04:39 +02:00
Maarten Billemont
110f7069e1 Lock when backgrounded.
[FIXED]     When backgrounding the app and re-showing it, don't reveal
            the UI when logout is enabled.
2012-06-28 00:02:00 +02:00
Maarten Billemont
d77cde1929 Moved MPSearchDelegate to code.
[FIXED]     Another potential crash because of an over-released
            top-level object in storyboard.
2012-06-27 23:44:37 +02:00
Maarten Billemont
2dba4c87ba Small build fixes.
[FIXED]     Linker warning about PIE.
[UPDATED]   Login failed is no longer recorded when login attempt was
            not using a password (noisy).
2012-06-27 15:01:58 +02:00
Maarten Billemont
6841ae2b0d Updated iTunesArtwork
[IMPROVED]  iTunesArtwork prettier & 1024px.
[ADDED]     FontReplacer target.
2012-06-27 13:53:39 +02:00
Maarten Billemont
a3698b9e47 Guide pager, fonts, crash.
[ADDED]     Page controller in guide to see where in the guide you are.
[ADDED]     FontReplacer to be able to "use" Exo from IB (by
            substituting "Futura").
[FIXED]     A crash when loading the main VC because of the reset
            password gesture recogniser.
[IMPROVED]  Font in tables to standard system fonts.
[IMPROVED]  Guide content positioning and sizing making space for pager.
2012-06-27 09:51:14 +02:00
Maarten Billemont
5b65c8c6bd Improve UI to be more HIG friendly.
[IMPROVED]  Use action sheets instead of alerts when showing destructive
            action choices.
[IMPROVED]  Make tappable regions at least 44x44pt.
[IMPROVED]  Title/message for alert/sheets.
2012-06-25 08:59:54 +02:00
Maarten Billemont
94c9d50a12 Ability to noop TestFlight and Crashlytics 2012-06-24 21:06:00 +02:00
Maarten Billemont
5849c9668f Format noise. 2012-06-24 18:27:10 +02:00
Maarten Billemont
4d4ba3425e Improvements to password import.
[FIXED]     Importing of mpsites with passwords showing for
            stored password types.
[FIXED]     Don't try to show mail composition dialog when the user has
            no mail account configured.  This will crash.  Instead,
            show a friendly popup explaining things.
[IMPROVED]  Message of password export emails.
[FIXED]     Hierarchy of MPUnlockVC so password field becomes touchable.
2012-06-24 16:32:22 +02:00
Maarten Billemont
b7e91358be Use only annotated tags for version determination. 2012-06-24 16:32:22 +02:00
Maarten Billemont
da860d74c4 More internal fixes. 2012-06-24 16:29:51 +02:00
Maarten Billemont
4e2ceb33a0 Fix an odd bug with a missing input handler for certain keyboard types. 2012-06-24 14:53:05 +02:00
Maarten Billemont
d14bde07bd Hardcoded signing profiles to avoid Xcode using the wrong one. 2012-06-23 14:34:26 +02:00
Maarten Billemont
fa2dc822d3 Prettier loading screen and disable Crashlytics debug mode. 2012-06-15 11:34:53 +02:00
Maarten Billemont
d4adafb448 Reset from unlock, FAQ improvements.
[ADDED]     Ability to reset a master password from the unlock screen.
[FIXED]     Manually retain objects that live next to a VC in a
            storyboard within the VC to avoid an OS bug.
[FIXED]     Visibility of the deleteTip.
[ADDED]     An index to the FAQ.
[IMPROVED]  Improved and expanded the FAQ a bit more.
2012-06-15 11:16:02 +02:00
Maarten Billemont
a67d9676ba Improved feedback + logging.
[REMOVED]   Apptentive is now implemented by a standard iOS mail
            composer window and can optionally include logs.
[IMPROVED]  Better inf-level logging of what's going on.
[AUDITED]   Made sure no personal is going out through inf+ levels.
2012-06-14 21:56:54 +02:00
Maarten Billemont
bc2da6a99b Site style updates of what & algorithm pages. 2012-06-12 10:20:06 +02:00
Maarten Billemont
50b5c87f61 Some fixes.
[REMOVED]   Old explanation of saveKey from settings.
[FIXED]     Status-bar display when closing the guide.
[FIXED]     Crash when opening type selection.
2012-06-12 07:52:18 +02:00
Maarten Billemont
d4bcad2658 Small fix of last commit. 2012-06-11 23:44:02 +02:00
Maarten Billemont
13bca309ba Checkpoints update and tag in Localytics too. 2012-06-11 23:39:50 +02:00
Maarten Billemont
83bdb9d626 Checkpoint fixes. 2012-06-11 23:24:23 +02:00
Maarten Billemont
5f1fc453d4 Updated guide + settings bundle + fixes.
[UPDATED]   Guide updated with UI changes.
[FIXED]     Don't animate pushing the unlock VC when appearance of main
            VC is not animated (eg. application startup).
[FIXED]     rememberKey -> rememberLogin in settings bundle.
[REMOVED]   saveKey from settings bundle.
[UPDATED]   Removed lock from the Default image; show a dummy avatar
            instead.
[FIXED]     Don't forget key when signing out.
2012-06-11 23:03:17 +02:00
Maarten Billemont
9c875d4311 Default password type + new user confirmation.
[ADDED]     User preference for default password type.
[RENAMED]   Secure type to Maximum Security.
[FIXED]     Logging bug in password generation.
[ADDED]     Confirmation popup after new user creation.
2012-06-11 16:15:49 +02:00
Maarten Billemont
afafa473a7 Reverted changes to unlock presenting and fixed settings display.
[FIXED]     IASK display by not initializing the VC with the right nib.
2012-06-11 00:53:03 +02:00
Maarten Billemont
4d5f609d72 Fixes.
[REVERTED]  managedObjectContext and persistenceStoreCoordinator needn't
            be lazy anymore.
[FIXED]     AdHoc #def'ed code fixed.
2012-06-10 21:43:18 +02:00
Maarten Billemont
6f1d53ea35 Improved runtime debug logging + new user avatar selection.
[UPDATED]   Crashlytics.
[IMPROVED]  Sending logs and configuration to crashlytics, added
            sendDebugInfo option that allows the user to choose to send
            more info.  Now also sending a device identifier.
[ADDED]     Avatar selection dialog when a new user is created.
2012-06-10 08:36:11 +02:00
Maarten Billemont
a8bf74a925 AppCode code formatting. 2012-06-08 23:46:13 +02:00
Maarten Billemont
d59f77720c Minor improvements. 2012-06-08 21:06:19 +02:00
Maarten Billemont
92be7f7267 Some site layout improvements. 2012-06-08 20:46:08 +02:00
Maarten Billemont
09d5e64c55 Improved signin/signout state logic. 2012-06-08 00:40:30 +02:00
Maarten Billemont
f796888901 Retire version 2 of the site. 2012-06-07 00:27:22 +02:00
Maarten Billemont
679990dc4b Improved algorithm security.
[UPDATED]   Algorithm updated to reflect advice from randombit.net
            cryptography list:
                - Add in a salt (user name) to defeat rainbow tables.
                - Add in a fixed string to scope the algorithm and avoid
                  colliding with someone else's similar or identical
                  algorithm (also helps protect against precalculated
                  rainbow tables).
                - Use HMAC instead of plain SHA to avoid SHA weaknesses.
                  The old implementation wasn't vulnerable to extension
                  attacks or other known weaknesses, but HMAC is a safer
                  choice and will bring up less suspicion.
                - Prefix strings by length as an extra precautionary
                  measure against possible bugs in hash functions.
2012-06-07 00:25:55 +02:00
Maarten Billemont
b472c85c9d Avatar display fixes.
[ADDED]     A new password type: Secure password.  20 characters, not
            word-based, very high entropy.
[FIXED]     UI bugs and improvements with the avatar display and
            password checking state display.
2012-06-06 22:38:43 +02:00
Maarten Billemont
77306e0046 Unlock and user preferences implementation.
[FIXED]     Unlock screen.
[FIXED]     Internal fixes.
[ADDED]     Avatar selection in preferences.
[ADDED]     Implementation of the other preferences.
[IMPROVED]  UI of unlock and preferences screens.
2012-06-06 00:59:09 +02:00
Maarten Billemont
0491ba3f97 Type improvements and fixes.
[IMPROVED]  Cleaner handling of types in entities.
[FIXED]     Lots of little fixes from refactoring and AppCode
            inspections, throughout.
2012-06-05 00:55:02 +02:00
Maarten Billemont
ba299d4674 User support.
[ADDED]     Support for multiple users, each their own master password.
2012-06-04 11:27:02 +02:00
Maarten Billemont
3de9a0c67e Removed apptentive ratings, added some tool tips, and some fixes.
[REMOVED]   Stop using apptentive for rating questions.  Pearl's
            built-in functionality seems nicer and more basic.
[ADDED]     Some more tool-tips to help the user, to be shown on first
            run only.
[FIXED]     The site name tip wasn't showing anymore.
[FIXED]     Some language and formatting in help.html.
2012-05-27 22:35:03 +02:00
Maarten Billemont
7d0ea4b3f5 Some usability improvements + apptentive fixes.
[IMPROVED]  Make persistence more lazy to avoid UI blocks.
[IMPROVED]  Use "Master Password" as CFBundleDisplayName at runtime.  No
            home-screen length restrictions there.
[FIXED]     Inform Apptentive of significant events.
2012-05-27 14:26:13 +02:00
Maarten Billemont
ac14b10752 Integrated Apptentive.
[ADDED]     Experimental support for Apptentive.
2012-05-23 09:30:07 +02:00
Maarten Billemont
2d8f2943e5 Fix headers of other pages of the website. 2012-05-23 08:56:56 +02:00
Maarten Billemont
4c0348b5c8 Disable get satisfaction better. 2012-05-22 00:14:38 +02:00
Maarten Billemont
a5d2f82db4 Site improvements.
[IMPROVED]  Site prepared for production version of Master Password.
[ADDED]     Screenshots and marketing stuff to the site.
[UPDATED]   Texts on the site.
2012-05-21 23:57:06 +02:00
Maarten Billemont
ec8eff2117 Sign distribution builds with distribution profiles.
[FIXED]     When resigning development applications, get-task-allowed
            isn't properly set in the binary.
2012-05-21 08:48:40 +02:00
Maarten Billemont
b7e72e98ac Change bundle display name to match 'Master Password' better. 2012-05-20 23:31:42 +02:00
Maarten Billemont
a0b1e63c74 Not a native iPad application. 2012-05-20 23:21:43 +02:00
Maarten Billemont
42704ab504 CFBundleVersion fixes for App Store validation. 2012-05-20 22:20:01 +02:00
Maarten Billemont
6cc74c8898 Fixed review button and explain button.
[FIXED]     Return to iCloud question after hitting Explain button.
[ADDED]     iTunesID for review button.
2012-05-20 20:52:13 +02:00
Maarten Billemont
44911f1d9e Improvements to UI cleanup, confirm new master passwords, texts updates.
[FIXED]     Immediately open the application on the password entry view
            if the key is forgotten instead of revealing the internals
            in a blink.
[FIXED]     Clean up the UI better when switching between master
            passwords.
[ADDED]     Ask spelling confirmation when a master password is used
            that doesn't have any known sites yet.
[ADDED]     iPad HD quality icon.
[IMPROVED]  Artworks re-generated, downscale improved, convertImages
            improved.
[IMPROVED]  Small guide text improvements.
[UPDATED]   Help texts updated for current operation and UI.
2012-05-20 20:00:39 +02:00
Maarten Billemont
16fc32ee30 Make it work on iPad. 2012-05-17 15:22:37 +02:00
Maarten Billemont
ac9534c680 Ask the user to review the application after a few launches.
[ADDED]     Using Pearl's review tracking to ask the user to review the
            application after he's used it a few times.
2012-05-16 23:52:32 +02:00
Maarten Billemont
2020637f0e Pearl update + search tip.
[ADDED]     A tip when searching for sites suggesting a site name
            format for sites and email accounts.
2012-05-15 23:27:05 +02:00
Maarten Billemont
ada6d6b36a Keychain fix + signout fix.
[FIXED]     GenericPassword class keychain items should have both an
            Account and a Service attribute.
[FIXED]     OS X: Logout when key is saved.
2012-05-13 19:50:40 +02:00
Maarten Billemont
b0875beb36 Bump Pearl for a bug in the PearlLogger. 2012-05-13 16:46:37 +02:00
Maarten Billemont
94818bb242 Build updates for OS X. 2012-05-13 10:24:19 +02:00
Maarten Billemont
1f68a4cb09 Remove iCloud reset. 2012-05-12 21:54:07 +02:00
Maarten Billemont
f7e64fe4b8 Key hash -> key ID. 2012-05-12 20:24:12 +02:00
Maarten Billemont
301366f1f1 Log messages + OTP.
[IMPROVED]  MP-15: Audit and improve log messages.
[ADDED]     If an element's counter is 0, generate a time-based OTP
            instead.  The OTP changes every 5 minutes.
2012-05-12 18:31:05 +02:00
Maarten Billemont
941b428cfc More reliable search results.
[IMPROVED]  MP-14: Made searchResultsTableView more reliable.
2012-05-12 16:04:18 +02:00
Maarten Billemont
0d638a4c3f Guide update.
[FIXED]     MP-1: Guide images were a bit outdated.
2012-05-12 00:59:58 +02:00
Maarten Billemont
cdfafa55cf Fix sign-out.
[FIXED]     MP-13: Sign Out doesn't work -- when password is saved,
            signing out signs you right back in.  Now, the saved key
            password is forgotten.
2012-05-12 00:08:19 +02:00
Maarten Billemont
82b8de5e23 iCloud toggling + internal improvements
[UPDATED]   Change TestFlight preprocessor toggles to
            TESTFLIGHT_SDK_VERSION.
[IMPROVED]  Change logic behind shared MPAppDelegate to inheritance,
            allowing for the common files to implement methods that the
            platform-specific class can override.
[IMPROVED]  Handling and checking of config changes.
[ADDED]     iCloud config toggle, allowing a user to turn on and off
            the iCloud store.
[IMPROVED]  Explanation of iCloud.
2012-05-11 23:42:29 +02:00
Maarten Billemont
6bbd183ac9 TestFlight checkpoint update + iCloud warning.
[UPDATED]   Check TARGET_OS_IPHONE instead of
            __IPHONE_OS_VERSION_MIN_REQUIRED.
[UPDATED]   A few TestFlight checkpoints names have been updated.
[ADDED]     A few new TestFlight checkpoints for new features.
[ADDED]     Warn the user when he's not using iCloud and allow him to
            switch back to iCloud.
2012-05-11 17:04:51 +02:00
Maarten Billemont
7d9131cdca Fix archive build. 2012-05-11 10:48:25 +02:00
Maarten Billemont
12fb7243d6 Launch images. 2012-05-11 09:25:19 +02:00
Maarten Billemont
eb4e25c0ba Fix importing of sites.
[FIXED]     Parsing mpsites for import.
2012-05-11 09:05:11 +02:00
Maarten Billemont
587461144b Persistence fixes on OS X.
[FIXED]     OS X: Handle recovery from unsupported stores.
[FIXED]     OS X: Use predicate instead of predicate template.
2012-05-10 01:02:55 +02:00
Maarten Billemont
9968491e3b Switch back to iCloud after resetting it. 2012-05-10 00:21:22 +02:00
Maarten Billemont
db7d68a091 Fix migration problems non-interactively.
[FIXED]     Migration problems should be fixed non-interactively: The
            main thread may well be unavailable which means we may not
            be able to actually get a message through to the user.  This
            would dead-lock the migration problem recovery.
2012-05-09 23:36:45 +02:00
Maarten Billemont
c8f9f79bb2 Handle store loading errors.
[ADDED]     Detect store loading errors and attempt to recover.
2012-05-09 19:34:00 +02:00
Maarten Billemont
21c0565619 Importing of mpsites + renames + fixes.
[ADDED]     Importing mpsites exports.
[RENAMED]   keyHashHex -> keyID.
[RENAMED]   Calculated -> Generated.
[FIXED]     iOS: Dismiss mail VC when done with it.
[FIXED]     iOS: Properly hide content tip icons when a content tip is
            shown while one with an icon is still active.
[FIXED]     iOS: Settings bundle was using old keys.
2012-05-09 10:24:47 +02:00
Maarten Billemont
04bc7a497c Exporting of sites.
[ADDED]     Ability to export site data.
[UPDATED]   Type of passwords can now include feature bits.
2012-05-08 15:57:11 +02:00
Maarten Billemont
7c5cea9c8d Mac support for preferences: rememberKey, saveKey, useICloud.
[ADDED]     OS X: Lots of warning checks when compiling.
[ADDED]     OS X: Ability to enable and disable iCloud.
[ADDED]     OS X: Support for rememberKey & saveKey.
[UPDATED]   storeKey -> saveKey: makes more sense to people.
[IMPROVED]  OS X: Password display window fancier.
2012-05-08 13:46:08 +02:00
Maarten Billemont
1b90c9bfa3 Make unlock window a sheet of the password window.
[IMPROVED]  Unlock alert a sheet of the password window.
2012-05-08 00:44:49 +02:00
Maarten Billemont
f622b2c7d4 iCloud fixes.
[UPDATED]   Moved shared MPAppDelegate code into separate files
            depending on the code's responsibility.
[UPDATED]   iCloud implementation removed in favor of
            iCloudStoreManager's managed implementation.
[FIXED]     iCloud configuration made AppStore friendly.
2012-05-07 22:32:10 +02:00
Maarten Billemont
98080ceb51 Persistence fixes and improvements.
[UPDATED]   Pearl to ARC.
[FIXED]     Crash related to persistence changes that caused UI updates
            while other UI changes were ongoing.
[IMPROVED]  Real description of MPElementEntities and use content
            whenever the password is requested.
[IMPROVED]  iOS: Handling of search result fetching and table reloading.
2012-05-07 01:18:02 +02:00
Maarten Billemont
f5d9334b06 App Store requires iCloud container name to be bundle identifier.
[FIXED]     iOS: Compile fix.
2012-05-05 16:09:25 +02:00
Maarten Billemont
f882d0fb53 Status menu.
[ADDED]     OS X: A status menu that allows you to lock and quit MP.
2012-05-05 13:32:09 +02:00
Maarten Billemont
dfc62fa8a8 Sign release apps with production cert. 2012-05-05 00:43:06 +02:00
Maarten Billemont
f5551d4823 Add a Mac icon.
[ADDED]     OS X: Icon file.
[REMOVED]   OS X: openssl & scrypt targets in favor of precompiled
            libraries.
2012-05-05 00:38:23 +02:00
Maarten Billemont
424479dada Usability improvements to OS X MP app.
[ADDED]     OS X: A status item to activate the MP window.
[ADDED]     OS X: A global hotkey (cmd-ctrl-p) to activate the MP
            window.
[ADDED]     OS X: Make the MP window dismissable by hitting Esc.
[ADDED]     OS X: Copy the site content by hitting Enter.
[FIXED]     OS X: Make the password field first responder.
[FIXED]     OS X: Don't pop the password window multiple times if the
            application gets activated while the key isn't set yet.
[IMPROVED]  OS X: Remove the MP icon from the dock.
2012-05-05 00:15:51 +02:00
Maarten Billemont
376953ae56 iCloud sync fixes.
[REMOVED]   OS X: Disabled ability to add new sites from OS X until I
            have time to implement it properly without causing
            duplicates etc.
[MOVED]     iCloud and Core Data support was centralised to iOS and OS X
            to make sure both platforms always use the same container
            configuration.
[FIXED]     iCloud sync problems.
[REMOVED]   iCloud KV is not used/needed.
2012-05-04 18:54:58 +02:00
Maarten Billemont
26f8e086bb Fix double reset counter trigger.
[FIXED]     Reset password counter triggered twice.
2012-05-03 20:17:30 +02:00
Maarten Billemont
950ce888e2 Crashlytics, Localytics, TestFlight + password change warnings.
[ADDED]     Crashlytics, Localytics.
[IMPROVED]  Async TestFlight takeOff.
[REMOVED]   TestFlight token hidden.
[FIXED]     Warnings, mostly to do with sign conversions.
[ADDED]     Warning messages whenever site's password changes, allowing
            the user to cancel the operation.
[ADDED]     Make password counter resettable by holding down on the
            counter increment button.
2012-05-03 16:49:15 +02:00
Maarten Billemont
657fef6249 Removed network from MP OS X + initial STM code MP iOS.
[REMOVED]   OS X: Removed networking code.  We're going to use SendToMac
            instead.
[ADDED]     iOS: Initial code for communicating with SendToMac hosts.
2012-03-14 00:55:49 +01:00
Maarten Billemont
0d19202ca7 Beginnings of network listener.
[ADDED]     OS X: Code to open a listening socket (WIP).
[ADDED]     OS X: Code to broadcast socket via Bonjour.
2012-03-12 18:14:01 +01:00
Maarten Billemont
1755bd1607 Bump Pearl for sheet fix.
[FIXED]     MP-9: Action sheet shows up in portrait while in landscape.
2012-03-11 16:12:18 +01:00
Maarten Billemont
dc8b6aa86c Help text update for type.
[FIXED]     MP-12: Help doesn't always properly update for element type.
2012-03-11 15:29:55 +01:00
Maarten Billemont
0c536ef640 Fix some UI issues, mostly with alerts.
[FIXED]     Schedule all UI-changing methods on the main thread.  Fixes
            some UI bugs.
[FIXED]     Attempt to calculate password for deleted element.
[FIXED]     MP-6: Close open alert when switching sites.
[FIXED]     MP-7: Remind user to change site's password when creating a
            new site.
2012-03-11 11:14:28 +01:00
Maarten Billemont
fa3680f9c4 Typo: loose -> lose.
[FIXED]     Misspelled lose as loose.

^MP-11 fixed
2012-03-06 15:49:33 +01:00
Maarten Billemont
c8e03ff016 Fix checkout of InAppSettingsKit dependency. 2012-03-06 11:15:32 +01:00
Maarten Billemont
3fcac696bb Bundle dependency dylibs in OS X app.
[FIXED]     OS X: Application bundle was missing its dependency
            libraries and couldn't run.  Now they're bundled as
            run-path dependent libraries.
2012-03-06 11:03:21 +01:00
Maarten Billemont
d0ae954dbf Working OS X prototype application.
[ADDED]     OS X: Master password input and changing.
[ADDED]     OS X: Autocompletion by searching Core Data for previously
            used sites.
[ADDED]     OS X: Working password generation for sites.
[FIXED]     Bad ciphering on little endian machines: Convert bytes to
            network endian before using them as numbers.
[FIXED]     Opening of Core Data store when iCloud is unavailable.
2012-03-06 01:04:19 +01:00
Maarten Billemont
f3c24fd96f Mac OS X build fixes of shared code from iOS.
[FIXED]     Build problems with code shared from the iOS project in the
            Mac project.
2012-03-05 22:43:20 +01:00
Maarten Billemont
02ffa9611a Prepare key handling logic for sharing with OS X.
[MOVED]     Key logic now in a common class extension on MPAppDelegate
            so it can be shared between iOS and OS X apps.
[MOVED]     MPConfig for sharing between iOS and OS X apps.
[CHANGED]   keyphrase -> key.
2012-03-05 22:19:05 +01:00
Maarten Billemont
6bda70920b Fix Pearl/scrypt/openssl on Mac + password window.
[FIXED]     Dependencies and compilation on OS X.
[ADDED]     MPPasswordWindowController: Window to handle passwords.
2012-03-05 09:53:32 +01:00
Maarten Billemont
2761355180 Initial Mac project.
[ADDED]     A basic Mac OS X project.
[ADDED]     A basic UI for the Mac project.
[FIXED]     Notification at store update from iCloud.
2012-03-04 15:31:26 +01:00
Maarten Billemont
cbf624b3da Changed file hierarchy in preparation for Mac version. 2012-03-04 10:47:20 +01:00
Maarten Billemont
9899104891 Better password font.
[FIXED]     MP-10: The font used to show didn't make a clear enough
            distinction between certain different characters.
2012-03-04 10:12:32 +01:00
Maarten Billemont
d34ec96b94 Make two site look better on lower resolutions. 2012-03-02 20:50:57 +01:00
Maarten Billemont
ac735f3ccb Fix landscape layout.
[FIXED]     View layout problems while in landscape.

- #MP-8 fixed
2012-03-01 00:09:48 +01:00
Maarten Billemont
c508ed8c46 Fix appearance of content tip edit icon.
[FIXED]     Tip on storage type passwords had a missing edit icon.

MP-5 fixed
2012-02-29 19:59:01 +01:00
Maarten Billemont
bad54f2c0c Add an informational message for testers. 2012-02-29 02:10:46 +01:00
Maarten Billemont
eae8e9b7c4 Lockscreen improvements.
[FIXED]     Switching between guide and unlock screen.
[ADDED]     Sign out button in action so you can sign in with a
            different master password.
[REMOVED]   Change password from MPConfig.  There are better facilities
            for this now.
[FIXED]     Image names in the lockscreen.
2012-02-29 01:56:58 +01:00
Maarten Billemont
2ff3f0804b Make Pearl publicly accessible. 2012-02-27 23:56:42 +01:00
Maarten Billemont
50da5c0cb1 Update for prefixed Pearl. 2012-02-27 23:38:28 +01:00
Maarten Billemont
f3196841f3 TestFlight update + search improvements.
[UPDATED]   TestFlight SDK updated to 0.8.3
[ADDED]     Log >=info messages to TestFlight
[ADDED]     Hide status bar while locked.
[ADDED]     Show all sites when search results icon is tapped.
[IMPROVED]  Search table cells.
2012-02-26 23:01:17 +01:00
Maarten Billemont
039ec9b082 Fancy master password input screen.
[ADDED]     Fancy master password input screen.
[FIXED]     Key size of stored passwords.
[FIXED]     Several UI fixes.
[FIXED]     The counter wasn't correctly added to the cipherKey.
[IMPROVED]  Site style improvements.
[UPDATED]   Site algorithm explanation update.
2012-02-25 15:44:37 +01:00
Maarten Billemont
ad9c52896d Use scrypt for deriving a safer key from the master password + website. 2012-02-13 10:28:47 +01:00
742 changed files with 1479 additions and 8944 deletions

27
.gitignore vendored
View File

@@ -1,25 +1,8 @@
# OS-Specific junk.
.DS_Store
Thumbs.db
# IntelliJ
/.idea/*
!/.idea/encodings.xml
!/.idea/inspectionProfiles
!/.idea/projectCodeStyle.xml
!/.idea/validation.xml
*.iml
/*.ipr
/*.iws
# Xcode IDE
/*.xcodeproj/*
!/*.xcodeproj/*.pbxproj
!/*.xcodeproj/xcshareddata
!/*.xcodeproj/xcshareddata/*
!/*.xcodeproj/project.xcworkspace
!/*.xcodeproj/project.xcworkspace/*
/*.xcodeproj/project.xcworkspace/xcuserdata
# IPA
/sendipa/*
!/sendipa/sendipa.conf
# Jekyll
.jekyll-cache
.sass-cache
_site

16
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,16 @@
variables:
JEKYLL_ENV: production
GIT_SUBMODULE_STRATEGY: recursive
GIT_DEPTH: "3"
pages:
stage: deploy
script:
- exec jekyll build -d public
artifacts:
paths:
- public
tags:
- jekyll
only:
- gh-pages

29
.gitmodules vendored
View File

@@ -1,6 +1,27 @@
[submodule "External/Pearl"]
path = External/Pearl
url = git@github.com:Lyndir/Pearl.git
path = platform-darwin/External/Pearl
url = git://github.com/Lyndir/Pearl.git
[submodule "External/InAppSettingsKit"]
path = External/InAppSettingsKit
url = git://github.com/futuretap/InAppSettingsKit.git
path = platform-darwin/External/InAppSettingsKit
url = git://github.com/lhunath/InAppSettingsKit.git
[submodule "External/KCOrderedAccessorFix"]
path = platform-darwin/External/KCOrderedAccessorFix
url = https://github.com/lhunath/KCOrderedAccessorFix.git
[submodule "External/AttributedMarkdown"]
path = platform-darwin/External/AttributedMarkdown
url = https://github.com/dreamwieber/AttributedMarkdown.git
[submodule "External/uicolor-utilities"]
path = platform-darwin/External/uicolor-utilities
url = git://github.com/lhunath/uicolor-utilities.git
[submodule "External/jrswizzle"]
path = platform-darwin/External/jrswizzle
url = git://github.com/jonmarimba/jrswizzle.git
[submodule "MasterPassword/Web/js/mpw-js"]
path = platform-independent/web-js/js/mpw-js
url = https://github.com/tmthrgd/mpw-js.git
[submodule "platform-darwin/External/libsodium"]
path = platform-darwin/External/libsodium
url = https://github.com/jedisct1/libsodium.git
[submodule "platform-darwin/External/libjson-c"]
path = platform-darwin/External/libjson-c
url = https://github.com/lhunath/json-c.git

5
.idea/encodings.xml generated
View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
</project>

View File

@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value />
</option>
</component>
</project>

20
.travis.yml Normal file
View File

@@ -0,0 +1,20 @@
language: objective-c
os: osx
osx_image: xcode9.2
env: TERM=dumb SHLVL=0
git:
submodules: true
script:
- "( brew install libsodium json-c )"
- "( cd ./platform-independent/cli-c && ./clean && targets='mpw mpw-bench mpw-tests' ./build && ./mpw-tests && ./mpw-cli-tests )"
- "( cd ./gradle && ./gradlew --info clean test )"
- "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword iOS' -sdk iphonesimulator )"
- "( xcodebuild -workspace platform-darwin/MasterPassword.xcworkspace -configuration 'Test' -scheme 'MasterPassword macOS' )"
notifications:
webhooks:
urls:
- "https://scalar.vector.im/api/neb/services/hooks/dHJhdmlzLWNpLyU0MGxodW5hdGglM0FseW5kaXIuY29tLyUyMWR2S1JpaW1uc0Z3dWdseEpHSyUzQWx5bmRpci5jb20"
on_success: change # always|never|change
on_failure: always
on_start: never

1
CNAME Normal file
View File

@@ -0,0 +1 @@
masterpassword.app

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 KiB

1
External/Pearl vendored

Submodule External/Pearl deleted from 62421fb92c

View File

@@ -1,199 +0,0 @@
Thanks for downloading the TestFlight SDK 0.8.2!
This document is also available on the web at https://www.testflightapp.com/sdk/doc
1. Why use the TestFlight SDK?
2. Considerations
3. How do I integrate the SDK into my project?
4. Using the Checkpoint API
5. Using the Feedback API
6. Upload your build
7. Questions API
8. View your results
9. Advanced Exception Handling
10. Remote Logging
START
1. Why use the TestFlight SDK?
The TestFlight SDK allows you to track how beta testers are testing your application. Out of the box we track simple usage information, such as which tester is using your application, their device model/OS, how long they used the application, logs of their test session, and automatic recording of any crashes they encounter.
To get the most out of the SDK we have provided the Checkpoint API.
The Checkpoint API is used to help you track exactly how your testers are using your application. Curious about which users passed level 5 in your game, or posted their high score to Twitter, or found that obscure feature? With a single line of code you can finally gather all this information. Wondering how many times your app has crashed? Wondering who your power testers are? We've got you covered. See more information on the Checkpoint API in section 4.
Alongside the Checkpoint API is the Questions interface. The Questions interface is managed on a per build basis on the TestFlight website. Find out more about the Questions Interface in section 6.
For more detailed debugging we have a remote logging solution. Find out more about our logging system with TFLog in the Remote Logging section.
2. Considerations
Information gathered by the SDK is sent to the website in real time. When an application is put into the background (iOS 4.x) or terminated (iOS 3.x) we try to send the finalizing information for the session during the time allowed for finalizing the application. Should all of the data not get sent the remaining data will be sent the next time the application is launched. As such, to get the most out of the SDK we recommend your application support iOS 4.0 and higher.
This SDK can be run from both the iPhone Simulator and Device and has been tested using Xcode 4.0.
3. How do I integrate the SDK into my project?
1. Add the files to your project: File -> Add Files to "<your project name>"
1. Find and select the folder that contains the SDK
2. Make sure that "Copy items into destination folder (if needed)" is checked
3. Set Folders to "Create groups for any added folders"
4. Select all targets that you want to add the SDK to
2. Verify that libTestFlight.a has been added to the Link Binary With Libraries Build Phase for the targets you want to use the SDK with
1. Select your Project in the Project Navigator
2. Select the target you want to enable the SDK for
3. Select the Build Phases tab
4. Open the Link Binary With Libraries Phase
5. If libTestFlight.a is not listed, drag and drop the library from your Project Navigator to the Link Binary With Libraries area
6. Repeat Steps 2 - 5 until all targets you want to use the SDK with have the SDK linked
3. In your Application Delegate:
1. Import TestFlight: `#import "TestFlight.h"`
NOTE: If you do not want to import TestFlight.h in every file you may add the above line into you pre-compiled header (`<projectname>_Prefix.pch`) file inside of the
#ifdef __OBJC__ section.
This will give you access to the SDK across all files.
2. Get your Team Token which you can find at [http://testflightapp.com/dashboard/team/](http://testflightapp.com/dashboard/team/) select the team you are using from the team selection drop down list on the top of the page and then select edit.
3. Launch TestFlight with your Team Token
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// start of your application:didFinishLaunchingWithOptions
// ...
[TestFlight takeOff:@"Insert your Team Token here"];
// The rest of your application:didFinishLaunchingWithOptions method
// ...
}
4. To report crashes to you we install our own uncaught exception handler. If you are not currently using an exception handler of your own then all you need to do is go to the next step. If you currently use an Exception Handler, or you use another framework that does please go to the section on advanced exception handling.
4. To enable the best crash reporting possible we recommend setting the following project build settings in Xcode to NO for all targets that you want to have live crash reporting for. You can find build settings by opening the Project Navigator (default command+1 or command+shift+j) then clicking on the project you are configuring (usually the first selection in the list). From there you can choose to either change the global project settings or settings on an individual project basis. All settings below are in the Deployment Section.
1. Deployment Post Processing
2. Strip Debug Symbols During Copy
3. Strip Linked Product
4. Use the Checkpoint API to create important checkpoints throughout your application.
When a tester does something you care about in your app you can pass a checkpoint. For example completing a level, adding a todo item, etc. The checkpoint progress is used to provide insight into how your testers are testing your apps. The passed checkpoints are also attached to crashes, which can help when creating steps to replicate.
`[TestFlight passCheckpoint:@"CHECKPOINT_NAME"];`
Use `passCheckpoint:` to track when a user performs certain tasks in your application. This can be useful for making sure testers are hitting all parts of your application, as well as tracking which testers are being thorough.
5. Using the Feedback API
To launch unguided feedback call the `openFeedbackView` method. We recommend that you call this from a GUI element.
-(IBAction)launchFeedback {
[TestFlight openFeedbackView];
}
Once users have submitted feedback from inside of the application you can view it in the feedback area of your build page.
6. Upload your build.
After you have integrated the SDK into your application you need to upload your build to TestFlight. You can upload from your dashboard or or using the Upload API, full documentation at <https://testflightapp.com/api/doc/>
7. Add Questions to Checkpoints
In order to ask a question, you'll need to associate it with a checkpoint. Make sure your checkpoints are initialized by running your app and hitting them all yourself before you start adding questions.
There are three question types available: Yes/No, Multiple Choice, and Long Answer.
To create questions, visit your builds Questions page and click on 'Add Question'. If you choose Multiple Choice, you'll need to enter a list of possible answers for your testers to choose from &mdash; otherwise, you'll only need to enter your question's, well, question. If your build has no questions, you can also choose to migrate questions from another build (because seriously &mdash; who wants to do all that typing again)?
After restarting your application on an approved device, when you pass the checkpoint associated with your questions a TestFlight modal question form will appear on the screen asking the beta tester to answer your question.
After you upload a new build to TestFlight you will need to associate questions once again. However if your checkpoints and questions have remained the same you can choose "copy questions from an older build" and choose which build to copy the questions from.
8. View your results.
As testers install your build and start to test it you will see their session data on the web on the build report page for the build you've uploaded.
9. Advanced Exception Handling
An uncaught exception means that your application is in an unknown state and there is not much that you can do but try and exit gracefully. Our SDK does its best to get the data we collect in this situation to you while it is crashing, but it is designed in such a way that the important act of saving the data occurs in as safe way a way as possible before trying to send anything. If you do use uncaught exception or signal handlers install your handlers before calling `takeOff`. Our SDK will then call your handler while ours is running. For example:
/*
My Apps Custom uncaught exception catcher, we do special stuff here, and TestFlight takes care of the rest
**/
void HandleExceptions(NSException *exception) {
NSLog(@"This is where we save the application data during a exception");
// Save application data on crash
}
/*
My Apps Custom signal catcher, we do special stuff here, and TestFlight takes care of the rest
**/
void SignalHandler(int sig) {
NSLog(@"This is where we save the application data during a signal");
// Save application data on crash
}
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// installs HandleExceptions as the Uncaught Exception Handler
NSSetUncaughtExceptionHandler(&HandleExceptions);
// create the signal action structure
struct sigaction newSignalAction;
// initialize the signal action structure
memset(&newSignalAction, 0, sizeof(newSignalAction));
// set SignalHandler as the handler in the signal action structure
newSignalAction.sa_handler = &SignalHandler;
// set SignalHandler as the handlers for SIGABRT, SIGILL and SIGBUS
sigaction(SIGABRT, &newSignalAction, NULL);
sigaction(SIGILL, &newSignalAction, NULL);
sigaction(SIGBUS, &newSignalAction, NULL);
// Call takeOff after install your own unhandled exception and signal handlers
[TestFlight takeOff:@"Insert your Team Token here"];
// continue with your application initialization
}
You do not need to add the above code if your application does not use exception handling already.
10. Remote Logging
To perform remote logging you can use the TFLog method which logs in a few different methods described below. In order to make the transition from NSLog to TFLog easy we have used the same method signature for TFLog as NSLog. You can easily switch over to TFLog by adding the following macro to your header
#define NSLog TFLog
That will do a switch from NSLog to TFLog, if you want more information, such as file name and line number you can use a macro like
#define NSLog(__FORMAT__, ...) TFLog((@"%s [Line %d] " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
Which will produce output that looks like
-[HTFCheckpointsController showYesNoQuestion:] [Line 45] Pressed YES/NO
We have implemented three different loggers.
1. TestFlight logger
2. Apple System Log logger
3. STDERR logger
Each of the loggers log asynchronously and all TFLog calls are non blocking. The TestFlight logger writes its data to a file which is then sent to our servers on Session End events. The Apple System Logger sends its messages to the Apple System Log and are viewable using the Organizer in Xcode when the device is attached to your computer. The ASL logger can be disabled by turning it off in your TestFlight options
[TestFlight setOptions:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"logsToConsole"]];
The default option is YES.
The STDERR logger sends log messages to STDERR so that you can see your log statements while debugging. The STDERR logger is only active when a debugger is attached to your application.
END
Please contact us if you have any questions.
The TestFlight Team
w. http://www.testflightapp.com
e. beta@testflightapp.com

View File

@@ -1,71 +0,0 @@
//
// TestFlight.h
// libTestFlight
//
// Created by Jonathan Janzen on 06/11/11.
// Copyright 2011 TestFlight. All rights reserved.
#import <Foundation/Foundation.h>
#define TESTFLIGHT_SDK_VERSION @"0.8.2"
#undef TFLog
#if __cplusplus
extern "C" {
#endif
void TFLog(NSString *format, ...);
#if __cplusplus
}
#endif
/**
* TestFlight object
* All methods are class level
*/
@interface TestFlight : NSObject {
}
/**
* Add custom environment information
* If you want to track custom information such as a user name from your application you can add it here
*
* @param information A string containing the environment you are storing
* @param key The key to store the information with
*/
+ (void)addCustomEnvironmentInformation:(NSString *)information forKey:(NSString*)key;
/**
* Starts a TestFlight session
*
* @param teamToken Will be your team token obtained from https://testflightapp.com/dashboard/team/edit/
*/
+ (void)takeOff:(NSString *)teamToken;
/**
* Sets custom options
*
* @param options NSDictionary containing the options you want to set available options are described below
*
* Option Accepted Values Description
* reinstallCrashHandlers [ NSNumber numberWithBool:YES ] Reinstalls crash handlers, to be used if a third party
* library installs crash handlers overtop of the TestFlight Crash Handlers
* logToConsole [ NSNumber numberWithBool:YES ] YES - default, sends log statements to Apple System Log and TestFlight log
* NO - sends log statements to TestFlight log only
* sendLogOnlyOnCrash [ NSNumber numberWithBool:YES ] NO - default, sends logs to TestFlight at the end of every session
* YES - sends logs statements to TestFlight only if there was a crash
*/
+ (void)setOptions:(NSDictionary*)options;
/**
* Track when a user has passed a checkpoint after the flight has taken off. Eg. passed level 1, posted high score
*
* @param checkpointName The name of the checkpoint, this should be a static string
*/
+ (void)passCheckpoint:(NSString *)checkpointName;
/**
* Opens a feedback window that is not attached to a checkpoint
*/
+ (void)openFeedbackView;
@end

Binary file not shown.

View File

@@ -1,94 +0,0 @@
0.8.2 - December 20, 2011
Promoted 0.8.2 BETA 4 to stable
Known Issues:
Under some circumstances Session End events may not be sent until the next launch.
With large log files Session End events may take a long time to show up.
Tested compiled library with
Xcode 4.3
Xcode 4.2
Xcode 4.1
Xcode 3.2.6
0.8.2 BETA 4 - December 12, 2011
Prevented "The string argument is NULL" from occuring during finishedHandshake in rare cases
Resolved issue where background data may not be sent
0.8.2 BETA 3 - December 8, 2011
Added auto-release pools to background setup and tear down
Added C++ specific code to TFLog declaration
0.8.2 BETA 2 - December 5, 2011
Fixed the "pointer being freed was not allocated" bug
0.8.1 - November 18, 2011
Implemented TFLog logging system, see README for more information
Fixed an issue where Session End events may not be sent until next launch
Fixed an issue where duplicate events could be sent
Fixed an issue with Session End events not being sent from some iPod touch models
Tested compiled library with
Xcode 4.2
Xcode 4.1
Xcode 3.2.6
0.8 - November 8, 2011
Added SIGTRAP as a signal type that we catch
Removed all Objective-c from crash reporting
Removed the use of non signal safe functions from signal handling
Created a signal safe way to get symbols from a stack trace
Changed the keyboardType for Long Answer Questions and Feedback to allow for international character input
Changed TESTFLIGHT_SDK_VERSION string to be an NSString
Changed cache folder from Library/Caches/TestFlight to Library/Caches/com.testflight.testflightsdk
Fixed issue with saving data when device is offline
Fixed compability issues with iOS 3
Added calling into the rootViewController shouldAutorotateToInterfaceOrientation if a rootViewController is set
Made the comments in TestFlight.h compatible with Appledoc
Tested compiled library with
Xcode 4.2
Xcode 4.1
Xcode 3.2
0.7.2 - September 29, 2011
Changed TESTFLIGHT_SDK_VERSION string to be an NSString
Fixed an issue where exiting an application while the SDK is active caused modal views to be dismissed
0.7.1 - September 22, 2011
Internal release
Refactoring
0.7 - September 21, 2011
Moved TestFlight images and data to the Library/Caches folder
Resolved an issue where sometimes the rootViewController could not be found and feedback, questions and upgrade views would not be displayed
In application upgrade changed to allow skipping until the next version is installed and allows upgrades to be forced
Fixed a memory leak when launching questions
0.6 - September 2, 2011
Renamed base64_encode to testflight_base64_encode to remove a conflict with other third party libraries
Added ability to reinstall crash handlers when they are overwritten using the setOptions API
Fixed an issue where crash reports might not get sent under certain circumstances
Fixed a deadlock when the application is put in the background and then resumed before all information can be sent
Fixed an issue when attempting to un-install all signal handlers during a signal
Added support for landscape mode on the iPad to the Questions and Feedback views
Crash reporting now works in versions of Xcode earlier than 4.2
Fixed a memory leak during handshake
0.5 - August 19, 2011
Feedback that is not attached to a checkpoint [TestFlight openFeedbackView]
Usability changes to question views
Removed pause and resume sessions, replaced with sessions being stopped and started
Added text auto correction to the Long Answer question type
Crash reports now send on crash instead of next launch
0.4 - August 15, 2011
In Application Feedback with Questions
In application updates
Custom Environment Information added
Networking stack reimplementation
Exception handling fixes
0.3 - June 15, 2011
Removed all mention of JSONKit from the README
Added support for using both the Bundle Version and the Bundle Short Version string
0.2 - June 14, 2011
Removed all categories this allows users to use the SDK without having to set -ObjC and -load_all
Prefixed JSONKit for use in TestFlight to remove reported issues where some users were already using JSONKit
Added support for armv6 again
0.1 - June 11, 2011
Initial Version

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:MasterPassword.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
<false/>
</dict>
</plist>

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Production">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Production"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Production"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Production">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Production"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "DA5BFA43147E415C00F98B1E"
BuildableName = "MasterPassword.app"
BlueprintName = "MasterPassword"
ReferencedContainer = "container:MasterPassword.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

Binary file not shown.

Binary file not shown.

View File

@@ -1,30 +0,0 @@
//
// MPAppDelegate.h
// MasterPassword
//
// Created by Maarten Billemont on 24/11/11.
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MPAppDelegate : AbstractAppDelegate
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (strong, nonatomic) NSString *keyPhrase;
@property (strong, nonatomic) NSData *keyPhraseHash;
@property (strong, nonatomic) NSString *keyPhraseHashHex;
+ (MPAppDelegate *)get;
+ (NSManagedObjectModel *)managedObjectModel;
+ (NSManagedObjectContext *)managedObjectContext;
- (void)saveContext;
- (NSURL *)applicationDocumentsDirectory;
- (void)showGuide;
- (void)loadKeyPhrase;
@end

View File

@@ -1,492 +0,0 @@
//
// MPAppDelegate.m
// MasterPassword
//
// Created by Maarten Billemont on 24/11/11.
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#import "MPAppDelegate.h"
#import "MPMainViewController.h"
#import "IASKSettingsReader.h"
@interface MPAppDelegate ()
+ (NSDictionary *)keyPhraseQuery;
+ (NSDictionary *)keyPhraseHashQuery;
- (void)forgetKeyPhrase;
- (void)loadStoredKeyPhrase;
- (void)askKeyPhrase;
@end
@implementation MPAppDelegate
@synthesize managedObjectModel = __managedObjectModel;
@synthesize managedObjectContext = __managedObjectContext;
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator;
@synthesize keyPhrase = _keyPhrase;
@synthesize keyPhraseHash = _keyPhraseHash;
@synthesize keyPhraseHashHex = _keyPhraseHashHex;
+ (void)initialize {
#ifdef DEBUG
[Logger get].autoprintLevel = LogLevelTrace;
[NSClassFromString(@"WebView") performSelector:@selector(_enableRemoteInspector)];
#endif
}
+ (NSDictionary *)keyPhraseQuery {
static NSDictionary *MPKeyPhraseQuery = nil;
if (!MPKeyPhraseQuery)
MPKeyPhraseQuery = [KeyChain createQueryForClass:kSecClassGenericPassword
attributes:[NSDictionary dictionaryWithObject:@"MasterPassword"
forKey:(__bridge id)kSecAttrService]
matches:nil];
return MPKeyPhraseQuery;
}
+ (NSDictionary *)keyPhraseHashQuery {
static NSDictionary *MPKeyPhraseHashQuery = nil;
if (!MPKeyPhraseHashQuery)
MPKeyPhraseHashQuery = [KeyChain createQueryForClass:kSecClassGenericPassword
attributes:[NSDictionary dictionaryWithObject:@"MasterPasswordHash"
forKey:(__bridge id)kSecAttrService]
matches:nil];
return MPKeyPhraseHashQuery;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifndef PRODUCTION
[TestFlight takeOff:@"bd44885deee7adce0645ce8e5498d80a_NDQ5NDQyMDExLTEyLTAyIDExOjM1OjQ4LjQ2NjM4NA"];
[TestFlight setOptions:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], @"logToConsole",
nil]];
[TestFlight passCheckpoint:MPTestFlightCheckpointLaunched];
#endif
UIImage *navBarImage = [[UIImage imageNamed:@"ui_navbar_container"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsLandscapePhone];
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0], UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Helvetica-Neue" size:0.0], UITextAttributeFont,
nil]];
UIImage *navBarButton = [[UIImage imageNamed:@"ui_navbar_button"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)];
UIImage *navBarBack = [[UIImage imageNamed:@"ui_navbar_back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)];
[[UIBarButtonItem appearance] setBackgroundImage:navBarButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:navBarBack forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsLandscapePhone];
[[UIBarButtonItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Helvetica-Neue" size:0.0], UITextAttributeFont,
nil]
forState:UIControlStateNormal];
UIImage *toolBarImage = [[UIImage imageNamed:@"ui_toolbar_container"] resizableImageWithCapInsets:UIEdgeInsetsMake(25, 5, 5, 5)];
[[UISearchBar appearance] setBackgroundImage:toolBarImage];
[[UIToolbar appearance] setBackgroundImage:toolBarImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
/*
UIImage *minImage = [[UIImage imageNamed:@"slider-minimum.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
UIImage *maxImage = [[UIImage imageNamed:@"slider-maximum.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 0)];
UIImage *thumbImage = [UIImage imageNamed:@"slider-handle.png"];
[[UISlider appearance] setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[[UISlider appearance] setMinimumTrackImage:minImage forState:UIControlStateNormal];
[[UISlider appearance] setThumbImage:thumbImage forState:UIControlStateNormal];
UIImage *segmentSelected = [[UIImage imageNamed:@"segcontrol_sel.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
UIImage *segmentUnselected = [[UIImage imageNamed:@"segcontrol_uns.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 15, 0, 15)];
UIImage *segmentSelectedUnselected = [UIImage imageNamed:@"segcontrol_sel-uns.png"];
UIImage *segUnselectedSelected = [UIImage imageNamed:@"segcontrol_uns-sel.png"];
UIImage *segmentUnselectedUnselected = [UIImage imageNamed:@"segcontrol_uns-uns.png"];
[[UISegmentedControl appearance] setBackgroundImage:segmentUnselected forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setBackgroundImage:segmentSelected forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentUnselectedUnselected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segmentSelectedUnselected forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UISegmentedControl appearance] setDividerImage:segUnselectedSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault];*/
[[NSNotificationCenter defaultCenter] addObserverForName:kIASKAppSettingChanged object:nil queue:nil
usingBlock:^(NSNotification *note) {
if ([NSStringFromSelector(@selector(storeKeyPhrase))
isEqualToString:[note.object description]]) {
self.keyPhrase = self.keyPhrase;
[self loadKeyPhrase];
}
if ([NSStringFromSelector(@selector(forgetKeyPhrase))
isEqualToString:[note.object description]])
[self loadKeyPhrase];
}];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
if ([[MPConfig get].showQuickStart boolValue])
[self showGuide];
else
[self loadKeyPhrase];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointActivated];
#endif
}
- (void)showGuide {
[self.navigationController performSegueWithIdentifier:@"MP_Guide" sender:self];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointShowGuide];
#endif
}
- (void)loadKeyPhrase {
if ([[MPConfig get].forgetKeyPhrase boolValue]) {
[self forgetKeyPhrase];
return;
}
[self loadStoredKeyPhrase];
if (!self.keyPhrase) {
// Key phrase is not known. Ask user to set/specify it.
dbg(@"Key phrase not known. Will ask user.");
[self askKeyPhrase];
return;
}
}
- (void)forgetKeyPhrase {
dbg(@"Forgetting key phrase.");
[AlertViewController showAlertWithTitle:@"Changing Master Password"
message:
@"You've requested to change your master password.\n\n"
@"If you continue, your current sites and passwords will become unavailable.\n\n"
@"You can always change back to the old master password later.\n"
@"Your old sites and passwords will then become available again."
viewStyle:UIAlertViewStyleDefault
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
if (buttonIndex != [alert cancelButtonIndex]) {
// Key phrase reset. Delete it.
dbg(@"Deleting master key phrase and hash from key chain.");
[KeyChain deleteItemForQuery:[MPAppDelegate keyPhraseQuery]];
[KeyChain deleteItemForQuery:[MPAppDelegate keyPhraseHashQuery]];
}
[self loadKeyPhrase];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointMPChanged];
#endif
}
cancelTitle:[PearlStrings get].commonButtonAbort
otherTitles:[PearlStrings get].commonButtonContinue, nil];
[MPConfig get].forgetKeyPhrase = [NSNumber numberWithBool:NO];
}
- (void)loadStoredKeyPhrase {
if ([[MPConfig get].storeKeyPhrase boolValue]) {
// Key phrase is stored in keychain. Load it.
dbg(@"Loading master key phrase from key chain.");
NSData *keyPhraseData = [KeyChain dataOfItemForQuery:[MPAppDelegate keyPhraseQuery]];
dbg(@" -> Master key phrase %@.", keyPhraseData? @"found": @"NOT found");
self.keyPhrase = keyPhraseData? [[NSString alloc] initWithBytes:keyPhraseData.bytes length:keyPhraseData.length
encoding:NSUTF8StringEncoding]: nil;
} else {
// Key phrase should not be stored in keychain. Delete it.
dbg(@"Deleting master key phrase from key chain.");
[KeyChain deleteItemForQuery:[MPAppDelegate keyPhraseQuery]];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointMPUnstored];
#endif
}
}
- (void)askKeyPhrase {
dispatch_async(dispatch_get_main_queue(), ^{
NSData *keyPhraseHash = [KeyChain dataOfItemForQuery:[MPAppDelegate keyPhraseHashQuery]];
dbg(@"Key phrase hash %@.", keyPhraseHash? @"known": @"NOT known");
[AlertViewController showAlertWithTitle:@"Master Password"
message:keyPhraseHash? @"Unlock with your master password:": @"Choose your master password:"
viewStyle:UIAlertViewStyleSecureTextInput
tappedButtonBlock:
^(UIAlertView *alert, NSInteger buttonIndex) {
if (buttonIndex == [alert cancelButtonIndex])
exit(0);
NSString *answer = [alert textFieldAtIndex:0].text;
if (![answer length]) {
// User didn't enter a key phrase.
[AlertViewController showAlertWithTitle:[PearlStrings get].commonTitleError
message:@"No master password entered."
viewStyle:UIAlertViewStyleDefault
tappedButtonBlock:
^(UIAlertView *alert, NSInteger buttonIndex) {
exit(0);
} cancelTitle:@"Quit" otherTitles:nil];
}
NSData *answerHash = [answer hashWith:PearlDigestSHA512];
if (keyPhraseHash)
// A key phrase hash is known -> a key phrase is set.
// Make sure the user's entered key phrase matches it.
if (![keyPhraseHash isEqual:answerHash]) {
dbg(@"Key phrase hash mismatch. Expected: %@, answer: %@.", keyPhraseHash, answerHash);
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointMPMismatch];
#endif
[AlertViewController showAlertWithTitle:[PearlStrings get].commonTitleError
message:
@"Incorrect master password.\n\n"
@"If you are trying to use the app with a different master password, "
@"flip the 'Change my password' option in Settings."
viewStyle:UIAlertViewStyleDefault
tappedButtonBlock:
^(UIAlertView *alert, NSInteger buttonIndex) {
exit(0);
} cancelTitle:@"Quit" otherTitles:nil];
return;
}
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointMPAsked];
#endif
self.keyPhrase = answer;
} cancelTitle:@"Quit" otherTitles:@"Unlock", nil];
});
}
- (void)applicationWillResignActive:(UIApplication *)application {
[self saveContext];
if (![[MPConfig get].rememberKeyPhrase boolValue])
self.keyPhrase = nil;
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointDeactivated];
#endif
}
- (void)applicationWillTerminate:(UIApplication *)application {
[self saveContext];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointTerminated];
#endif
}
+ (MPAppDelegate *)get {
return (MPAppDelegate *)[super get];
}
+ (NSManagedObjectContext *)managedObjectContext {
return [(MPAppDelegate *)[UIApplication sharedApplication].delegate managedObjectContext];
}
+ (NSManagedObjectModel *)managedObjectModel {
return [(MPAppDelegate *)[UIApplication sharedApplication].delegate managedObjectModel];
}
- (void)saveContext {
[self.managedObjectContext performBlock:^{
NSError *error = nil;
if ([self.managedObjectContext hasChanges] && ![self.managedObjectContext save:&error])
err(@"Unresolved error %@", error);
}];
}
- (void)setKeyPhrase:(NSString *)keyPhrase {
_keyPhrase = keyPhrase;
if (keyPhrase) {
self.keyPhraseHash = [keyPhrase hashWith:PearlDigestSHA512];
self.keyPhraseHashHex = [self.keyPhraseHash encodeHex];
dbg(@"Updating master key phrase hash to: %@.", self.keyPhraseHashHex);
[KeyChain addOrUpdateItemForQuery:[MPAppDelegate keyPhraseHashQuery]
withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
self.keyPhraseHash, (__bridge id)kSecValueData,
kSecAttrAccessibleWhenUnlocked, (__bridge id)kSecAttrAccessible,
nil]];
if ([[MPConfig get].storeKeyPhrase boolValue]) {
dbg(@"Storing master key phrase in key chain.");
[KeyChain addOrUpdateItemForQuery:[MPAppDelegate keyPhraseQuery]
withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[keyPhrase dataUsingEncoding:NSUTF8StringEncoding], (__bridge id)kSecValueData,
kSecAttrAccessibleWhenUnlocked, (__bridge id)kSecAttrAccessible,
nil]];
}
#ifndef PRODUCTION
[TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointSetKeyphraseLength, _keyPhrase.length]];
#endif
}
}
#pragma mark - Core Data stack
/**
Returns the managed object context for the application.
If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.
*/
- (NSManagedObjectContext *)managedObjectContext
{
if (__managedObjectContext)
return __managedObjectContext;
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator) {
__managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
__managedObjectContext.persistentStoreCoordinator = coordinator;
[[NSNotificationCenter defaultCenter] addObserverForName:NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:coordinator
queue:nil
usingBlock:^(NSNotification *note) {
dbg(@"Ubiquitous content change: %@", note);
[__managedObjectContext performBlock:^{
[__managedObjectContext mergeChangesFromContextDidSaveNotification:note];
[[NSNotificationCenter defaultCenter] postNotification:
[NSNotification notificationWithName:UIScreenModeDidChangeNotification
object:self userInfo:[note userInfo]]];
}];
}];
}
return __managedObjectContext;
}
/**
Returns the managed object model for the application.
If the model doesn't already exist, it is created from the application's model.
*/
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel)
return __managedObjectModel;
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"MasterPassword" withExtension:@"momd"];
return __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
}
/**
Returns the persistent store coordinator for the application.
If the coordinator doesn't already exist, it is created and the application's store added to it.
*/
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (__persistentStoreCoordinator)
return __persistentStoreCoordinator;
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"MasterPassword.sqlite"];
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
[__persistentStoreCoordinator lock];
NSError *error = nil;
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL
options:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
@"MasterPassword.store", NSPersistentStoreUbiquitousContentNameKey,
[[[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil]
URLByAppendingPathComponent:@"store"
isDirectory:YES], NSPersistentStoreUbiquitousContentURLKey,
nil]
error:&error])
{
/*
Replace this implementation with code to handle the error appropriately.
abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
Typical reasons for an error here include:
* The persistent store is not accessible;
* The schema for the persistent store is incompatible with current managed object model.
Check the error message to determine what the actual problem was.
If the persistent store is not accessible, there is typically something wrong with the file path. Often, a file URL is pointing into the application's resources directory instead of a writeable directory.
If you encounter schema incompatibility errors during development, you can reduce their frequency by:
* Simply deleting the existing store:
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil]
* Performing automatic lightweight migration by passing the following dictionary as the options parameter:
[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
Lightweight migration will only work for a limited set of schema changes; consult "Core Data Model Versioning and Data Migration Programming Guide" for details.
*/
err(@"Unresolved error %@, %@", error, [error userInfo]);
#if DEBUG
wrn(@"Deleted datastore: %@", storeURL);
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];
#endif
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointStoreIncompatible];
#endif
@throw [NSException exceptionWithName:error.domain reason:error.localizedDescription
userInfo:[NSDictionary dictionaryWithObject:error forKey:@"cause"]];
}
if (![[NSFileManager defaultManager] setAttributes:[NSDictionary dictionaryWithObject:NSFileProtectionComplete
forKey:NSFileProtectionKey]
ofItemAtPath:storeURL.path error:&error])
err(@"Unresolved error %@, %@", error, [error userInfo]);
[__persistentStoreCoordinator unlock];
return __persistentStoreCoordinator;
}
#pragma mark - Application's Documents directory
/**
Returns the URL to the application's Documents directory.
*/
- (NSURL *)applicationDocumentsDirectory
{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
@end

View File

@@ -1,20 +0,0 @@
//
// MPConfig.h
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
@interface MPConfig : Config
@property (nonatomic, retain) NSNumber *dataStoreError;
@property (nonatomic, retain) NSNumber *storeKeyPhrase;
@property (nonatomic, retain) NSNumber *rememberKeyPhrase;
@property (nonatomic, retain) NSNumber *forgetKeyPhrase;
@property (nonatomic, retain) NSNumber *helpHidden;
@property (nonatomic, retain) NSNumber *showQuickStart;
+ (MPConfig *)get;
@end

View File

@@ -1,38 +0,0 @@
//
// MPConfig.m
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPConfig.h"
@implementation MPConfig
@dynamic dataStoreError, storeKeyPhrase, rememberKeyPhrase, forgetKeyPhrase, helpHidden, showQuickStart;
- (id)init {
if(!(self = [super init]))
return self;
[self.defaults registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(dataStoreError)),
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(storeKeyPhrase)),
[NSNumber numberWithBool:YES], NSStringFromSelector(@selector(rememberKeyPhrase)),
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(forgetKeyPhrase)),
[NSNumber numberWithBool:NO], NSStringFromSelector(@selector(helpHidden)),
[NSNumber numberWithBool:YES], NSStringFromSelector(@selector(showQuickStart)),
nil]];
return self;
}
+ (MPConfig *)get {
return (MPConfig *)[super get];
}
@end

View File

@@ -1,24 +0,0 @@
//
// MPElementEntity.h
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@interface MPElementEntity : NSManagedObject
@property (nonatomic, retain) NSString *name;
@property (nonatomic, retain) NSString *mpHashHex;
@property (nonatomic, assign) int16_t type;
@property (nonatomic, assign) int16_t uses;
@property (nonatomic, assign) NSTimeInterval lastUsed;
@property (nonatomic, retain, readonly) id content;
- (void)use;
@end

View File

@@ -1,42 +0,0 @@
//
// MPElementEntity.m
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPElementEntity.h"
@implementation MPElementEntity
@dynamic name;
@dynamic mpHashHex;
@dynamic type;
@dynamic uses;
@dynamic lastUsed;
- (void)use {
++self.uses;
self.lastUsed = [[NSDate date] timeIntervalSinceReferenceDate];
}
- (id)content {
@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"Content implementation missing." userInfo:nil];
}
- (NSString *)description {
return [[self content] description];
}
- (NSString *)debugDescription {
return [NSString stringWithFormat:@"{%@: name=%@, mpHashHex=%@, type=%d, uses=%d, lastUsed=%@}",
NSStringFromClass([self class]), self.name, self.mpHashHex, self.type, self.uses, self.lastUsed];
}
@end

View File

@@ -1,18 +0,0 @@
//
// MPElementGeneratedEntity.h
// MasterPassword
//
// Created by Maarten Billemont on 16/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "MPElementEntity.h"
@interface MPElementGeneratedEntity : MPElementEntity
@property (nonatomic, assign) int16_t counter;
@end

View File

@@ -1,31 +0,0 @@
//
// MPElementGeneratedEntity.m
// MasterPassword
//
// Created by Maarten Billemont on 16/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPElementGeneratedEntity.h"
#import "MPAppDelegate.h"
@implementation MPElementGeneratedEntity
@dynamic counter;
- (id)content {
assert(self.type & MPElementTypeClassCalculated);
if (![self.name length])
return nil;
if (self.type & MPElementTypeClassCalculated)
return MPCalculateContent(self.type, self.name, [MPAppDelegate get].keyPhrase, self.counter);
@throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:[NSString stringWithFormat:@"Unsupported type: %d", self.type] userInfo:nil];
}
@end

View File

@@ -1,18 +0,0 @@
//
// MPElementStoredEntity.h
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#import "MPElementEntity.h"
@interface MPElementStoredEntity : MPElementEntity
@property (nonatomic, retain, readwrite) id content;
@end

View File

@@ -1,65 +0,0 @@
//
// MPElementStoredEntity.m
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPElementStoredEntity.h"
#import "MPAppDelegate.h"
@interface MPElementStoredEntity ()
@property (nonatomic, retain, readwrite) id contentObject;
@end
@implementation MPElementStoredEntity
@dynamic contentObject;
+ (NSDictionary *)queryForDevicePrivateElementNamed:(NSString *)name {
return [KeyChain createQueryForClass:kSecClassGenericPassword
attributes:[NSDictionary dictionaryWithObjectsAndKeys:
@"DevicePrivate", (__bridge id)kSecAttrService,
name, (__bridge id)kSecAttrAccount,
nil]
matches:nil];
}
- (id)content {
assert(self.type & MPElementTypeClassStored);
NSData *encryptedContent;
if (self.type == MPElementTypeStoredDevicePrivate)
encryptedContent = [KeyChain dataOfItemForQuery:[MPElementStoredEntity queryForDevicePrivateElementNamed:self.name]];
else
encryptedContent = self.contentObject;
NSData *decryptedContent = [encryptedContent decryptWithSymmetricKey:[[MPAppDelegate get].keyPhrase
dataUsingEncoding:NSUTF8StringEncoding]
usePadding:YES];
return [[NSString alloc] initWithBytes:decryptedContent.bytes length:decryptedContent.length encoding:NSUTF8StringEncoding];
}
- (void)setContent:(id)content {
NSData *encryptedContent = [[content description] encryptWithSymmetricKey:[[MPAppDelegate get].keyPhrase
dataUsingEncoding:NSUTF8StringEncoding]
usePadding:YES];
if (self.type == MPElementTypeStoredDevicePrivate) {
[KeyChain addOrUpdateItemForQuery:[MPElementStoredEntity queryForDevicePrivateElementNamed:self.name]
withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
encryptedContent, (__bridge id)kSecValueData,
kSecAttrAccessibleWhenUnlockedThisDeviceOnly, (__bridge id)kSecAttrAccessible,
nil]];
self.contentObject = nil;
} else
self.contentObject = encryptedContent;
}
@end

View File

@@ -1,17 +0,0 @@
//
// MPGuideViewController.h
// MasterPassword
//
// Created by Maarten Billemont on 30/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface MPGuideViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
- (IBAction)close;
@end

View File

@@ -1,46 +0,0 @@
//
// MPGuideViewController.m
// MasterPassword
//
// Created by Maarten Billemont on 30/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPGuideViewController.h"
#import "MPAppDelegate.h"
@implementation MPGuideViewController
@synthesize scrollView;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (void)viewDidLoad {
[super viewDidLoad];
[UIUtils autoSizeContent:self.scrollView];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[MPConfig get].showQuickStart = [NSNumber numberWithBool:NO];
[[MPAppDelegate get] loadKeyPhrase];
}
- (void)viewDidUnload {
[self setScrollView:nil];
[super viewDidUnload];
}
- (IBAction)close {
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
@end

View File

@@ -1,46 +0,0 @@
//
// MPMainViewController.h
// MasterPassword
//
// Created by Maarten Billemont on 24/11/11.
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#import "MPTypeViewController.h"
#import "MPElementEntity.h"
#import "MPSearchDelegate.h"
#import "IASKAppSettingsViewController.h"
@interface MPMainViewController : UIViewController <MPTypeDelegate, UITextFieldDelegate, UISearchBarDelegate, MPSearchResultsDelegate, UIWebViewDelegate, IASKSettingsDelegate>
@property (strong, nonatomic) MPElementEntity *activeElement;
@property (strong, nonatomic) IBOutlet MPSearchDelegate *searchResultsController;
@property (weak, nonatomic) IBOutlet UITextField *contentField;
@property (weak, nonatomic) IBOutlet UIButton *typeButton;
@property (weak, nonatomic) IBOutlet UIWebView *helpView;
@property (weak, nonatomic) IBOutlet UILabel *siteName;
@property (weak, nonatomic) IBOutlet UILabel *passwordCounter;
@property (weak, nonatomic) IBOutlet UIButton *passwordIncrementer;
@property (weak, nonatomic) IBOutlet UIButton *passwordEdit;
@property (weak, nonatomic) IBOutlet UIView *contentContainer;
@property (weak, nonatomic) IBOutlet UIView *helpContainer;
@property (weak, nonatomic) IBOutlet UIView *contentTipContainer;
@property (weak, nonatomic) IBOutlet UIView *alertContainer;
@property (weak, nonatomic) IBOutlet UILabel *alertTitle;
@property (weak, nonatomic) IBOutlet UITextView *alertBody;
@property (weak, nonatomic) IBOutlet UILabel *contentTipBody;
@property (weak, nonatomic) IBOutlet UIImageView *contentTipEditIcon;
@property (weak, nonatomic) IBOutlet UIView *searchTipContainer;
- (IBAction)copyContent;
- (IBAction)incrementPasswordCounter;
- (IBAction)editPassword;
- (IBAction)closeAlert;
- (IBAction)action:(UIBarButtonItem *)sender;
- (BOOL)isHelpVisible;
- (void)toggleHelpAnimated:(BOOL)animated;
- (void)setHelpHidden:(BOOL)hidden animated:(BOOL)animated;
- (void)setHelpChapter:(NSString *)chapter;
@end

View File

@@ -1,478 +0,0 @@
//
// MPMainViewController.m
// MasterPassword
//
// Created by Maarten Billemont on 24/11/11.
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#import "MPMainViewController.h"
#import "MPAppDelegate.h"
#import "MPElementGeneratedEntity.h"
#import "MPElementStoredEntity.h"
#import "IASKAppSettingsViewController.h"
#import <MobileCoreServices/MobileCoreServices.h>
@interface MPMainViewController (Private)
- (void)updateAnimated:(BOOL)animated;
- (void)updateWasAnimated:(BOOL)animated;
- (void)showContentTip:(NSString *)message withIcon:(UIImageView *)icon;
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message;
- (void)updateElement:(void (^)(void))updateElement;
@end
@implementation MPMainViewController
@synthesize activeElement = _activeElement;
@synthesize searchResultsController = _searchResultsController;
@synthesize typeButton = _typeButton;
@synthesize helpView = _helpView;
@synthesize siteName = _siteName;
@synthesize passwordCounter = _passwordCounter;
@synthesize passwordIncrementer = _passwordIncrementer;
@synthesize passwordEdit = _passwordEdit;
@synthesize contentContainer = _contentContainer;
@synthesize helpContainer = _helpContainer;
@synthesize contentTipContainer = _copiedContainer;
@synthesize alertContainer = _alertContainer;
@synthesize alertTitle = _alertTitle;
@synthesize alertBody = _alertBody;
@synthesize contentTipBody = _contentTipBody;
@synthesize contentTipEditIcon = _contentTipEditIcon;
@synthesize searchTipContainer = _searchTip;
@synthesize contentField = _contentField;
#pragma mark - View lifecycle
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad || interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"MP_Main_ChooseType"])
[[segue destinationViewController] setDelegate:self];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.searchTipContainer.hidden = NO;
if (!self.activeElement.name)
[UIView animateWithDuration:animated? 0.2f: 0 animations:^{
self.searchTipContainer.alpha = 1;
}];
[self setHelpHidden:[[MPConfig get].helpHidden boolValue] animated:animated];
[self updateAnimated:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.searchTipContainer.hidden = YES;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
- (void)viewDidLoad {
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ui_background"]];
// Put the search tip on the window so it's above the nav bar.
if (![self.searchTipContainer.superview isEqual:self.navigationController.navigationBar.superview]) {
CGRect frameInWindow = [self.searchTipContainer.window convertRect:self.searchTipContainer.frame
fromView:self.searchTipContainer.superview];
[self.searchTipContainer removeFromSuperview];
[self.navigationController.navigationBar.superview addSubview:self.searchTipContainer];
self.searchTipContainer.frame = [self.searchTipContainer.window convertRect:frameInWindow
toView:self.searchTipContainer.superview];
}
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillResignActiveNotification object:nil queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note) {
if (![MPAppDelegate get].keyPhrase) {
self.activeElement = nil;
[self updateAnimated:NO];
}
}];
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note) {
if (![MPAppDelegate get].keyPhrase) {
self.activeElement = nil;
[self updateAnimated:NO];
}
}];
[self closeAlert];
[super viewDidLoad];
}
- (void)viewDidUnload {
[self setContentField:nil];
[self setTypeButton:nil];
[self setSearchResultsController:nil];
[self setHelpView:nil];
[self setSiteName:nil];
[self setPasswordCounter:nil];
[self setPasswordIncrementer:nil];
[self setPasswordEdit:nil];
[self setContentContainer:nil];
[self setHelpContainer:nil];
[self setContentTipContainer:nil];
[self setAlertContainer:nil];
[self setAlertTitle:nil];
[self setAlertBody:nil];
[self setContentTipBody:nil];
[self setContentTipEditIcon:nil];
[self setSearchTipContainer:nil];
[super viewDidUnload];
}
- (void)updateAnimated:(BOOL)animated {
[[MPAppDelegate get] saveContext];
if (animated)
[UIView animateWithDuration:0.2 animations:^{
[self updateWasAnimated:YES];
}];
else
[self updateWasAnimated:NO];
}
- (void)updateWasAnimated:(BOOL)animated {
[self setHelpChapter:self.activeElement? @"2": @"1"];
self.siteName.text = self.activeElement.name;
self.passwordCounter.alpha = self.activeElement.type & MPElementTypeClassCalculated? 0.5f: 0;
self.passwordIncrementer.alpha = self.activeElement.type & MPElementTypeClassCalculated? 0.5f: 0;
self.passwordEdit.alpha = self.activeElement.type & MPElementTypeClassStored? 0.5f: 0;
[self.typeButton setTitle:NSStringFromMPElementType(self.activeElement.type)
forState:UIControlStateNormal];
self.typeButton.alpha = NSStringFromMPElementType(self.activeElement.type).length? 1: 0;
self.contentField.enabled = NO;
if ([self.activeElement isKindOfClass:[MPElementGeneratedEntity class]])
self.passwordCounter.text = [NSString stringWithFormat:@"%d", ((MPElementGeneratedEntity *) self.activeElement).counter];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSString *description = self.activeElement.description;
dispatch_async(dispatch_get_main_queue(), ^{
self.contentField.text = description;
});
});
}
- (BOOL)isHelpVisible {
return self.helpContainer.frame.origin.y < 400;
}
- (void)toggleHelpAnimated:(BOOL)animated {
[self setHelpHidden:[self isHelpVisible] animated:animated];
}
- (void)setHelpHidden:(BOOL)hidden animated:(BOOL)animated {
[UIView animateWithDuration:animated? 0.3f: 0 animations:^{
if (hidden) {
self.contentContainer.frame = CGRectSetHeight(self.contentContainer.frame, 373);
self.helpContainer.frame = CGRectSetY(self.helpContainer.frame, 415);
[MPConfig get].helpHidden = [NSNumber numberWithBool:YES];
} else {
self.contentContainer.frame = CGRectSetHeight(self.contentContainer.frame, 175);
self.helpContainer.frame = CGRectSetY(self.helpContainer.frame, 216);
[MPConfig get].helpHidden = [NSNumber numberWithBool:NO];
}
}];
}
- (void)setHelpChapter:(NSString *)chapter {
#ifndef PRODUCTION
[TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointHelpChapter, chapter]];
#endif
[self.helpView loadRequest:
[NSURLRequest requestWithURL:
[NSURL URLWithString:[NSString stringWithFormat:@"#%@", chapter] relativeToURL:
[[NSBundle mainBundle] URLForResource:@"help" withExtension:@"html"]]]];
[self.helpView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setClass('%@');",
ClassNameFromMPElementType(self.activeElement.type)]];
}
- (void)showContentTip:(NSString *)message withIcon:(UIImageView *)icon {
self.contentTipBody.text = message;
icon.hidden = NO;
[UIView animateWithDuration:0.2f animations:^{
self.contentTipContainer.alpha = 1;
} completion:^(BOOL finished) {
if (!finished) {
icon.hidden = YES;
return;
}
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 5.0f * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[UIView animateWithDuration:0.2f animations:^{
self.contentTipContainer.alpha = 0;
} completion:^(BOOL finished) {
icon.hidden = YES;
}];
});
}];
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
self.alertTitle.text = title;
NSRange scrollRange = NSMakeRange(self.alertBody.text.length, message.length);
if ([self.alertBody.text length])
self.alertBody.text = [NSString stringWithFormat:@"%@\n\n---\n\n%@", self.alertBody.text, message];
else
self.alertBody.text = message;
[self.alertBody scrollRangeToVisible:scrollRange];
[UIView animateWithDuration:0.2f animations:^{
self.alertContainer.alpha = 1;
}];
}
#pragma mark - Protocols
- (IBAction)copyContent {
if (!self.activeElement)
return;
[[UIPasteboard generalPasteboard] setValue:self.activeElement.content
forPasteboardType:(id)kUTTypeUTF8PlainText];
[self showContentTip:@"Copied!" withIcon:nil];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointCopyToPasteboard];
#endif
}
- (IBAction)incrementPasswordCounter {
if (![self.activeElement isKindOfClass:[MPElementGeneratedEntity class]])
// Not of a type that supports a password counter;
return;
[self updateElement:^{
++((MPElementGeneratedEntity *) self.activeElement).counter;
}];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointIncrementPasswordCounter];
#endif
}
- (void)updateElement:(void (^)(void))updateElement {
// Update password counter.
NSString *oldPassword = self.activeElement.description;
updateElement();
NSString *newPassword = self.activeElement.description;
[self updateAnimated:YES];
// Show new and old password.
if (oldPassword && ![oldPassword isEqualToString:newPassword])
[self showAlertWithTitle:@"Password Changed!" message:l(@"The password for %@ has changed.\n\n"
@"Don't forget to update the site with your new password! "
@"Your old password was:\n"
@"%@", self.activeElement.name, oldPassword)];
}
- (IBAction)editPassword {
if (self.activeElement.type & MPElementTypeClassStored) {
self.contentField.enabled = YES;
[self.contentField becomeFirstResponder];
}
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointEditPassword];
#endif
}
- (IBAction)closeAlert {
[UIView animateWithDuration:0.3f animations:^{
self.alertContainer.alpha = 0;
} completion:^(BOOL finished) {
self.alertBody.text = nil;
}];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointCloseAlert];
#endif
}
- (IBAction)action:(id)sender {
[SheetViewController showSheetWithTitle:nil message:nil viewStyle:UIActionSheetStyleAutomatic
tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) {
if (buttonIndex == [sheet cancelButtonIndex])
return;
switch (buttonIndex - [sheet firstOtherButtonIndex]) {
case 0:
[self toggleHelpAnimated:YES];
break;
case 1:
[self setHelpChapter:@"faq"];
[self setHelpHidden:NO animated:YES];
break;
case 2:
[[MPAppDelegate get] showGuide];
break;
case 3: {
IASKAppSettingsViewController *settingsVC = [IASKAppSettingsViewController new];
settingsVC.delegate = self;
[self.navigationController pushViewController:settingsVC animated:YES];
break;
}
#ifndef PRODUCTION
case 4:
[TestFlight openFeedbackView];
break;
#endif
}
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointAction];
#endif
} cancelTitle:[PearlStrings get].commonButtonCancel destructiveTitle:nil
otherTitles:
[self isHelpVisible]? @"Hide Help": @"Show Help", @"FAQ", @"Tutorial", @"Settings",
#ifndef PRODUCTION
@"Feedback",
#endif
nil];
}
- (void)didSelectType:(MPElementType)type {
[self updateElement:^{
// Update password type.
if (ClassFromMPElementType(type) != ClassFromMPElementType(self.activeElement.type))
// Type requires a different class of element. Recreate the element.
[[MPAppDelegate managedObjectContext] performBlockAndWait:^{
MPElementEntity *newElement = [NSEntityDescription insertNewObjectForEntityForName:ClassNameFromMPElementType(type)
inManagedObjectContext:[MPAppDelegate managedObjectContext]];
newElement.name = self.activeElement.name;
newElement.mpHashHex = self.activeElement.mpHashHex;
newElement.uses = self.activeElement.uses;
newElement.lastUsed = self.activeElement.lastUsed;
[[MPAppDelegate managedObjectContext] deleteObject:self.activeElement];
self.activeElement = newElement;
}];
self.activeElement.type = type;
#ifndef PRODUCTION
[TestFlight passCheckpoint:[NSString stringWithFormat:MPTestFlightCheckpointSelectType, NSStringFromMPElementType(type)]];
#endif
if (type & MPElementTypeClassStored && ![self.activeElement.description length])
[self showContentTip:@"Tap to set a password." withIcon:self.contentTipEditIcon];
}];
}
- (void)didSelectElement:(MPElementEntity *)element {
self.activeElement = element;
[self.activeElement use];
[self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = self.activeElement.name;
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointSelectElement];
#endif
[self updateAnimated:YES];
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointCancelSearch];
#endif
[self updateAnimated:YES];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (textField == self.contentField)
[self.contentField resignFirstResponder];
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
if (textField == self.contentField) {
self.contentField.enabled = NO;
if (![self.activeElement isKindOfClass:[MPElementStoredEntity class]])
// Not of a type whose content can be edited.
return;
if ([((MPElementStoredEntity *) self.activeElement).content isEqual:self.contentField.text])
// Content hasn't changed.
return;
[self updateElement:^{
((MPElementStoredEntity *) self.activeElement).content = self.contentField.text;
}];
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointExternalLink];
#endif
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
return YES;
}
- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender {
while ([self.navigationController.viewControllers containsObject:sender])
[self.navigationController popViewControllerAnimated:YES];
}
@end

View File

@@ -1,26 +0,0 @@
//
// MPSearchDelegate.h
// MasterPassword
//
// Created by Maarten Billemont on 04/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "MPElementEntity.h"
@protocol MPSearchResultsDelegate <NSObject>
- (void)didSelectElement:(MPElementEntity *)element;
@end
@interface MPSearchDelegate : NSObject <UITableViewDelegate, UITableViewDataSource, UISearchDisplayDelegate, NSFetchedResultsControllerDelegate>
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
@property (weak, nonatomic) IBOutlet id<MPSearchResultsDelegate> delegate;
@property (weak, nonatomic) IBOutlet UISearchDisplayController *searchDisplayController;
@property (weak, nonatomic) IBOutlet UIView *searchTipContainer;
@end

View File

@@ -1,263 +0,0 @@
//
// MPSearchDelegate.m
// MasterPassword
//
// Created by Maarten Billemont on 04/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPSearchDelegate.h"
#import "MPAppDelegate.h"
#import "MPElementGeneratedEntity.h"
@interface MPSearchDelegate (Private)
- (void)configureCell:(UITableViewCell *)cell inTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath;
- (void)update;
@end
@implementation MPSearchDelegate
@synthesize fetchedResultsController;
@synthesize delegate;
@synthesize searchDisplayController;
@synthesize searchTipContainer;
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller {
self.searchDisplayController.searchBar.text = @"";
self.searchDisplayController.searchBar.prompt = @"Enter the site's domain name (eg. apple.com):";
[UIView animateWithDuration:0.2f animations:^{
self.searchTipContainer.alpha = 0;
}];
[self update];
}
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller {
self.searchDisplayController.searchBar.prompt = nil;
}
- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView {
[[NSNotificationCenter defaultCenter] addObserverForName:UIScreenModeDidChangeNotification
object:nil queue:nil usingBlock:^(NSNotification *note) {
NSError *error;
if (![self.fetchedResultsController performFetch:&error])
err(@"Couldn't fetch elements: %@", error);
}];
tableView.backgroundColor = [UIColor blackColor];
tableView.rowHeight = 34.0f;
tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
[self update];
return YES;
}
- (void)update {
NSString *query = self.searchDisplayController.searchBar.text;
if (!query)
query = @"";
NSFetchRequest *fetchRequest = [[MPAppDelegate get].managedObjectModel
fetchRequestFromTemplateWithName:@"MPSearchElement"
substitutionVariables:[NSDictionary dictionaryWithObjectsAndKeys:
query, @"query",
[MPAppDelegate get].keyPhraseHashHex, @"mpHashHex",
nil]];
[fetchRequest setSortDescriptors:
[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"uses" ascending:NO]]];
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:[MPAppDelegate managedObjectContext]
sectionNameKeyPath:nil cacheName:nil];
self.fetchedResultsController.delegate = self;
NSError *error;
if (![self.fetchedResultsController performFetch:&error])
err(@"Couldn't fetch elements: %@", error);
}
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
[self.searchDisplayController.searchResultsTableView beginUpdates];
}
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {
UITableView *tableView = self.searchDisplayController.searchResultsTableView;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeUpdate:
[self configureCell:[tableView cellForRowAtIndexPath:indexPath]
inTableView:tableView
atIndexPath:indexPath];
break;
case NSFetchedResultsChangeMove:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
UITableView *tableView = self.searchDisplayController.searchResultsTableView;
switch(type) {
case NSFetchedResultsChangeInsert:
[tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex]
withRowAnimation:UITableViewRowAnimationFade];
break;
case NSFetchedResultsChangeDelete:
[tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex]
withRowAnimation:UITableViewRowAnimationFade];
break;
}
}
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.searchDisplayController.searchResultsTableView endUpdates];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [[self.fetchedResultsController sections] count] + 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == [self numberOfSectionsInTableView:tableView] - 1)
return 1;
return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MPElementSearch"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"MPElementSearch"];
UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"ui_list_middle"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)]];
backgroundImageView.frame = CGRectMake(-5, 0, 330, 34);
UIView *backgroundView = [[UIView alloc] initWithFrame:cell.frame];
[backgroundView addSubview:backgroundImageView];
cell.backgroundView = backgroundView;
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.textLabel.textColor = [UIColor whiteColor];
cell.detailTextLabel.backgroundColor = [UIColor clearColor];
cell.detailTextLabel.textColor = [UIColor lightGrayColor];
}
[self configureCell:cell inTableView:tableView atIndexPath:indexPath];
return cell;
}
- (void)configureCell:(UITableViewCell *)cell inTableView:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section < [[self.fetchedResultsController sections] count]) {
MPElementEntity *element = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = element.name;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d", element.uses];
} else {
// "New" section
cell.textLabel.text = self.searchDisplayController.searchBar.text;
cell.detailTextLabel.text = @"New";
}
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section < [[self.fetchedResultsController sections] count])
[self.delegate didSelectElement:[self.fetchedResultsController objectAtIndexPath:indexPath]];
else {
// "New" section.
NSString *siteName = self.searchDisplayController.searchBar.text;
[AlertViewController showAlertWithTitle:@"New Site"
message:l(@"Do you want to create a new site named:\n%@", siteName)
viewStyle:UIAlertViewStyleDefault
tappedButtonBlock:^(UIAlertView *alert, NSInteger buttonIndex) {
if (buttonIndex == [alert cancelButtonIndex])
return;
[self.fetchedResultsController.managedObjectContext performBlock:^{
MPElementEntity *element = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([MPElementGeneratedEntity class])
inManagedObjectContext:self.fetchedResultsController.managedObjectContext];
assert([element isKindOfClass:ClassFromMPElementType(element.type)]);
element.name = siteName;
element.mpHashHex = [MPAppDelegate get].keyPhraseHashHex;
dispatch_async(dispatch_get_main_queue(), ^{
[self.delegate didSelectElement:element];
});
}];
} cancelTitle:[PearlStrings get].commonButtonCancel otherTitles:[PearlStrings get].commonButtonYes, nil];
}
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
if (--section == -1)
return @"";
return [[[self.fetchedResultsController sections] objectAtIndex:section] name];
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return [self.fetchedResultsController sectionIndexTitles];
}
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
return [self.fetchedResultsController sectionForSectionIndexTitle:title atIndex:index];
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == [[self.fetchedResultsController sections] count])
// "New" section.
return;
if (editingStyle == UITableViewCellEditingStyleDelete)
[self.fetchedResultsController.managedObjectContext performBlock:^{
MPElementEntity *element = [self.fetchedResultsController objectAtIndexPath:indexPath];
[self.fetchedResultsController.managedObjectContext deleteObject:element];
#ifndef PRODUCTION
[TestFlight passCheckpoint:MPTestFlightCheckpointDeleteElement];
#endif
}];
}
@end

View File

@@ -1,21 +0,0 @@
//
// MPTypeViewController.h
// MasterPassword
//
// Created by Maarten Billemont on 27/11/11.
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#import <UIKit/UIKit.h>
@protocol MPTypeDelegate <NSObject>
- (void)didSelectType:(MPElementType)type;
@end
@interface MPTypeViewController : UITableViewController
@property (nonatomic, weak) id<MPTypeDelegate> delegate;
@end

View File

@@ -1,86 +0,0 @@
//
// MPTypeViewController.m
// MasterPassword
//
// Created by Maarten Billemont on 27/11/11.
// Copyright (c) 2011 Lyndir. All rights reserved.
//
#import "MPTypeViewController.h"
@implementation MPTypeViewController
@synthesize delegate;
#pragma mark - View lifecycle
- (void)viewDidLoad {
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ui_background"]];
[super viewDidLoad];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
assert(self.navigationController.topViewController == self);
MPElementType type;
switch (indexPath.section) {
case 0: {
// Calculated
switch (indexPath.row) {
case 0:
type = MPElementTypeCalculatedLong;
break;
case 1:
type = MPElementTypeCalculatedMedium;
break;
case 2:
type = MPElementTypeCalculatedShort;
break;
case 3:
type = MPElementTypeCalculatedBasic;
break;
case 4:
type = MPElementTypeCalculatedPIN;
break;
default:
[NSException raise:NSInternalInconsistencyException
format:@"Unsupported row: %d, when selecting calculated element type.", indexPath.row];
}
break;
}
case 1: {
// Stored
switch (indexPath.row) {
case 0:
type = MPElementTypeStoredPersonal;
break;
case 1:
type = MPElementTypeStoredDevicePrivate;
break;
default:
[NSException raise:NSInternalInconsistencyException
format:@"Unsupported row: %d, when selecting stored element type.", indexPath.row];
}
break;
}
default:
[NSException raise:NSInternalInconsistencyException
format:@"Unsupported section: %d, when selecting element type.", indexPath.section];
}
[delegate didSelectType:type];
[self.navigationController popViewControllerAnimated:YES];
}
@end

View File

@@ -1,63 +0,0 @@
//
// MPTypes.h
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import <Foundation/Foundation.h>
#define MPPersistentStoreDidChangeNotification @"MPPersistentStoreDidChange"
typedef enum {
MPElementContentTypePassword,
MPElementContentTypeNote,
MPElementContentTypePicture,
} MPElementContentType;
typedef enum {
MPElementTypeClassCalculated = 2 << 7,
MPElementTypeClassStored = 2 << 8,
} MPElementTypeClass;
typedef enum {
MPElementTypeCalculatedLong = MPElementTypeClassCalculated | 0x01,
MPElementTypeCalculatedMedium = MPElementTypeClassCalculated | 0x02,
MPElementTypeCalculatedShort = MPElementTypeClassCalculated | 0x03,
MPElementTypeCalculatedBasic = MPElementTypeClassCalculated | 0x04,
MPElementTypeCalculatedPIN = MPElementTypeClassCalculated | 0x05,
MPElementTypeStoredPersonal = MPElementTypeClassStored | 0x01,
MPElementTypeStoredDevicePrivate = MPElementTypeClassStored | 0x02,
} MPElementType;
#ifndef PRODUCTION
#define MPTestFlightCheckpointAction @"MPTestFlightCheckpointAction"
#define MPTestFlightCheckpointHelpChapter @"MPTestFlightCheckpointHelpChapter_%@"
#define MPTestFlightCheckpointCopyToPasteboard @"MPTestFlightCheckpointCopyToPasteboard"
#define MPTestFlightCheckpointIncrementPasswordCounter @"MPTestFlightCheckpointIncrementPasswordCounter"
#define MPTestFlightCheckpointEditPassword @"MPTestFlightCheckpointEditPassword"
#define MPTestFlightCheckpointCloseAlert @"MPTestFlightCheckpointCloseAlert"
#define MPTestFlightCheckpointSelectType @"MPTestFlightCheckpointSelectType_%@"
#define MPTestFlightCheckpointSelectElement @"MPTestFlightCheckpointSelectElement"
#define MPTestFlightCheckpointDeleteElement @"MPTestFlightCheckpointDeleteElement"
#define MPTestFlightCheckpointCancelSearch @"MPTestFlightCheckpointCancelSearch"
#define MPTestFlightCheckpointExternalLink @"MPTestFlightCheckpointExternalLink"
#define MPTestFlightCheckpointLaunched @"MPTestFlightCheckpointLaunched"
#define MPTestFlightCheckpointActivated @"MPTestFlightCheckpointActivated"
#define MPTestFlightCheckpointDeactivated @"MPTestFlightCheckpointDeactivated"
#define MPTestFlightCheckpointTerminated @"MPTestFlightCheckpointTerminated"
#define MPTestFlightCheckpointShowGuide @"MPTestFlightCheckpointShowGuide"
#define MPTestFlightCheckpointMPChanged @"MPTestFlightCheckpointMPChanged"
#define MPTestFlightCheckpointMPUnstored @"MPTestFlightCheckpointMPUnstored"
#define MPTestFlightCheckpointMPMismatch @"MPTestFlightCheckpointMPMismatch"
#define MPTestFlightCheckpointMPAsked @"MPTestFlightCheckpointMPAsked"
#define MPTestFlightCheckpointStoreIncompatible @"MPTestFlightCheckpointStoreIncompatible"
#define MPTestFlightCheckpointSetKeyphraseLength @"MPTestFlightCheckpointSetKeyphraseLength_%d"
#endif
NSString *NSStringFromMPElementType(MPElementType type);
NSString *ClassNameFromMPElementType(MPElementType type);
Class ClassFromMPElementType(MPElementType type);
NSString *MPCalculateContent(MPElementType type, NSString *name, NSString *keyPhrase, int counter);

View File

@@ -1,115 +0,0 @@
//
// MPTypes.m
// MasterPassword
//
// Created by Maarten Billemont on 02/01/12.
// Copyright (c) 2012 Lyndir. All rights reserved.
//
#import "MPTypes.h"
#import "MPElementGeneratedEntity.h"
#import "MPElementStoredEntity.h"
NSString *NSStringFromMPElementType(MPElementType type) {
if (!type)
return nil;
switch (type) {
case MPElementTypeCalculatedLong:
return @"Long Password";
case MPElementTypeCalculatedMedium:
return @"Medium Password";
case MPElementTypeCalculatedShort:
return @"Short Password";
case MPElementTypeCalculatedBasic:
return @"Basic Password";
case MPElementTypeCalculatedPIN:
return @"PIN";
case MPElementTypeStoredPersonal:
return @"Personal Password";
case MPElementTypeStoredDevicePrivate:
return @"Device Private Password";
default:
[NSException raise:NSInternalInconsistencyException format:@"Type not supported: %d", type];
}
}
Class ClassFromMPElementType(MPElementType type) {
if (!type)
return nil;
switch (type) {
case MPElementTypeCalculatedLong:
return [MPElementGeneratedEntity class];
case MPElementTypeCalculatedMedium:
return [MPElementGeneratedEntity class];
case MPElementTypeCalculatedShort:
return [MPElementGeneratedEntity class];
case MPElementTypeCalculatedBasic:
return [MPElementGeneratedEntity class];
case MPElementTypeCalculatedPIN:
return [MPElementGeneratedEntity class];
case MPElementTypeStoredPersonal:
return [MPElementStoredEntity class];
case MPElementTypeStoredDevicePrivate:
return [MPElementStoredEntity class];
default:
[NSException raise:NSInternalInconsistencyException format:@"Type not supported: %d", type];
}
}
NSString *ClassNameFromMPElementType(MPElementType type) {
return NSStringFromClass(ClassFromMPElementType(type));
}
static NSDictionary *MPTypes_ciphers = nil;
NSString *MPCalculateContent(MPElementType type, NSString *name, NSString *keyPhrase, int counter) {
assert(type & MPElementTypeClassCalculated);
if (MPTypes_ciphers == nil)
MPTypes_ciphers = [NSDictionary dictionaryWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"ciphers"
withExtension:@"plist"]];
// Determine the hash whose bytes will be used for calculating a password: md4(name-keyPhrase)
assert(name && keyPhrase);
NSData *keyHash = [[NSString stringWithFormat:@"%@-%@-%d", name, keyPhrase, counter] hashWith:PearlDigestSHA1];
const char *keyBytes = keyHash.bytes;
// Determine the cipher from the first hash byte.
assert([keyHash length]);
NSArray *typeCiphers = [[MPTypes_ciphers valueForKey:ClassNameFromMPElementType(type)]
valueForKey:NSStringFromMPElementType(type)];
NSString *cipher = [typeCiphers objectAtIndex:keyBytes[0] % [typeCiphers count]];
// Encode the content, character by character, using subsequent hash bytes and the cipher.
assert([keyHash length] >= [cipher length] + 1);
NSMutableString *content = [NSMutableString stringWithCapacity:[cipher length]];
for (NSUInteger c = 0; c < [cipher length]; ++c) {
const char keyByte = keyBytes[c + 1];
NSString *cipherClass = [cipher substringWithRange:NSMakeRange(c, 1)];
NSString *cipherClassCharacters = [[MPTypes_ciphers valueForKey:@"MPCharacterClasses"] valueForKey:cipherClass];
[content appendString:[cipherClassCharacters substringWithRange:NSMakeRange(keyByte % [cipherClassCharacters length], 1)]];
}
return content;
}

View File

@@ -1,720 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1938" systemVersion="11D50" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="KZF-fe-y9n">
<dependencies>
<development defaultVersion="4200" identifier="xcode"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="933"/>
</dependencies>
<scenes>
<scene sceneID="WkW-SR-cr2">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="jZj-N1-rhF" userLabel="First Responder" sceneMemberID="firstResponder"/>
<tableViewController id="NKe-nv-566" customClass="MPTypeViewController" sceneMemberID="viewController">
<tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="btl-G4-V0S">
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="0.12549020350000001" green="0.1411764771" blue="0.14901961389999999" alpha="1" colorSpace="calibratedRGB"/>
<view key="tableFooterView" contentMode="scaleToFill" id="aNa-wb-cYK">
<rect key="frame" x="0.0" y="588" width="320" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<sections>
<tableViewSection id="gUv-FU-O36">
<cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" rowHeight="204" id="NCB-rX-weq">
<rect key="frame" x="0.0" y="0.0" width="320" height="204"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="203"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Generated" lineBreakMode="tailTruncation" minimumFontSize="10" id="azh-GA-KA1">
<rect key="frame" x="20" y="20" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Bold" family="Gill Sans" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_first.png" id="WXs-ZQ-JuJ">
<rect key="frame" x="10" y="160" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Long Password" lineBreakMode="tailTruncation" minimumFontSize="10" id="QIm-RX-xY7">
<rect key="frame" x="20" y="160" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Word-like, 14 characters, contains symbols." lineBreakMode="tailTruncation" minimumFontSize="10" id="6iu-aM-lJA">
<rect key="frame" x="20" y="184" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="E4a-XS-Qlz">
<rect key="frame" x="23" y="49" width="280" height="112"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<string key="text">These types create a safe password for your site.
The passwords aren't saved anywhere. This is a major advantage: if you loose your device, your passwords cannot be stolen. You can use any other device to get all your passwords back, no need for restoring backups or any other pains.</string>
<fontDescription key="fontDescription" name="GillSans-LightItalic" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="re0-ZT-bnP">
<rect key="frame" x="0.0" y="204" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_middle.png" id="EWy-Eb-L5p">
<rect key="frame" x="10" y="0.0" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Medium Password" lineBreakMode="tailTruncation" minimumFontSize="10" id="5NA-XX-th4">
<rect key="frame" x="20" y="0.0" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Word-like, 8 characters, contains symbols." lineBreakMode="tailTruncation" minimumFontSize="10" id="MI2-JM-j4b">
<rect key="frame" x="20" y="24" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="4pb-c9-i2D">
<rect key="frame" x="0.0" y="248" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_middle.png" id="Jqw-h1-g2X">
<rect key="frame" x="10" y="0.0" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Short Password" lineBreakMode="tailTruncation" minimumFontSize="10" id="iqW-mf-H1R">
<rect key="frame" x="20" y="0.0" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Word-like, 4 characters." lineBreakMode="tailTruncation" minimumFontSize="10" id="Zi3-26-3iq">
<rect key="frame" x="20" y="24" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ywW-4w-Wej">
<rect key="frame" x="0.0" y="292" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_middle.png" id="Son-EL-Drx">
<rect key="frame" x="10" y="0.0" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Basic Password" lineBreakMode="tailTruncation" minimumFontSize="10" id="Pim-A8-aib">
<rect key="frame" x="20" y="0.0" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="8 characters." lineBreakMode="tailTruncation" minimumFontSize="10" id="CYQ-D8-vNS">
<rect key="frame" x="20" y="24" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="5p5-OD-zpn">
<rect key="frame" x="0.0" y="336" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_last.png" id="5nI-rL-CoO">
<rect key="frame" x="10" y="0.0" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="PIN" lineBreakMode="tailTruncation" minimumFontSize="10" id="Yu2-5k-AwW">
<rect key="frame" x="20" y="0.0" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="4 numbers." lineBreakMode="tailTruncation" minimumFontSize="10" id="5Zm-AH-bAe">
<rect key="frame" x="20" y="24" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
</cells>
</tableViewSection>
<tableViewSection id="Jqk-Jl-vVm">
<cells>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" rowHeight="164" id="OK2-fa-fDw">
<rect key="frame" x="0.0" y="380" width="320" height="164"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="163"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="User-specified" lineBreakMode="tailTruncation" minimumFontSize="10" id="146-3h-mdD">
<rect key="frame" x="20" y="20" width="280" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Bold" family="Gill Sans" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" lineBreakMode="tailTruncation" numberOfLines="0" minimumFontSize="10" id="Bbk-lL-BeB">
<rect key="frame" x="20" y="49" width="280" height="63"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<string key="text">If you need to specify a custom password for your site, use one of these types. The site's password will be encrypted using your master password.</string>
<fontDescription key="fontDescription" name="GillSans-LightItalic" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_first.png" id="fxL-ee-UVP">
<rect key="frame" x="10" y="120" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Personal Password" lineBreakMode="tailTruncation" minimumFontSize="10" id="kzc-rQ-74F">
<rect key="frame" x="20" y="120" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="AES-encrypted, iTunes backup, iCloud sync." lineBreakMode="tailTruncation" minimumFontSize="10" id="vNa-Yq-XIJ">
<rect key="frame" x="20" y="144" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="ePk-a9-aNi">
<rect key="frame" x="0.0" y="544" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="ui_list_last.png" id="PUy-Qk-CeF">
<rect key="frame" x="10" y="0.0" width="300" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.10000000000000001" y="0.20000000000000001" width="0.79999999999999982" height="0.59999999999999964"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Device Private Password" lineBreakMode="tailTruncation" minimumFontSize="10" id="2kB-0P-FeR">
<rect key="frame" x="20" y="0.0" width="280" height="24"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans" family="Gill Sans" pointSize="18"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" cocoaTouchSystemColor="darkTextColor"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="AES-encrypted, stays on this device only." lineBreakMode="tailTruncation" minimumFontSize="10" id="6S8-9Y-pzj">
<rect key="frame" x="20" y="24" width="280" height="20"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" name="GillSans-Light" family="Gill Sans" pointSize="14"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</tableViewCell>
</cells>
</tableViewSection>
</sections>
<connections>
<outlet property="dataSource" destination="NKe-nv-566" id="5yH-j4-f9c"/>
<outlet property="delegate" destination="NKe-nv-566" id="O5k-hI-7Tf"/>
</connections>
</tableView>
<navigationItem key="navigationItem" title="Type" id="rak-Td-wu1"/>
</tableViewController>
</objects>
<point key="canvasLocation" x="996" y="182"/>
</scene>
<scene sceneID="U26-Zf-euQ">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="mK2-p1-3zC" userLabel="First Responder" sceneMemberID="firstResponder"/>
<customObject id="0QO-2P-OhD" customClass="MPSearchDelegate">
<connections>
<outlet property="delegate" destination="PQa-Xl-A3x" id="O2f-mW-ab8"/>
<outlet property="searchDisplayController" destination="P8c-gf-nN3" id="exk-dS-Ui3"/>
<outlet property="searchTipContainer" destination="zOR-Du-qRL" id="lk6-2X-lIb"/>
</connections>
</customObject>
<searchDisplayController id="P8c-gf-nN3">
<connections>
<outlet property="delegate" destination="0QO-2P-OhD" id="gst-Hm-5ja"/>
<outlet property="searchBar" destination="qeo-n2-WVh" id="bFO-FC-Xdj"/>
<outlet property="searchContentsController" destination="PQa-Xl-A3x" id="iEu-t3-hJY"/>
<outlet property="searchResultsDataSource" destination="0QO-2P-OhD" id="XJh-rC-kId"/>
<outlet property="searchResultsDelegate" destination="0QO-2P-OhD" id="Bm8-Q3-lLA"/>
</connections>
</searchDisplayController>
<viewController id="PQa-Xl-A3x" customClass="MPMainViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ep0-Hn-5TR">
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="top" image="Content-Backdrop.png" id="0hY-LL-ITu">
<rect key="frame" x="0.0" y="44" width="320" height="372"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
<view contentMode="scaleToFill" id="g9q-4d-ZgJ">
<rect key="frame" x="0.0" y="43" width="320" height="175"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="top" image="Content-Backdrop.png" id="enb-OH-DVZ">
<rect key="frame" x="0.0" y="0.0" width="320" height="175"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="scaleToFill" image="ui_panel_container.png" id="0Yh-Py-lB6">
<rect key="frame" x="11" y="20" width="298" height="87"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<rect key="contentStretch" x="0.050000000000000003" y="0.10000000000000001" width="0.89999999999999991" height="0.79999999999999982"/>
</imageView>
<imageView userInteractionEnabled="NO" alpha="0.80000000000000004" contentMode="scaleToFill" image="ui_panel_display.png" id="cw7-HD-Wht">
<rect key="frame" x="11" y="20" width="298" height="86"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<rect key="contentStretch" x="0.050000000000000003" y="0.10000000000000001" width="0.89999999999999991" height="0.79999999999999982"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" showsTouchWhenHighlighted="YES" lineBreakMode="middleTruncation" id="Zji-Vg-VwX">
<rect key="frame" x="11" y="20" width="298" height="86"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" type="boldSystem" size="button"/>
<state key="normal">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="copyContent" destination="PQa-Xl-A3x" eventType="touchUpInside" id="9tS-J5-wlx"/>
</connections>
</button>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.50000000000000011" contentMode="left" text="apple.com" lineBreakMode="tailTruncation" minimumFontSize="10" id="gSK-aB-wNI">
<rect key="frame" x="25" y="20" width="270" height="26"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="S3cre7^Pa$swcrD" textAlignment="center" minimumFontSize="17" clearButtonMode="whileEditing" id="fiX-10-fif">
<rect key="frame" x="20" y="46" width="280" height="60"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<color key="textColor" red="0.47450980390000003" green="0.86666666670000003" blue="0.98431372549999996" alpha="1" colorSpace="calibratedRGB"/>
<fontDescription key="fontDescription" name="Optima-ExtraBlack" family="Optima" pointSize="26"/>
<textInputTraits key="textInputTraits" autocorrectionType="no"/>
<connections>
<outlet property="delegate" destination="PQa-Xl-A3x" id="qOM-gq-c6g"/>
</connections>
</textField>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" alpha="0.50000000000000011" contentMode="left" text="1" textAlignment="right" lineBreakMode="tailTruncation" minimumFontSize="10" id="Iuf-np-e9C">
<rect key="frame" x="240" y="27" width="40" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" name="Optima-ExtraBlack" family="Optima" pointSize="17"/>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<nil key="highlightedColor"/>
<color key="shadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
<size key="shadowOffset" width="0.0" height="1"/>
</label>
<button opaque="NO" alpha="0.50000000000000011" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="jec-mu-nPt">
<rect key="frame" x="274.5" y="18.5" width="37" height="37"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<inset key="contentEdgeInsets" minX="5" minY="5" maxX="5" maxY="5"/>
<state key="normal" image="icon_plus.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="incrementPasswordCounter" destination="PQa-Xl-A3x" eventType="touchUpInside" id="hMc-kb-yFA"/>
</connections>
</button>
<button opaque="NO" alpha="0.5" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="9FS-fS-xH6">
<rect key="frame" x="275" y="18.5" width="37" height="37"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<inset key="contentEdgeInsets" minX="5" minY="5" maxX="5" maxY="5"/>
<state key="normal" image="icon_edit.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="editPassword" destination="PQa-Xl-A3x" eventType="touchUpInside" id="jZC-Jm-ZZ0"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" reversesTitleShadowWhenHighlighted="YES" lineBreakMode="middleTruncation" id="Cei-5z-uWE">
<rect key="frame" x="10" y="115" width="300" height="46"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<size key="titleShadowOffset" width="0.0" height="1"/>
<state key="normal" title="Long" backgroundImage="ui_button_standard_large.png">
<color key="titleColor" cocoaTouchSystemColor="lightTextColor"/>
<color key="titleShadowColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<segue destination="NKe-nv-566" kind="push" identifier="MP_Main_ChooseType" id="vw4-Vd-O6q"/>
</connections>
</button>
<view userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" id="v2m-Gf-pEV">
<rect key="frame" x="55" y="8" width="210" height="57"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="fdm-NG-GFC">
<rect key="frame" x="0.0" y="-1" width="210" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tap to set a password." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="ieN-QQ-PyR">
<rect key="frame" x="20" y="0.0" width="170" height="37"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="KEn-n3-qhX">
<rect key="frame" x="48.5" y="6.5" width="24" height="24"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<view clipsSubviews="YES" alpha="0.60000000000000009" contentMode="scaleToFill" id="61G-By-qLB">
<rect key="frame" x="0.0" y="216" width="320" height="200"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="Square-bottom.png" id="lbm-A0-3PK">
<rect key="frame" x="0.0" y="0.0" width="320" height="58"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</imageView>
<webView opaque="NO" contentMode="scaleToFill" id="8FQ-x4-lR9">
<rect key="frame" x="0.0" y="1" width="320" height="199"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<connections>
<outlet property="delegate" destination="PQa-Xl-A3x" id="H1z-xP-1Pm"/>
</connections>
</webView>
</subviews>
<color key="backgroundColor" cocoaTouchSystemColor="scrollViewTexturedBackgroundColor"/>
</view>
<view alpha="0.0" contentMode="scaleToFill" id="yRY-qt-gz8">
<rect key="frame" x="10" y="230" width="300" height="180"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_alert_black.png" id="TUv-Tl-xTc">
<rect key="frame" x="0.0" y="0.0" width="300" height="180"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<rect key="contentStretch" x="0.25" y="0.6499999999999998" width="0.64999999999999969" height="0.10000000000000002"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Password Changed!" lineBreakMode="tailTruncation" minimumFontSize="10" id="ZdH-we-KcW">
<rect key="frame" x="70" y="20" width="210" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" editable="NO" id="jCg-t7-RuK">
<rect key="frame" x="20" y="60" width="260" height="100"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<string key="text">The password for apple.com has changed.
Don't forget to update the site with your new password! Your old password was:
L4m3P4sSw0rD</string>
<color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="cX2-vD-vjc">
<rect key="frame" x="259" y="5" width="32" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<state key="normal" image="icon_cancel.png">
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="closeAlert" destination="PQa-Xl-A3x" eventType="touchUpInside" id="oJt-DU-l38"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
<searchBar contentMode="redraw" barStyle="blackOpaque" placeholder="Site" id="qeo-n2-WVh">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<gestureRecognizers/>
<textInputTraits key="textInputTraits" autocorrectionType="no" keyboardType="URL"/>
<connections>
<outlet property="delegate" destination="PQa-Xl-A3x" id="oXp-0r-Gkl"/>
</connections>
</searchBar>
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="zOR-Du-qRL">
<rect key="frame" x="55" y="-27" width="210" height="57"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" image="tip_basic_black.png" id="ORD-Xv-bOQ">
<rect key="frame" x="0.0" y="-1" width="210" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
</imageView>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Enter the site's name." textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="10" id="21b-bH-lR9">
<rect key="frame" x="20" y="0.0" width="170" height="37"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="icon_edit.png" id="4Xf-mC-295">
<rect key="frame" x="49" y="6" width="24" height="24"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
</imageView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</subviews>
<color key="backgroundColor" red="0.14901960784313725" green="0.16470588235294117" blue="0.1803921568627451" alpha="1" colorSpace="calibratedRGB"/>
</view>
<navigationItem key="navigationItem" title="Master Password" id="hB9-S6-KHC">
<barButtonItem key="rightBarButtonItem" systemItem="action" id="8Y7-Bf-FHa">
<connections>
<action selector="action:" destination="PQa-Xl-A3x" id="mhz-Ey-IOC"/>
</connections>
</barButtonItem>
</navigationItem>
<connections>
<outlet property="alertBody" destination="jCg-t7-RuK" id="Aru-Nr-DY0"/>
<outlet property="alertContainer" destination="yRY-qt-gz8" id="gZx-90-Zgr"/>
<outlet property="alertTitle" destination="ZdH-we-KcW" id="VWi-aS-HRw"/>
<outlet property="contentContainer" destination="g9q-4d-ZgJ" id="Hgw-Hp-FHB"/>
<outlet property="contentField" destination="fiX-10-fif" id="b2c-gv-qMp"/>
<outlet property="contentTipBody" destination="ieN-QQ-PyR" id="flJ-gF-wbI"/>
<outlet property="contentTipContainer" destination="v2m-Gf-pEV" id="9zL-GR-kyH"/>
<outlet property="contentTipEditIcon" destination="KEn-n3-qhX" id="dDG-Nt-OLM"/>
<outlet property="helpContainer" destination="61G-By-qLB" id="Jwt-0d-ZAV"/>
<outlet property="helpView" destination="8FQ-x4-lR9" id="MOg-5s-kvK"/>
<outlet property="passwordCounter" destination="Iuf-np-e9C" id="CIm-Mk-nJh"/>
<outlet property="passwordEdit" destination="9FS-fS-xH6" id="YeB-HF-ZPk"/>
<outlet property="passwordIncrementer" destination="jec-mu-nPt" id="i9B-lX-zzX"/>
<outlet property="searchDisplayController" destination="P8c-gf-nN3" id="CLs-YI-7NC"/>
<outlet property="searchResultsController" destination="0QO-2P-OhD" id="xEC-gV-lHp"/>
<outlet property="searchTipContainer" destination="zOR-Du-qRL" id="X7h-Vh-iCE"/>
<outlet property="siteName" destination="gSK-aB-wNI" id="IIe-z8-zy8"/>
<outlet property="typeButton" destination="Cei-5z-uWE" id="4M1-d7-5Bh"/>
</connections>
</viewController>
</objects>
<point key="canvasLocation" x="455" y="182"/>
</scene>
<scene sceneID="Rt1-b4-sUB">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="7yf-G7-kVy" userLabel="First Responder" sceneMemberID="firstResponder"/>
<viewController id="qz3-eG-aEi" customClass="MPGuideViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="cwa-ct-2DY">
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" pagingEnabled="YES" showsVerticalScrollIndicator="NO" id="Nr4-hi-8b2">
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_0.png" id="eJP-cS-VRU">
<rect key="frame" x="0.0" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_1.png" id="1J9-z9-h96">
<rect key="frame" x="320" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_2.png" id="8kf-Wm-F3L">
<rect key="frame" x="640" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_3.png" id="H5W-P4-o7O">
<rect key="frame" x="960" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_4.png" id="IXz-T9-Umi">
<rect key="frame" x="1280" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_5.png" id="Hd0-Or-naq">
<rect key="frame" x="1280" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<imageView userInteractionEnabled="NO" contentMode="bottom" image="guide_page_6.png" id="1jq-Ic-GVZ">
<rect key="frame" x="1600" y="0.0" width="320" height="460"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
</imageView>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" reversesTitleShadowWhenHighlighted="YES" lineBreakMode="middleTruncation" id="q93-J1-auj">
<rect key="frame" x="1610" y="394" width="300" height="46"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
<size key="titleShadowOffset" width="0.0" height="1"/>
<state key="normal" title="Get started" backgroundImage="ui_button_green_large.png">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<color key="titleShadowColor" red="0.194560533886145" green="0.30086678832116787" blue="0.1263640535337863" alpha="1" colorSpace="deviceRGB"/>
</state>
<state key="highlighted">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="close" destination="qz3-eG-aEi" eventType="touchUpInside" id="uYR-EJ-U6H"/>
</connections>
</button>
</subviews>
</scrollView>
</subviews>
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
</view>
<connections>
<outlet property="scrollView" destination="Nr4-hi-8b2" id="8QD-sv-vu6"/>
</connections>
</viewController>
</objects>
<point key="canvasLocation" x="455" y="785"/>
</scene>
<scene sceneID="8r0-wA-Zre">
<objects>
<placeholder placeholderIdentifier="IBFirstResponder" id="Lcz-JH-B5B" userLabel="First Responder" sceneMemberID="firstResponder"/>
<navigationController id="KZF-fe-y9n" sceneMemberID="viewController">
<toolbarItems/>
<simulatedStatusBarMetrics key="simulatedStatusBarMetrics" statusBarStyle="blackTranslucent"/>
<navigationBar key="navigationBar" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" barStyle="blackOpaque" id="sif-x3-Fol">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="PQa-Xl-A3x" kind="relationship" relationship="rootViewController" id="LUg-eF-JQd"/>
<segue destination="qz3-eG-aEi" kind="modal" identifier="MP_Guide" id="vyG-wN-8hU"/>
</connections>
</navigationController>
</objects>
<point key="canvasLocation" x="-85" y="182"/>
</scene>
</scenes>
<resources>
<image name="Content-Backdrop.png" width="480" height="480"/>
<image name="Square-bottom.png" width="551" height="58"/>
<image name="guide_page_0.png" width="320" height="480"/>
<image name="guide_page_1.png" width="320" height="480"/>
<image name="guide_page_2.png" width="320" height="480"/>
<image name="guide_page_3.png" width="320" height="480"/>
<image name="guide_page_4.png" width="320" height="480"/>
<image name="guide_page_5.png" width="320" height="480"/>
<image name="guide_page_6.png" width="320" height="480"/>
<image name="icon_cancel.png" width="32" height="32"/>
<image name="icon_edit.png" width="32" height="32"/>
<image name="icon_plus.png" width="32" height="32"/>
<image name="tip_alert_black.png" width="235" height="81"/>
<image name="tip_basic_black.png" width="210" height="60"/>
<image name="ui_button_green_large.png" width="300" height="46"/>
<image name="ui_button_standard_large.png" width="300" height="46"/>
<image name="ui_list_first.png" width="300" height="35"/>
<image name="ui_list_last.png" width="300" height="35"/>
<image name="ui_list_middle.png" width="300" height="34"/>
<image name="ui_panel_container.png" width="300" height="87"/>
<image name="ui_panel_display.png" width="300" height="86"/>
</resources>
<simulatedMetricsContainer key="defaultSimulatedMetrics">
<simulatedStatusBarMetrics key="statusBar" statusBarStyle="blackTranslucent"/>
<simulatedOrientationMetrics key="orientation"/>
<simulatedScreenMetrics key="destination"/>
</simulatedMetricsContainer>
</document>

View File

@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>Passwords</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFiles</key>
<array>
<string>Icon.png</string>
<string>Icon@2x.png</string>
<string>Icon-72.png</string>
</array>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon.png</string>
<string>Icon@2x.png</string>
<string>Icon-72.png</string>
</array>
<key>UIPrerenderedIcon</key>
<true/>
</dict>
</dict>
<key>CFBundleIdentifier</key>
<string>com.lyndir.lhunath.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>[auto]</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>[auto]</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>© 2011-2012, Lyndir</string>
<key>UIMainStoryboardFile</key>
<string>MainStoryboard_iPhone</string>
<key>UIMainStoryboardFile~ipad</key>
<string>MainStoryboard_iPad</string>
<key>UIPrerenderedIcon</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackOpaque</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View File

@@ -1,30 +0,0 @@
//
// Prefix header for all source files of the 'MasterPassword' target in the 'MasterPassword' project
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#ifndef PRODUCTION
#import "TestFlight.h"
#endif
#endif
#define PEARL
#define PEARL_CRYPTO
#define PEARL_UIKIT
#import "Pearl.h"
#import "Pearl-Crypto.h"
#import "Pearl-UIKit.h"
#import "MPTypes.h"
#import "MPConfig.h"

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.ubiquity-container-identifiers</key>
<array>
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword</string>
</array>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)com.lyndir.lhunath.MasterPassword</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.lyndir.lhunath.MasterPassword</string>
</array>
</dict>
</plist>

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>_XCCurrentVersionName</key>
<string>MasterPassword.xcdatamodel</string>
</dict>
</plist>

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model name="" userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="872" systemVersion="11C74" minimumToolsVersion="Automatic" macOSVersion="Automatic" iOSVersion="Automatic">
<entity name="MPElementEntity" representedClassName="MPElementEntity" isAbstract="YES" syncable="YES">
<attribute name="lastUsed" attributeType="Date" syncable="YES"/>
<attribute name="mpHashHex" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="name" attributeType="String" indexed="YES" syncable="YES"/>
<attribute name="type" attributeType="Integer 16" defaultValueString="257" syncable="YES"/>
<attribute name="uses" attributeType="Integer 16" defaultValueString="0" syncable="YES"/>
</entity>
<entity name="MPElementGeneratedEntity" representedClassName="MPElementGeneratedEntity" parentEntity="MPElementEntity" syncable="YES">
<attribute name="counter" optional="YES" attributeType="Integer 16" defaultValueString="1" syncable="YES"/>
</entity>
<entity name="MPElementStoredEntity" representedClassName="MPElementStoredEntity" parentEntity="MPElementEntity" syncable="YES">
<attribute name="contentObject" optional="YES" attributeType="Transformable" storedInTruthFile="YES" syncable="YES"/>
</entity>
<fetchRequest name="MPSearchElement" entity="MPElementEntity" predicateString="name BEGINSWITH[cd] $query AND mpHashHex == $mpHashHex"/>
<elements>
<element name="MPElementEntity" positionX="160" positionY="192" width="128" height="135"/>
<element name="MPElementGeneratedEntity" positionX="160" positionY="192" width="128" height="60"/>
<element name="MPElementStoredEntity" positionX="160" positionY="192" width="128" height="60"/>
</elements>
</model>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1023 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Some files were not shown because too many files have changed in this diff Show More