Merge pull request #22 from sachaaaaa/mnemonic_language

Add Mnemonic language dropdown
pull/23/head
sachaaaaa 7 years ago committed by GitHub
commit 73fda4f172
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -574,6 +574,8 @@
<input class='form-control' type='text' id='mnemonic' placeholder='Mnemonic' autocomplete='off' spellcheck='false'> <input class='form-control' type='text' id='mnemonic' placeholder='Mnemonic' autocomplete='off' spellcheck='false'>
<select id='mnemonic-language'></select>
<div class='clearfix'> <div class='clearfix'>
<a class='button' id='register-mnemonic'>Register using mnenomic</a> <a class='button' id='register-mnemonic'>Register using mnenomic</a>
</div> </div>

@ -24,6 +24,14 @@
el: this.$('#phone-number-input'), el: this.$('#phone-number-input'),
}); });
this.$('#error').hide(); this.$('#error').hide();
window.mnemonic.get_languages().forEach(language => {
this.$('#mnemonic-language').append($('<option>', {
value: language,
text: language.charAt(0).toUpperCase() + language.slice(1),
}));
});
}, },
events: { events: {
'validation input.number': 'onValidation', 'validation input.number': 'onValidation',
@ -36,7 +44,7 @@
}, },
register() { register() {
this.accountManager this.accountManager
.registerSingleDevice(this.$('#mnemonic').val()) .registerSingleDevice(this.$('#mnemonic').val(), this.$('#mnemonic-language').val())
.then(() => { .then(() => {
this.$el.trigger('openInbox'); this.$el.trigger('openInbox');
}) })

@ -5,6 +5,7 @@ module.exports = {
mn_encode, mn_encode,
mn_decode, mn_decode,
sc_reduce32, sc_reduce32,
get_languages,
}; };
class MnemonicError extends Error {} class MnemonicError extends Error {}
@ -127,14 +128,14 @@ function mn_decode(str, wordset_name) {
} }
var mn_words = { var mn_words = {
'electrum': {
prefix_len: 0,
words: require('../mnemonic_languages/electrum'),
},
'english': { 'english': {
prefix_len: 3, prefix_len: 3,
words: require('../mnemonic_languages/english'), words: require('../mnemonic_languages/english'),
}, },
'electrum': {
prefix_len: 0,
words: require('../mnemonic_languages/electrum'),
},
'spanish': { 'spanish': {
prefix_len: 4, prefix_len: 4,
words: require('../mnemonic_languages/spanish'), words: require('../mnemonic_languages/spanish'),
@ -149,6 +150,10 @@ var mn_words = {
} }
}; };
function get_languages() {
return Object.keys(mn_words);
}
for (var i in mn_words) { for (var i in mn_words) {
if (mn_words.hasOwnProperty(i)) { if (mn_words.hasOwnProperty(i)) {
if (mn_words[i].prefix_len === 0) { if (mn_words[i].prefix_len === 0) {

@ -44,7 +44,7 @@
requestSMSVerification(number) { requestSMSVerification(number) {
return this.server.requestVerificationSMS(number); return this.server.requestVerificationSMS(number);
}, },
registerSingleDevice(mnemonic) { registerSingleDevice(mnemonic, mnemonicLanguage) {
const createAccount = this.createAccount.bind(this); const createAccount = this.createAccount.bind(this);
const clearSessionsAndPreKeys = this.clearSessionsAndPreKeys.bind(this); const clearSessionsAndPreKeys = this.clearSessionsAndPreKeys.bind(this);
const generateKeys = this.generateKeys.bind(this, 0); const generateKeys = this.generateKeys.bind(this, 0);
@ -53,7 +53,7 @@
let generateKeypair; let generateKeypair;
if (mnemonic) { if (mnemonic) {
generateKeypair = () => { generateKeypair = () => {
const seedHex = window.mnemonic.mn_decode(mnemonic); const seedHex = window.mnemonic.mn_decode(mnemonic, mnemonicLanguage);
const privKeyHex = window.mnemonic.sc_reduce32(seedHex); const privKeyHex = window.mnemonic.sc_reduce32(seedHex);
const privKey = dcodeIO.ByteBuffer.wrap(privKeyHex, 'hex').toArrayBuffer(); const privKey = dcodeIO.ByteBuffer.wrap(privKeyHex, 'hex').toArrayBuffer();
return libsignal.Curve.async.createKeyPair(privKey); return libsignal.Curve.async.createKeyPair(privKey);

Loading…
Cancel
Save