Merge branch 'master' into windows
This commit is contained in:
commit
af36fa0f74
@ -2,5 +2,6 @@ language: objective-c
|
|||||||
xcode_project: MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj
|
xcode_project: MasterPassword/ObjC/iOS/MasterPassword-iOS.xcodeproj
|
||||||
xcode_scheme: MasterPassword iOS (Development)
|
xcode_scheme: MasterPassword iOS (Development)
|
||||||
xcode_sdk: iphonesimulator
|
xcode_sdk: iphonesimulator
|
||||||
|
env: TERM=dumb
|
||||||
git:
|
git:
|
||||||
submodules: true
|
submodules: true
|
||||||
|
Binary file not shown.
BIN
External/iOS/Crashlytics.framework/submit
vendored
BIN
External/iOS/Crashlytics.framework/submit
vendored
Binary file not shown.
@ -2,6 +2,9 @@
|
|||||||
#
|
#
|
||||||
# TROUBLESHOOTING
|
# TROUBLESHOOTING
|
||||||
# - To enable verbose algorithm/implementation debugging, use ./build -DDEBUG
|
# - To enable verbose algorithm/implementation debugging, use ./build -DDEBUG
|
||||||
|
# - If you see 'undefined reference to `AES_encrypt'',
|
||||||
|
# make sure you have openssl installed.
|
||||||
|
# If libcrypto.a is in a non-standard directory, try ./build -L[your-lib-dir]
|
||||||
# - If you see 'undefined reference to `clock_gettime'',
|
# - If you see 'undefined reference to `clock_gettime'',
|
||||||
# try ./build -lrt instead.
|
# try ./build -lrt instead.
|
||||||
# - If you see 'x86.S:202: Error: junk at end of line, first unrecognized character is `,'',
|
# - If you see 'x86.S:202: Error: junk at end of line, first unrecognized character is `,'',
|
||||||
@ -189,7 +192,7 @@ mpw() {
|
|||||||
# library paths
|
# library paths
|
||||||
-L"." -L"lib/scrypt"
|
-L"." -L"lib/scrypt"
|
||||||
# link libraries
|
# link libraries
|
||||||
-l"crypto"
|
-l"crypto" -l"curses"
|
||||||
# scrypt
|
# scrypt
|
||||||
"lib/scrypt/scrypt-crypto_aesctr.o"
|
"lib/scrypt/scrypt-crypto_aesctr.o"
|
||||||
"lib/scrypt/scrypt-sha256.o"
|
"lib/scrypt/scrypt-sha256.o"
|
||||||
@ -245,6 +248,9 @@ mpw-bench() {
|
|||||||
|
|
||||||
### TARGETS
|
### TARGETS
|
||||||
|
|
||||||
|
haslib() {
|
||||||
|
! LC_ALL=C cc -l"$1" 2>&1 | grep -q 'library not found'
|
||||||
|
}
|
||||||
cc() {
|
cc() {
|
||||||
if hash llvm-gcc 2>/dev/null; then
|
if hash llvm-gcc 2>/dev/null; then
|
||||||
llvm-gcc "$@"
|
llvm-gcc "$@"
|
||||||
|
@ -95,13 +95,24 @@ char *homedir(const char *filename) {
|
|||||||
return homefile;
|
return homefile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *getlinep(const char *prompt) {
|
||||||
|
char *buf = NULL;
|
||||||
|
size_t bufSize = 0;
|
||||||
|
ssize_t lineSize;
|
||||||
|
fprintf(stderr, "%s", prompt);
|
||||||
|
fprintf(stderr, " ");
|
||||||
|
if ((lineSize = getline(&buf, &bufSize, stdin)) < 0) {
|
||||||
|
free(buf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
buf[lineSize - 1]=0;
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *const argv[]) {
|
int main(int argc, char *const argv[]) {
|
||||||
|
|
||||||
if (argc < 2)
|
|
||||||
usage();
|
|
||||||
|
|
||||||
// Read the environment.
|
// Read the environment.
|
||||||
const char *userName = getenv( MP_env_username );
|
char *userName = getenv( MP_env_username );
|
||||||
const char *masterPassword = NULL;
|
const char *masterPassword = NULL;
|
||||||
const char *siteName = NULL;
|
const char *siteName = NULL;
|
||||||
MPElementType siteType = MPElementTypeGeneratedLong;
|
MPElementType siteType = MPElementTypeGeneratedLong;
|
||||||
@ -156,13 +167,17 @@ int main(int argc, char *const argv[]) {
|
|||||||
|
|
||||||
// Convert and validate input.
|
// Convert and validate input.
|
||||||
if (!userName) {
|
if (!userName) {
|
||||||
fprintf(stderr, "Missing user name.\n");
|
if (!(userName = getlinep("Your user name:"))) {
|
||||||
return 1;
|
fprintf(stderr, "Missing user name.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
trc("userName: %s\n", userName);
|
trc("userName: %s\n", userName);
|
||||||
if (!siteName) {
|
if (!siteName) {
|
||||||
fprintf(stderr, "Missing site name.\n");
|
if (!(siteName = getlinep("Site name:"))) {
|
||||||
return 1;
|
fprintf(stderr, "Missing site name.\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
trc("siteName: %s\n", siteName);
|
trc("siteName: %s\n", siteName);
|
||||||
if (siteCounterString)
|
if (siteCounterString)
|
||||||
@ -206,6 +221,9 @@ int main(int argc, char *const argv[]) {
|
|||||||
masterPassword = getpass( "Your master password: " );
|
masterPassword = getpass( "Your master password: " );
|
||||||
trc("masterPassword: %s\n", masterPassword);
|
trc("masterPassword: %s\n", masterPassword);
|
||||||
|
|
||||||
|
// Summarize operation.
|
||||||
|
fprintf(stderr, "%s's password for %s:\n[ %s ]: ", userName, siteName, Identicon( userName, masterPassword ));
|
||||||
|
|
||||||
// Calculate the master key salt.
|
// Calculate the master key salt.
|
||||||
const char *mpKeyScope = ScopeForVariant(MPElementVariantPassword);
|
const char *mpKeyScope = ScopeForVariant(MPElementVariantPassword);
|
||||||
trc("key scope: %s\n", mpKeyScope);
|
trc("key scope: %s\n", mpKeyScope);
|
||||||
|
@ -10,9 +10,13 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#include <alg/sha256.h>
|
#include <alg/sha256.h>
|
||||||
|
|
||||||
|
#include <curses.h>
|
||||||
|
#include <term.h>
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
const MPElementType TypeWithName(const char *typeName) {
|
const MPElementType TypeWithName(const char *typeName) {
|
||||||
@ -171,6 +175,7 @@ const char CharacterFromClass(char characterClass, uint8_t seedByte) {
|
|||||||
|
|
||||||
return classCharacters[seedByte % strlen(classCharacters)];
|
return classCharacters[seedByte % strlen(classCharacters)];
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *IDForBuf(const void *buf, size_t length) {
|
const char *IDForBuf(const void *buf, size_t length) {
|
||||||
uint8_t hash[32];
|
uint8_t hash[32];
|
||||||
SHA256_Buf(buf, length, hash);
|
SHA256_Buf(buf, length, hash);
|
||||||
@ -186,5 +191,48 @@ const char *Hex(const void *buf, size_t length) {
|
|||||||
char *id = (char *)calloc(length*2+1, sizeof(char));
|
char *id = (char *)calloc(length*2+1, sizeof(char));
|
||||||
for (int kH = 0; kH < length; kH++)
|
for (int kH = 0; kH < length; kH++)
|
||||||
sprintf(&(id[kH * 2]), "%02X", ((const uint8_t*)buf)[kH]);
|
sprintf(&(id[kH * 2]), "%02X", ((const uint8_t*)buf)[kH]);
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int putvari;
|
||||||
|
char *putvarc = NULL;
|
||||||
|
static void initputvar() {
|
||||||
|
if (putvarc)
|
||||||
|
free(putvarc);
|
||||||
|
putvari=0;
|
||||||
|
putvarc=(char *)calloc(256, sizeof(char));
|
||||||
|
}
|
||||||
|
static int putvar(int c) {
|
||||||
|
putvarc[putvari++]=c;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *Identicon(const char *userName, const char *masterPassword) {
|
||||||
|
const char *left[] = { "╔", "╚", "╰", "═" };
|
||||||
|
const char *right[] = { "╗", "╝", "╯", "═" };
|
||||||
|
const char *body[] = { "█", "░", "▒", "▓", "☺", "☻" };
|
||||||
|
const char *accessory[] = { "◈", "◎", "◐", "◑", "◒", "◓", "☀", "☁", "☂", "☃", "☄", "★", "☆", "☎", "☏", "⎈", "⌂", "☘", "☢", "☣", "☕", "⌚", "⌛", "⏰", "⚡", "⛄", "⛅", "☔", "♔", "♕", "♖", "♗", "♘", "♙", "♚", "♛", "♜", "♝", "♞", "♟", "♨", "♩", "♪", "♫", "⚐", "⚑", "⚔", "⚖", "⚙", "⚠", "⌘", "⏎", "✄", "✆", "✈", "✉", "✌" };
|
||||||
|
|
||||||
|
uint8_t identiconSeed[32];
|
||||||
|
HMAC_SHA256_Buf(masterPassword, strlen(masterPassword), userName, strlen(userName), identiconSeed);
|
||||||
|
|
||||||
|
char *identicon = (char *)calloc(20, sizeof(char));
|
||||||
|
setupterm(NULL, 2, NULL);
|
||||||
|
initputvar();
|
||||||
|
tputs(tparm(tgetstr("AF", NULL), identiconSeed[4] % 7 + 1), 1, putvar);
|
||||||
|
char red[strlen(putvarc)];
|
||||||
|
strcpy(red, putvarc);
|
||||||
|
tputs(tgetstr("me", NULL), 1, putvar);
|
||||||
|
char reset[strlen(putvarc)];
|
||||||
|
strcpy(reset, putvarc);
|
||||||
|
sprintf(identicon, "%s%s%s%s%s%s",
|
||||||
|
red,
|
||||||
|
left[identiconSeed[0] % (sizeof(left) / sizeof(left[0]))],
|
||||||
|
body[identiconSeed[1] % (sizeof(body) / sizeof(body[0]))],
|
||||||
|
right[identiconSeed[2] % (sizeof(right) / sizeof(right[0]))],
|
||||||
|
accessory[identiconSeed[3] % (sizeof(accessory) / sizeof(accessory[0]))],
|
||||||
|
reset);
|
||||||
|
|
||||||
|
return identicon;
|
||||||
|
}
|
||||||
|
@ -56,4 +56,5 @@ const char *CipherForType(MPElementType type, uint8_t seedByte);
|
|||||||
const char CharacterFromClass(char characterClass, uint8_t seedByte);
|
const char CharacterFromClass(char characterClass, uint8_t seedByte);
|
||||||
const char *IDForBuf(const void *buf, size_t length);
|
const char *IDForBuf(const void *buf, size_t length);
|
||||||
const char *Hex(const void *buf, size_t length);
|
const char *Hex(const void *buf, size_t length);
|
||||||
|
const char *Identicon(const char *userName, const char *masterPassword);
|
||||||
|
|
||||||
|
@ -109,8 +109,7 @@ static OSStatus MPHotKeyHander(EventHandlerCallRef nextHandler, EventRef theEven
|
|||||||
// Global hotkey.
|
// Global hotkey.
|
||||||
EventHotKeyRef hotKeyRef;
|
EventHotKeyRef hotKeyRef;
|
||||||
EventTypeSpec hotKeyEvents[1] = { { .eventClass = kEventClassKeyboard, .eventKind = kEventHotKeyPressed } };
|
EventTypeSpec hotKeyEvents[1] = { { .eventClass = kEventClassKeyboard, .eventKind = kEventHotKeyPressed } };
|
||||||
OSStatus status = InstallApplicationEventHandler( NewEventHandlerUPP( MPHotKeyHander ), GetEventTypeCount( hotKeyEvents ),
|
OSStatus status = InstallApplicationEventHandler( NewEventHandlerUPP( MPHotKeyHander ), GetEventTypeCount( hotKeyEvents ), hotKeyEvents, (__bridge void *)self, NULL );
|
||||||
hotKeyEvents, (__bridge void *)self, NULL );
|
|
||||||
if (status != noErr)
|
if (status != noErr)
|
||||||
err( @"Error installing application event handler: %i", (int)status );
|
err( @"Error installing application event handler: %i", (int)status );
|
||||||
status = RegisterEventHotKey( 35 /* p */, controlKey + cmdKey, MPShowHotKey, GetApplicationEventTarget(), 0, &hotKeyRef );
|
status = RegisterEventHotKey( 35 /* p */, controlKey + cmdKey, MPShowHotKey, GetApplicationEventTarget(), 0, &hotKeyRef );
|
||||||
|
@ -682,8 +682,10 @@ referenceSizeForFooterInSection:(NSInteger)section {
|
|||||||
} );
|
} );
|
||||||
PearlAddNotificationObserver( NSPersistentStoreCoordinatorStoresDidChangeNotification, [MPiOSAppDelegate get].storeCoordinator, nil,
|
PearlAddNotificationObserver( NSPersistentStoreCoordinatorStoresDidChangeNotification, [MPiOSAppDelegate get].storeCoordinator, nil,
|
||||||
^(MPUsersViewController *self, NSNotification *note) {
|
^(MPUsersViewController *self, NSNotification *note) {
|
||||||
[self registerObservers];
|
PearlMainQueue( ^{
|
||||||
[self reloadUsers];
|
[self registerObservers];
|
||||||
|
[self reloadUsers];
|
||||||
|
} );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3492,6 +3492,7 @@
|
|||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = "/bin/sh -e";
|
shellPath = "/bin/sh -e";
|
||||||
shellScript = "exec ../../../Scripts/updatePlist";
|
shellScript = "exec ../../../Scripts/updatePlist";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
DA8D88E019DA412A00B189D0 /* Run Script: genassets */ = {
|
DA8D88E019DA412A00B189D0 /* Run Script: genassets */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
# ______________________________________________________________________
|
# ______________________________________________________________________
|
||||||
# | |
|
# | |
|
||||||
# | .:: TABLE OF CONTENTS ::. |
|
# | .: TABLE OF CONTENTS :. |
|
||||||
# |______________________________________________________________________|
|
# |______________________________________________________________________|
|
||||||
#
|
#
|
||||||
# chr decimal
|
# chr decimal
|
||||||
@ -132,7 +132,7 @@ _tocHash=71e13f42e1ea82c1c7019b27a3bc71f3
|
|||||||
|
|
||||||
# ______________________________________________________________________
|
# ______________________________________________________________________
|
||||||
# | |
|
# | |
|
||||||
# | .:: GLOBAL CONFIGURATION ::. |
|
# | .: GLOBAL CONFIGURATION :. |
|
||||||
# |______________________________________________________________________|
|
# |______________________________________________________________________|
|
||||||
|
|
||||||
# Unset all exported functions. Exported functions are evil.
|
# Unset all exported functions. Exported functions are evil.
|
||||||
@ -177,7 +177,7 @@ genToc() {
|
|||||||
|
|
||||||
# ______________________________________________________________________
|
# ______________________________________________________________________
|
||||||
# | |
|
# | |
|
||||||
# | .:: GLOBAL DECLARATIONS ::. |
|
# | .: GLOBAL DECLARATIONS :. |
|
||||||
# |______________________________________________________________________|
|
# |______________________________________________________________________|
|
||||||
|
|
||||||
# Variables for convenience sequences.
|
# Variables for convenience sequences.
|
||||||
@ -230,7 +230,7 @@ runner=( '> >' \
|
|||||||
tput eA; tput as;
|
tput eA; tput as;
|
||||||
tput ac; tput ae; } ) # Drawing characters
|
tput ac; tput ae; } ) # Drawing characters
|
||||||
back=$'\b'
|
back=$'\b'
|
||||||
} 2>/dev/null ||:
|
} ||:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ runner=( '> >' \
|
|||||||
|
|
||||||
# ______________________________________________________________________
|
# ______________________________________________________________________
|
||||||
# | |
|
# | |
|
||||||
# | .:: FUNCTION DECLARATIONS ::. |
|
# | .: FUNCTION DECLARATIONS :. |
|
||||||
# |______________________________________________________________________|
|
# |______________________________________________________________________|
|
||||||
|
|
||||||
|
|
||||||
@ -1549,7 +1549,7 @@ stackTrace() {
|
|||||||
|
|
||||||
# ______________________________________________________________________
|
# ______________________________________________________________________
|
||||||
# | |
|
# | |
|
||||||
# | .:: ENTRY POINT ::. |
|
# | .: ENTRY POINT :. |
|
||||||
# |______________________________________________________________________|
|
# |______________________________________________________________________|
|
||||||
|
|
||||||
# Make sure this file is sourced and not executed.
|
# Make sure this file is sourced and not executed.
|
||||||
@ -1569,6 +1569,6 @@ stackTrace() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
:
|
:
|
||||||
: .:: END SOURCING ::.
|
: .: END SOURCING :.
|
||||||
: ______________________________________________________________________
|
: ______________________________________________________________________
|
||||||
:
|
:
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
cd "${BASH_SOURCE%/*}"
|
cd "${BASH_SOURCE%/*}"
|
||||||
source bashlib
|
source ./bashlib
|
||||||
set -e
|
|
||||||
cd ..
|
cd ..
|
||||||
export PATH+=:/usr/libexec
|
export PATH+=:/usr/libexec
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@
|
|||||||
<script>
|
<script>
|
||||||
var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
|
var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),GOOG_FIXURL_SITE = location.host;
|
||||||
</script>
|
</script>
|
||||||
<script src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
|
<script src="://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="algorithm">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="algorithm">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
@ -55,13 +55,6 @@
|
|||||||
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<!-- <div class="box effect-8">
|
|
||||||
iframe id="ytplayer" type="text/html" width="640" height="360" frameborder="0"
|
|
||||||
src="http://www.youtube.com/embed/QTfA0O7YnHQ?origin=http://masterpassword.lyndir.com&autohide=1&autoplay=0&rel=0&showinfo=0&theme=light&color=white"></iframe
|
|
||||||
<iframe width="640" height="360" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen
|
|
||||||
src="http://player.vimeo.com/video/45803664?title=0&byline=0&portrait=0&color=ffffff"></iframe>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h2>The Master Password Algorithm</h2>
|
<h2>The Master Password Algorithm</h2>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="trouble">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="trouble">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
@ -55,13 +55,6 @@
|
|||||||
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<!-- <div class="box effect-8">
|
|
||||||
iframe id="ytplayer" type="text/html" width="640" height="360" frameborder="0"
|
|
||||||
src="http://www.youtube.com/embed/QTfA0O7YnHQ?origin=http://masterpassword.lyndir.com&autohide=1&autoplay=0&rel=0&showinfo=0&theme=light&color=white"></iframe
|
|
||||||
<iframe width="640" height="360" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen
|
|
||||||
src="http://player.vimeo.com/video/45803664?title=0&byline=0&portrait=0&color=ffffff"></iframe>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h2>Security Overview</h2>
|
<h2>Security Overview</h2>
|
||||||
</div>
|
</div>
|
||||||
@ -94,7 +87,7 @@
|
|||||||
|
|
||||||
<h1 id="surrender">Can an officer force me to divulge my master password?</h1>
|
<h1 id="surrender">Can an officer force me to divulge my master password?</h1>
|
||||||
<p>Cryptography only provides technical security. It does not protect you from situations where you are legally required or forced by peers to surrender your key.</p>
|
<p>Cryptography only provides technical security. It does not protect you from situations where you are legally required or forced by peers to surrender your key.</p>
|
||||||
<img class="block" src="http://imgs.xkcd.com/comics/security.png" />
|
<img class="block" src="https://sslimgs.xkcd.com/comics/security.png" />
|
||||||
<p>In fact, many countries provide their officers with a legal grounds for forcing you to divulge your encryption keys to any encrypted information they've recovered during a warranted search.</p>
|
<p>In fact, many countries provide their officers with a legal grounds for forcing you to divulge your encryption keys to any encrypted information they've recovered during a warranted search.</p>
|
||||||
<p>Again, unlike ordinary password managers, Master Password might have an edge here. If you make no use of stored passwords, Master Password doesn't actually encrypt anything with your master password. That means, when your devices are seized, these legal grounds may no longer apply. Note however that this does not constitute legal advice and that this theory has never been tested in practice.</p>
|
<p>Again, unlike ordinary password managers, Master Password might have an edge here. If you make no use of stored passwords, Master Password doesn't actually encrypt anything with your master password. That means, when your devices are seized, these legal grounds may no longer apply. Note however that this does not constitute legal advice and that this theory has never been tested in practice.</p>
|
||||||
<p>For your safety, we recommend that in preparation of travelling, you change the master password for your user on the device. That way, if your device is seized by a foreign entity and they force you to divulge your master password, you'll likely be fully compliant by simply giving up the new master password even though it will cause the app to generate invalid passwords for all your sites. Later, you can always change the master password back to the real one.</p>
|
<p>For your safety, we recommend that in preparation of travelling, you change the master password for your user on the device. That way, if your device is seized by a foreign entity and they force you to divulge your master password, you'll likely be fully compliant by simply giving up the new master password even though it will cause the app to generate invalid passwords for all your sites. Later, you can always change the master password back to the real one.</p>
|
||||||
@ -102,7 +95,7 @@
|
|||||||
<h1 id="masterpassword">What should my master password be?</h1>
|
<h1 id="masterpassword">What should my master password be?</h1>
|
||||||
<p>The simple answer to that question is: First and foremost, memorable and unrelated to you. What that means is that the most important thing about your master password is that you need to be able to recall it any time and yet it should not be derived from anything personal.</p>
|
<p>The simple answer to that question is: First and foremost, memorable and unrelated to you. What that means is that the most important thing about your master password is that you need to be able to recall it any time and yet it should not be derived from anything personal.</p>
|
||||||
<p>That advice usually doesn't help very much with actually picking a good master password. <strong>The goal of a good password is that it'll take an attacker a lot of guesses before he'll find it</strong>. That is the core idea behind good passwords.</p>
|
<p>That advice usually doesn't help very much with actually picking a good master password. <strong>The goal of a good password is that it'll take an attacker a lot of guesses before he'll find it</strong>. That is the core idea behind good passwords.</p>
|
||||||
<img class="block" src="http://imgs.xkcd.com/comics/password_strength.png" />
|
<img class="block" src="https://sslimgs.xkcd.com/comics/password_strength.png" />
|
||||||
<p>There are a few strategies of getting good passwords. The speed with which an attacker can guess your password depends a lot on whether he knows what kind of password you're using or not. So we'll compare a few password strategies, their strength and how memorable they are.</p>
|
<p>There are a few strategies of getting good passwords. The speed with which an attacker can guess your password depends a lot on whether he knows what kind of password you're using or not. So we'll compare a few password strategies, their strength and how memorable they are.</p>
|
||||||
<p>The simplest strategy for picking good passwords is by just picking a bunch of random letters, digits and symbols and mixing them up. This is a great strategy for strong passwords but those passwords are usually not very memorable.</p>
|
<p>The simplest strategy for picking good passwords is by just picking a bunch of random letters, digits and symbols and mixing them up. This is a great strategy for strong passwords but those passwords are usually not very memorable.</p>
|
||||||
<p>Another strategy is by "encoding" something you already know. This can seem like a good way to make memorable passwords, but recalling the "encoding" you used two years later can be tricky. This also makes it much easier for attackers that know you to find your password.</p>
|
<p>Another strategy is by "encoding" something you already know. This can seem like a good way to make memorable passwords, but recalling the "encoding" you used two years later can be tricky. This also makes it much easier for attackers that know you to find your password.</p>
|
||||||
@ -151,7 +144,7 @@
|
|||||||
<td>Difficult</td>
|
<td>Difficult</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4">Encoding a word, <a href="http://xkcd.com/936/" onclick="_gaq.push(['_trackPageview', '/outbound/xkcd/troubador']);">Tr0ub4dor</a> style</th>
|
<th colspan="4">Encoding a word, <a href="https://xkcd.com/936/" onclick="_gaq.push(['_trackPageview', '/outbound/xkcd/troubador']);">Tr0ub4dor</a> style</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><code>Tr0ub4dor</code></td>
|
<td><code>Tr0ub4dor</code></td>
|
||||||
@ -169,7 +162,7 @@
|
|||||||
<td>Moderate</td>
|
<td>Moderate</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="4">Nonsense sentence, <a href="http://xkcd.com/936/" onclick="_gaq.push(['_trackPageview', '/outbound/xkcd/correct-horse']);">correct horse</a> style</th>
|
<th colspan="4">Nonsense sentence, <a href="https://xkcd.com/936/" onclick="_gaq.push(['_trackPageview', '/outbound/xkcd/correct-horse']);">correct horse</a> style</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><code>correct horse battery staple</code></td>
|
<td><code>correct horse battery staple</code></td>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/about.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="app">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="app">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<style>
|
|
||||||
body, html {
|
|
||||||
color: white;
|
|
||||||
font-family: 'Copperplate', sans-serif;
|
|
||||||
font-size: smaller;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
*:link, *:visited {
|
|
||||||
color: inherit;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p></p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,21 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<style>
|
|
||||||
body, html {
|
|
||||||
color: white;
|
|
||||||
font-family: 'Copperplate', sans-serif;
|
|
||||||
font-size: smaller;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
*:link, *:visited {
|
|
||||||
color: inherit;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p><a href="http://masterpasswordapp.com/support.html">Open support</a> if you have any issues.</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="privacy">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="privacy">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
@ -55,13 +55,6 @@
|
|||||||
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<!-- <div class="box effect-8">
|
|
||||||
iframe id="ytplayer" type="text/html" width="640" height="360" frameborder="0"
|
|
||||||
src="http://www.youtube.com/embed/QTfA0O7YnHQ?origin=http://masterpassword.lyndir.com&autohide=1&autoplay=0&rel=0&showinfo=0&theme=light&color=white"></iframe
|
|
||||||
<iframe width="640" height="360" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen
|
|
||||||
src="http://player.vimeo.com/video/45803664?title=0&byline=0&portrait=0&color=ffffff"></iframe>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h2>Privacy Policy</h2>
|
<h2>Privacy Policy</h2>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="security">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="security">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="support">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="support">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
@ -55,13 +55,6 @@
|
|||||||
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
<img class="background" src="img/mp-process-angled.png" data-stellar-ratio="2.5" />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<!-- <div class="box effect-8">
|
|
||||||
iframe id="ytplayer" type="text/html" width="640" height="360" frameborder="0"
|
|
||||||
src="http://www.youtube.com/embed/QTfA0O7YnHQ?origin=http://masterpassword.lyndir.com&autohide=1&autoplay=0&rel=0&showinfo=0&theme=light&color=white"></iframe
|
|
||||||
<iframe width="640" height="360" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen
|
|
||||||
src="http://player.vimeo.com/video/45803664?title=0&byline=0&portrait=0&color=ffffff"></iframe>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h2>Support</h2>
|
<h2>Support</h2>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="trouble">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="trouble">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html class="no-js" itemscope itemtype="http://schema.org/Product">
|
<html class="no-js" itemscope itemtype="://schema.org/Product">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
<title itemprop="name">Master Password — Secure your life, forget your passwords.</title>
|
||||||
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
<meta itemprop="description" content="Master Password is an ingenious password solution that makes your passwords truly impossible to lose." />
|
||||||
<meta itemprop="image" content="http://masterpassword.lyndir.com/img/iTunesArtwork-Rounded.png" />
|
<meta itemprop="image" content="img/about.png" />
|
||||||
<meta name="apple-itunes-app" content="app-id=510296984" />
|
<meta name="apple-itunes-app" content="app-id=510296984" />
|
||||||
<meta name="viewport" content="width=device-width">
|
<meta name="viewport" content="width=device-width">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
|
||||||
<script src="js/vendor/prefixfree.min.js"></script>
|
<script src="js/vendor/prefixfree.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body itemscope itemtype="http://schema.org/MobileSoftwareApplication" id="what">
|
<body itemscope itemtype="://schema.org/MobileSoftwareApplication" id="what">
|
||||||
<!--[if lt IE 7]>
|
<!--[if lt IE 7]>
|
||||||
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
@import url(http://fonts.googleapis.com/css?family=Flamenco:300|Exo+2:400,100,900);
|
@import url(://fonts.googleapis.com/css?family=Flamenco:300|Exo+2:400,100,900);
|
||||||
|
|
||||||
/**** BASE STYLE ****/
|
/**** BASE STYLE ****/
|
||||||
html {
|
html {
|
||||||
|
@ -37,7 +37,7 @@ try {
|
|||||||
ES6 || document.write("<script src=js/mpw-js/traceur-runtime.js><\/script>");
|
ES6 || document.write("<script src=js/mpw-js/traceur-runtime.js><\/script>");
|
||||||
|
|
||||||
// If setImmediate is not implemented we include the polyfill
|
// If setImmediate is not implemented we include the polyfill
|
||||||
window.setImmediate || document.write("<script src=js/" + esdir + "setImmediate-polyfill.js><\/script>");
|
window.setImmediate || document.write("<script src=js/mpw-js/" + esdir + "setImmediate-polyfill.js><\/script>");
|
||||||
|
|
||||||
// Include the scrypt implementation
|
// Include the scrypt implementation
|
||||||
var SCRYPTASM_PATH = (window.location + '').replace(/[^/]*(#[^#]*)?$/, 'js/mpw-js/scrypt-asm.js');
|
var SCRYPTASM_PATH = (window.location + '').replace(/[^/]*(#[^#]*)?$/, 'js/mpw-js/scrypt-asm.js');
|
||||||
|
Loading…
Reference in New Issue
Block a user