From 4dd6050628487797ea531770a33ee766c86625c8 Mon Sep 17 00:00:00 2001 From: Ian Coleman Date: Sat, 27 Sep 2014 23:20:36 +1000 Subject: [PATCH] UTF-8 strings handled correctly by asmCrypto --- src/index.html | 2 + src/js/asmcrypto.js | 62 +++++++---- src/js/jsbip39.js | 214 +------------------------------------ src/js/wordlist_english.js | 206 +++++++++++++++++++++++++++++++++++ src/js/wordlists.js | 1 + 5 files changed, 254 insertions(+), 231 deletions(-) create mode 100644 src/js/wordlist_english.js create mode 100644 src/js/wordlists.js diff --git a/src/index.html b/src/index.html index 1a4164c..468a1c0 100644 --- a/src/index.html +++ b/src/index.html @@ -346,6 +346,8 @@ + + diff --git a/src/js/asmcrypto.js b/src/js/asmcrypto.js index 6e5cd5f..c056f56 100644 --- a/src/js/asmcrypto.js +++ b/src/js/asmcrypto.js @@ -1,4 +1,3 @@ -// INCLUDE ASMCRYPTO // https://rawgit.com/tresorit/asmcrypto.js/598a1098504f1b2d0e615bc51dd8404afd2d338b/asmcrypto.js // Provides PBKDF2 functionality // It's faster than CryptoJS @@ -6,8 +5,8 @@ (function(exports, global) { - "use strict"; global["asmCrypto"] = exports; + "use strict"; function string_to_bytes(str) { var i, len = str.length, arr = new Uint8Array(len); for (i = 0; i < len; i += 1) { @@ -86,8 +85,7 @@ var _aes_tables = [ 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22, 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125, 198, 248, 238, 246, 255, 214, 222, 145, 96, 2, 206, 86, 231, 181, 77, 236, 143, 31, 137, 250, 239, 178, 142, 251, 65, 179, 95, 69, 35, 83, 228, 155, 117, 225, 61, 76, 108, 126, 245, 131, 104, 81, 209, 249, 226, 171, 98, 42, 8, 149, 70, 157, 48, 55, 10, 47, 14, 36, 27, 223, 205, 78, 127, 234, 18, 29, 88, 52, 54, 220, 180, 91, 164, 118, 183, 125, 82, 221, 94, 19, 166, 185, 0, 193, 64, 227, 121, 182, 212, 141, 103, 114, 148, 152, 176, 133, 187, 197, 79, 237, 134, 154, 102, 17, 138, 233, 4, 254, 160, 120, 37, 75, 162, 93, 128, 5, 63, 33, 112, 241, 99, 119, 175, 66, 32, 229, 253, 191, 129, 24, 38, 195, 190, 53, 136, 46, 147, 85, 252, 122, 200, 186, 50, 230, 192, 25, 158, 163, 68, 84, 59, 11, 140, 199, 107, 40, 167, 188, 22, 173, 219, 100, 116, 20, 146, 12, 72, 184, 159, 189, 67, 196, 57, 49, 211, 242, 213, 139, 110, 218, 1, 177, 156, 73, 216, 172, 243, 207, 202, 244, 71, 16, 111, 240, 74, 92, 56, 87, 115, 151, 203, 161, 232, 62, 150, 97, 13, 15, 224, 124, 113, 204, 144, 6, 247, 28, 194, 106, 174, 105, 23, 153, 58, 39, 217, 235, 43, 34, 210, 169, 7, 51, 45, 60, 21, 201, 135, 170, 80, 165, 3, 89, 9, 26, 101, 215, 132, 208, 130, 41, 90, 30, 123, 168, 109, 44, 165, 132, 153, 141, 13, 189, 177, 84, 80, 3, 169, 125, 25, 98, 230, 154, 69, 157, 64, 135, 21, 235, 201, 11, 236, 103, 253, 234, 191, 247, 150, 91, 194, 28, 174, 106, 90, 65, 2, 79, 92, 244, 52, 8, 147, 115, 83, 63, 12, 82, 101, 94, 40, 161, 15, 181, 9, 54, 155, 61, 38, 105, 205, 159, 27, 158, 116, 46, 45, 178, 238, 251, 246, 77, 97, 206, 123, 62, 113, 151, 245, 104, 0, 44, 96, 31, 200, 237, 190, 70, 217, 75, 222, 212, 232, 74, 107, 42, 229, 22, 197, 215, 85, 148, 207, 16, 6, 129, 240, 68, 186, 227, 243, 254, 192, 138, 173, 188, 72, 4, 223, 193, 117, 99, 48, 26, 14, 109, 76, 20, 53, 47, 225, 162, 204, 57, 87, 242, 130, 71, 172, 231, 43, 149, 160, 152, 209, 127, 102, 126, 171, 131, 202, 41, 211, 60, 121, 226, 29, 118, 59, 86, 78, 30, 219, 10, 108, 228, 93, 110, 239, 166, 168, 164, 55, 139, 50, 67, 89, 183, 140, 100, 210, 224, 180, 250, 7, 37, 175, 142, 233, 24, 213, 136, 111, 114, 36, 241, 199, 81, 35, 124, 156, 33, 221, 220, 134, 133, 144, 66, 196, 170, 216, 5, 1, 18, 163, 95, 249, 208, 145, 88, 39, 185, 56, 19, 179, 51, 187, 112, 137, 167, 182, 34, 146, 32, 73, 255, 120, 122, 143, 248, 128, 23, 218, 49, 198, 184, 195, 176, 119, 17, 203, 252, 214, 58, 0, 9, 18, 27, 36, 45, 54, 63, 72, 65, 90, 83, 108, 101, 126, 119, 144, 153, 130, 139, 180, 189, 166, 175, 216, 209, 202, 195, 252, 245, 238, 231, 59, 50, 41, 32, 31, 22, 13, 4, 115, 122, 97, 104, 87, 94, 69, 76, 171, 162, 185, 176, 143, 134, 157, 148, 227, 234, 241, 248, 199, 206, 213, 220, 118, 127, 100, 109, 82, 91, 64, 73, 62, 55, 44, 37, 26, 19, 8, 1, 230, 239, 244, 253, 194, 203, 208, 217, 174, 167, 188, 181, 138, 131, 152, 145, 77, 68, 95, 86, 105, 96, 123, 114, 5, 12, 23, 30, 33, 40, 51, 58, 221, 212, 207, 198, 249, 240, 235, 226, 149, 156, 135, 142, 177, 184, 163, 170, 236, 229, 254, 247, 200, 193, 218, 211, 164, 173, 182, 191, 128, 137, 146, 155, 124, 117, 110, 103, 88, 81, 74, 67, 52, 61, 38, 47, 16, 25, 2, 11, 215, 222, 197, 204, 243, 250, 225, 232, 159, 150, 141, 132, 187, 178, 169, 160, 71, 78, 85, 92, 99, 106, 113, 120, 15, 6, 29, 20, 43, 34, 57, 48, 154, 147, 136, 129, 190, 183, 172, 165, 210, 219, 192, 201, 246, 255, 228, 237, 10, 3, 24, 17, 46, 39, 60, 53, 66, 75, 80, 89, 102, 111, 116, 125, 161, 168, 179, 186, 133, 140, 151, 158, 233, 224, 251, 242, 205, 196, 223, 214, 49, 56, 35, 42, 21, 28, 7, 14, 121, 112, 107, 98, 93, 84, 79, 70, 0, 11, 22, 29, 44, 39, 58, 49, 88, 83, 78, 69, 116, 127, 98, 105, 176, 187, 166, 173, 156, 151, 138, 129, 232, 227, 254, 245, 196, 207, 210, 217, 123, 112, 109, 102, 87, 92, 65, 74, 35, 40, 53, 62, 15, 4, 25, 18, 203, 192, 221, 214, 231, 236, 241, 250, 147, 152, 133, 142, 191, 180, 169, 162, 246, 253, 224, 235, 218, 209, 204, 199, 174, 165, 184, 179, 130, 137, 148, 159, 70, 77, 80, 91, 106, 97, 124, 119, 30, 21, 8, 3, 50, 57, 36, 47, 141, 134, 155, 144, 161, 170, 183, 188, 213, 222, 195, 200, 249, 242, 239, 228, 61, 54, 43, 32, 17, 26, 7, 12, 101, 110, 115, 120, 73, 66, 95, 84, 247, 252, 225, 234, 219, 208, 205, 198, 175, 164, 185, 178, 131, 136, 149, 158, 71, 76, 81, 90, 107, 96, 125, 118, 31, 20, 9, 2, 51, 56, 37, 46, 140, 135, 154, 145, 160, 171, 182, 189, 212, 223, 194, 201, 248, 243, 238, 229, 60, 55, 42, 33, 16, 27, 6, 13, 100, 111, 114, 121, 72, 67, 94, 85, 1, 10, 23, 28, 45, 38, 59, 48, 89, 82, 79, 68, 117, 126, 99, 104, 177, 186, 167, 172, 157, 150, 139, 128, 233, 226, 255, 244, 197, 206, 211, 216, 122, 113, 108, 103, 86, 93, 64, 75, 34, 41, 52, 63, 14, 5, 24, 19, 202, 193, 220, 215, 230, 237, 240, 251, 146, 153, 132, 143, 190, 181, 168, 163, 0, 13, 26, 23, 52, 57, 46, 35, 104, 101, 114, 127, 92, 81, 70, 75, 208, 221, 202, 199, 228, 233, 254, 243, 184, 181, 162, 175, 140, 129, 150, 155, 187, 182, 161, 172, 143, 130, 149, 152, 211, 222, 201, 196, 231, 234, 253, 240, 107, 102, 113, 124, 95, 82, 69, 72, 3, 14, 25, 20, 55, 58, 45, 32, 109, 96, 119, 122, 89, 84, 67, 78, 5, 8, 31, 18, 49, 60, 43, 38, 189, 176, 167, 170, 137, 132, 147, 158, 213, 216, 207, 194, 225, 236, 251, 246, 214, 219, 204, 193, 226, 239, 248, 245, 190, 179, 164, 169, 138, 135, 144, 157, 6, 11, 28, 17, 50, 63, 40, 37, 110, 99, 116, 121, 90, 87, 64, 77, 218, 215, 192, 205, 238, 227, 244, 249, 178, 191, 168, 165, 134, 139, 156, 145, 10, 7, 16, 29, 62, 51, 36, 41, 98, 111, 120, 117, 86, 91, 76, 65, 97, 108, 123, 118, 85, 88, 79, 66, 9, 4, 19, 30, 61, 48, 39, 42, 177, 188, 171, 166, 133, 136, 159, 146, 217, 212, 195, 206, 237, 224, 247, 250, 183, 186, 173, 160, 131, 142, 153, 148, 223, 210, 197, 200, 235, 230, 241, 252, 103, 106, 125, 112, 83, 94, 73, 68, 15, 2, 21, 24, 59, 54, 33, 44, 12, 1, 22, 27, 56, 53, 34, 47, 100, 105, 126, 115, 80, 93, 74, 71, 220, 209, 198, 203, 232, 229, 242, 255, 180, 185, 174, 163, 128, 141, 154, 151, 0, 14, 28, 18, 56, 54, 36, 42, 112, 126, 108, 98, 72, 70, 84, 90, 224, 238, 252, 242, 216, 214, 196, 202, 144, 158, 140, 130, 168, 166, 180, 186, 219, 213, 199, 201, 227, 237, 255, 241, 171, 165, 183, 185, 147, 157, 143, 129, 59, 53, 39, 41, 3, 13, 31, 17, 75, 69, 87, 89, 115, 125, 111, 97, 173, 163, 177, 191, 149, 155, 137, 135, 221, 211, 193, 207, 229, 235, 249, 247, 77, 67, 81, 95, 117, 123, 105, 103, 61, 51, 33, 47, 5, 11, 25, 23, 118, 120, 106, 100, 78, 64, 82, 92, 6, 8, 26, 20, 62, 48, 34, 44, 150, 152, 138, 132, 174, 160, 178, 188, 230, 232, 250, 244, 222, 208, 194, 204, 65, 79, 93, 83, 121, 119, 101, 107, 49, 63, 45, 35, 9, 7, 21, 27, 161, 175, 189, 179, 153, 151, 133, 139, 209, 223, 205, 195, 233, 231, 245, 251, 154, 148, 134, 136, 162, 172, 190, 176, 234, 228, 246, 248, 210, 220, 206, 192, 122, 116, 102, 104, 66, 76, 94, 80, 10, 4, 22, 24, 50, 60, 46, 32, 236, 226, 240, 254, 212, 218, 200, 198, 156, 146, 128, 142, 164, 170, 184, 182, 12, 2, 16, 30, 52, 58, 40, 38, 124, 114, 96, 110, 68, 74, 88, 86, 55, 57, 43, 37, 15, 1, 19, 29, 71, 73, 91, 85, 127, 113, 99, 109, 215, 217, 203, 197, 239, 225, 243, 253, 167, 169, 187, 181, 159, 145, 131, 141 ]; var _aes_heap_start = 2048; function _aes_asm(stdlib, foreign, buffer) { - // Closure Compiler warning - commented out - //"use asm"; + "use asm"; var S0 = 0, S1 = 0, S2 = 0, S3 = 0, S4 = 0, S5 = 0, S6 = 0, S7 = 0, S8 = 0, S9 = 0, SA = 0, SB = 0, SC = 0, SD = 0, SE = 0, SF = 0; var keySize = 0; var R00 = 0, R01 = 0, R02 = 0, R03 = 0, R04 = 0, R05 = 0, R06 = 0, R07 = 0, R08 = 0, R09 = 0, R0A = 0, R0B = 0, R0C = 0, R0D = 0, R0E = 0, R0F = 0, R10 = 0, R11 = 0, R12 = 0, R13 = 0, R14 = 0, R15 = 0, R16 = 0, R17 = 0, R18 = 0, R19 = 0, R1A = 0, R1B = 0, R1C = 0, R1D = 0, R1E = 0, R1F = 0, R20 = 0, R21 = 0, R22 = 0, R23 = 0, R24 = 0, R25 = 0, R26 = 0, R27 = 0, R28 = 0, R29 = 0, R2A = 0, R2B = 0, R2C = 0, R2D = 0, R2E = 0, R2F = 0, R30 = 0, R31 = 0, R32 = 0, R33 = 0, R34 = 0, R35 = 0, R36 = 0, R37 = 0, R38 = 0, R39 = 0, R3A = 0, R3B = 0, R3C = 0, R3D = 0, R3E = 0, R3F = 0, R40 = 0, R41 = 0, R42 = 0, R43 = 0, R44 = 0, R45 = 0, R46 = 0, R47 = 0, R48 = 0, R49 = 0, R4A = 0, R4B = 0, R4C = 0, R4D = 0, R4E = 0, R4F = 0, R50 = 0, R51 = 0, R52 = 0, R53 = 0, R54 = 0, R55 = 0, R56 = 0, R57 = 0, R58 = 0, R59 = 0, R5A = 0, R5B = 0, R5C = 0, R5D = 0, R5E = 0, R5F = 0, R60 = 0, R61 = 0, R62 = 0, R63 = 0, R64 = 0, R65 = 0, R66 = 0, R67 = 0, R68 = 0, R69 = 0, R6A = 0, R6B = 0, R6C = 0, R6D = 0, R6E = 0, R6F = 0, R70 = 0, R71 = 0, R72 = 0, R73 = 0, R74 = 0, R75 = 0, R76 = 0, R77 = 0, R78 = 0, R79 = 0, R7A = 0, R7B = 0, R7C = 0, R7D = 0, R7E = 0, R7F = 0, R80 = 0, R81 = 0, R82 = 0, R83 = 0, R84 = 0, R85 = 0, R86 = 0, R87 = 0, R88 = 0, R89 = 0, R8A = 0, R8B = 0, R8C = 0, R8D = 0, R8E = 0, R8F = 0, R90 = 0, R91 = 0, R92 = 0, R93 = 0, R94 = 0, R95 = 0, R96 = 0, R97 = 0, R98 = 0, R99 = 0, R9A = 0, R9B = 0, R9C = 0, R9D = 0, R9E = 0, R9F = 0, RA0 = 0, RA1 = 0, RA2 = 0, RA3 = 0, RA4 = 0, RA5 = 0, RA6 = 0, RA7 = 0, RA8 = 0, RA9 = 0, RAA = 0, RAB = 0, RAC = 0, RAD = 0, RAE = 0, RAF = 0, RB0 = 0, RB1 = 0, RB2 = 0, RB3 = 0, RB4 = 0, RB5 = 0, RB6 = 0, RB7 = 0, RB8 = 0, RB9 = 0, RBA = 0, RBB = 0, RBC = 0, RBD = 0, RBE = 0, RBF = 0, RC0 = 0, RC1 = 0, RC2 = 0, RC3 = 0, RC4 = 0, RC5 = 0, RC6 = 0, RC7 = 0, RC8 = 0, RC9 = 0, RCA = 0, RCB = 0, RCC = 0, RCD = 0, RCE = 0, RCF = 0, RD0 = 0, RD1 = 0, RD2 = 0, RD3 = 0, RD4 = 0, RD5 = 0, RD6 = 0, RD7 = 0, RD8 = 0, RD9 = 0, RDA = 0, RDB = 0, RDC = 0, RDD = 0, RDE = 0, RDF = 0, RE0 = 0, RE1 = 0, RE2 = 0, RE3 = 0, RE4 = 0, RE5 = 0, RE6 = 0, RE7 = 0, RE8 = 0, RE9 = 0, REA = 0, REB = 0, REC = 0, RED = 0, REE = 0, REF = 0; @@ -2544,8 +2542,7 @@ cfb_aes_prototype.encrypt = cfb_aes_encrypt; cfb_aes_prototype.decrypt = cfb_aes_decrypt; function sha256_asm(stdlib, foreign, buffer) { - // Closure Compiler warning - commented out - //"use asm"; + "use asm"; var H0 = 0, H1 = 0, H2 = 0, H3 = 0, H4 = 0, H5 = 0, H6 = 0, H7 = 0, TOTAL = 0; var I0 = 0, I1 = 0, I2 = 0, I3 = 0, I4 = 0, I5 = 0, I6 = 0, I7 = 0, O0 = 0, O1 = 0, O2 = 0, O3 = 0, O4 = 0, O5 = 0, O6 = 0, O7 = 0; var HEAP = new stdlib.Uint8Array(buffer); @@ -3412,9 +3409,7 @@ HEAP[offset + length + 1 | 0] = block >>> 16 & 255; HEAP[offset + length + 2 | 0] = block >>> 8 & 255; HEAP[offset + length + 3 | 0] = block & 255; - // Closure compiler warning - The result of the 'bitor' operator is not being used - //hmac_finish(offset, length + 4 | 0, -1) | 0; - hmac_finish(offset, length + 4 | 0, -1); + hmac_finish(offset, length + 4 | 0, -1) | 0; h0 = t0 = H0, h1 = t1 = H1, h2 = t2 = H2, h3 = t3 = H3, h4 = t4 = H4, h5 = t5 = H5, h6 = t6 = H6, h7 = t7 = H7; count = count - 1 | 0; @@ -3524,8 +3519,7 @@ sha256_prototype.process = sha256_process; sha256_prototype.finish = sha256_finish; function sha512_asm(stdlib, foreign, buffer) { - // Closure Compiler warning - commented out - //"use asm"; + "use asm"; var H0h = 0, H0l = 0, H1h = 0, H1l = 0, H2h = 0, H2l = 0, H3h = 0, H3l = 0, H4h = 0, H4l = 0, H5h = 0, H5l = 0, H6h = 0, H6l = 0, H7h = 0, H7l = 0, TOTAL = 0; var I0h = 0, I0l = 0, I1h = 0, I1l = 0, I2h = 0, I2l = 0, I3h = 0, I3l = 0, I4h = 0, I4l = 0, I5h = 0, I5l = 0, I6h = 0, I6l = 0, I7h = 0, I7l = 0, O0h = 0, O0l = 0, O1h = 0, O1l = 0, O2h = 0, O2l = 0, O3h = 0, O3l = 0, O4h = 0, O4l = 0, O5h = 0, O5l = 0, O6h = 0, O6l = 0, O7h = 0, O7l = 0; var HEAP = new stdlib.Uint8Array(buffer); @@ -6751,9 +6745,7 @@ HEAP[offset + length + 1 | 0] = block >>> 16 & 255; HEAP[offset + length + 2 | 0] = block >>> 8 & 255; HEAP[offset + length + 3 | 0] = block & 255; - // Closure compiler warning - The result of the 'bitor' operator is not being used - //hmac_finish(offset, length + 4 | 0, -1) | 0; - hmac_finish(offset, length + 4 | 0, -1); + hmac_finish(offset, length + 4 | 0, -1) | 0; h0h = t0h = H0h; h0l = t0l = H0l; h1h = t1h = H1h; @@ -7236,7 +7228,7 @@ return SHA256_instance.reset().process(data).finish().result; } function sha256_hex(data) { - var result = sha256_bytes(data); + var result = sha256_bytes(data.toUTF8Array()); return bytes_to_hex(result); } function sha256_base64(data) { @@ -7321,8 +7313,8 @@ if (password === undefined) throw new SyntaxError("password required"); if (salt === undefined) throw new SyntaxError("salt required"); return pbkdf2_hmac_sha256_instance.reset({ - password: password - }).generate(salt, iterations, dklen).result; + password: password.toUTF8Array() + }).generate(salt.toUTF8Array(), iterations, dklen).result; } function pbkdf2_hmac_sha256_hex(password, salt, iterations, dklen) { var result = pbkdf2_hmac_sha256_bytes(password, salt, iterations, dklen); @@ -7344,8 +7336,8 @@ if (password === undefined) throw new SyntaxError("password required"); if (salt === undefined) throw new SyntaxError("salt required"); return pbkdf2_hmac_sha512_instance.reset({ - password: password - }).generate(salt, iterations, dklen).result; + password: password.toUTF8Array() + }).generate(salt.toUTF8Array(), iterations, dklen).result; } function pbkdf2_hmac_sha512_hex(password, salt, iterations, dklen) { var result = pbkdf2_hmac_sha512_bytes(password, salt, iterations, dklen); @@ -7465,3 +7457,35 @@ })({}, function() { return this; }()); + +String.prototype.toUTF8Array = function() { + var str = this; + var utf8 = []; + for (var i=0; i < str.length; i++) { + var charcode = str.charCodeAt(i); + if (charcode < 0x80) utf8.push(charcode); + else if (charcode < 0x800) { + utf8.push(0xc0 | (charcode >> 6), + 0x80 | (charcode & 0x3f)); + } + else if (charcode < 0xd800 || charcode >= 0xe000) { + utf8.push(0xe0 | (charcode >> 12), + 0x80 | ((charcode>>6) & 0x3f), + 0x80 | (charcode & 0x3f)); + } + // surrogate pair + else { + i++; + // UTF-16 encodes 0x10000-0x10FFFF by + // subtracting 0x10000 and splitting the + // 20 bits of 0x0-0xFFFFF into two halves + charcode = 0x10000 + (((charcode & 0x3ff)<<10) + | (str.charCodeAt(i) & 0x3ff)) + utf8.push(0xf0 | (charcode >>18), + 0x80 | ((charcode>>12) & 0x3f), + 0x80 | ((charcode>>6) & 0x3f), + 0x80 | (charcode & 0x3f)); + } + } + return new Uint8Array(utf8); +} diff --git a/src/js/jsbip39.js b/src/js/jsbip39.js index 7acf77b..0b88fef 100644 --- a/src/js/jsbip39.js +++ b/src/js/jsbip39.js @@ -133,9 +133,8 @@ var Mnemonic = function(language) { return str.normalize("NFKD"); } else { - // TODO find a library to do this - // Not supported on firefox mobile - console.warn("NFKD Normalization is unavailable"); + // TODO decide how to handle this in the future. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize return str; } } @@ -175,212 +174,3 @@ var Mnemonic = function(language) { init(); } - -WORDLISTS = { -"english": [ -"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse", -"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act", -"action","actor","actress","actual","adapt","add","addict","address","adjust","admit", -"adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent", -"agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert", -"alien","all","alley","allow","almost","alone","alpha","already","also","alter", -"always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger", -"angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique", -"anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic", -"area","arena","argue","arm","armed","armor","army","around","arrange","arrest", -"arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset", -"assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction", -"audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake", -"aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge", -"bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain", -"barrel","base","basic","basket","battle","beach","bean","beauty","because","become", -"beef","before","begin","behave","behind","believe","below","belt","bench","benefit", -"best","betray","better","between","beyond","bicycle","bid","bike","bind","biology", -"bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless", -"blind","blood","blossom","blouse","blue","blur","blush","board","boat","body", -"boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss", -"bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread", -"breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze", -"broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb", -"bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy", -"butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call", -"calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas", -"canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry", -"cart","case","cash","casino","castle","casual","cat","catalog","catch","category", -"cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century", -"cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase", -"chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child", -"chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle", -"citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk", -"clever","click","client","cliff","climb","clinic","clip","clock","clog","close", -"cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut", -"code","coffee","coil","coin","collect","color","column","combine","come","comfort", -"comic","common","company","concert","conduct","confirm","congress","connect","consider","control", -"convince","cook","cool","copper","copy","coral","core","corn","correct","cost", -"cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle", -"craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek", -"crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial", -"cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup", -"cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad", -"damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal", -"debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense", -"define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny", -"depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk", -"despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond", -"diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur", -"direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance", -"divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain", -"donate","donkey","donor","door","dose","double","dove","draft","dragon","drama", -"drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop", -"drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf", -"dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo", -"ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow", -"elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody", -"embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless", -"endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough", -"enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip", -"era","erase","erode","erosion","error","erupt","escape","essay","essence","estate", -"eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange", -"excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit", -"exotic","expand","expect","expire","explain","expose","express","extend","extra","eye", -"eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame", -"family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father", -"fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female", -"fence","festival","fetch","fever","few","fiber","fiction","field","figure","file", -"film","filter","final","find","fine","finger","finish","fire","firm","first", -"fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor", -"flee","flight","flip","float","flock","floor","flower","fluid","flush","fly", -"foam","focus","fog","foil","fold","follow","food","foot","force","forest", -"forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile", -"frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen", -"fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy", -"gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp", -"gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture", -"ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance", -"glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue", -"goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown", -"grab","grace","grain","grant","grape","grass","gravity","great","green","grid", -"grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt", -"guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy", -"harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health", -"heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden", -"high","hill","hint","hip","hire","history","hobby","hockey","hold","hole", -"holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital", -"host","hotel","hour","hover","hub","huge","human","humble","humor","hundred", -"hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea", -"identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune", -"impact","impose","improve","impulse","inch","include","income","increase","index","indicate", -"indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury", -"inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install", -"intact","interest","into","invest","invite","involve","iron","island","isolate","issue", -"item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel", -"job","join","joke","journey","joy","judge","juice","jump","jungle","junior", -"junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney", -"kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife", -"knock","know","lab","label","labor","ladder","lady","lake","lamp","language", -"laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit", -"layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal", -"legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level", -"liar","liberty","library","license","life","lift","light","like","limb","limit", -"link","lion","liquid","list","little","live","lizard","load","loan","lobster", -"local","lock","logic","lonely","long","loop","lottery","loud","lounge","love", -"loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad", -"magic","magnet","maid","mail","main","major","make","mammal","man","manage", -"mandate","mango","mansion","manual","maple","marble","march","margin","marine","market", -"marriage","mask","mass","master","match","material","math","matrix","matter","maximum", -"maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt", -"member","memory","mention","menu","mercy","merge","merit","merry","mesh","message", -"metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor", -"minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile", -"model","modify","mom","moment","monitor","monkey","monster","month","moon","moral", -"more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie", -"much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual", -"myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature", -"near","neck","need","negative","neglect","neither","nephew","nerve","nest","net", -"network","neutral","never","news","next","nice","night","noble","noise","nominee", -"noodle","normal","north","nose","notable","note","nothing","notice","novel","now", -"nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe", -"obtain","obvious","occur","ocean","october","odor","off","offer","office","often", -"oil","okay","old","olive","olympic","omit","once","one","onion","online", -"only","open","opera","opinion","oppose","option","orange","orbit","orchard","order", -"ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output", -"outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact", -"paddle","page","pair","palace","palm","panda","panel","panic","panther","paper", -"parade","parent","park","parrot","party","pass","patch","path","patient","patrol", -"pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen", -"penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo", -"phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot", -"pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate", -"play","please","pledge","pluck","plug","plunge","poem","poet","point","polar", -"pole","police","pond","pony","pool","popular","portion","position","possible","post", -"potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare", -"present","pretty","prevent","price","pride","primary","print","priority","prison","private", -"prize","problem","process","produce","profit","program","project","promote","proof","property", -"prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin", -"punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle", -"pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit", -"raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp", -"ranch","random","range","rapid","rare","rate","rather","raven","raw","razor", -"ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle", -"reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release", -"relief","rely","remain","remember","remind","remove","render","renew","rent","reopen", -"repair","repeat","replace","report","require","rescue","resemble","resist","resource","response", -"result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib", -"ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot", -"ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket", -"romance","roof","rookie","room","rose","rotate","rough","round","route","royal", -"rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness", -"safe","sail","salad","salmon","salon","salt","salute","same","sample","sand", -"satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter", -"scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script", -"scrub","sea","search","season","seat","second","secret","section","security","seed", -"seek","segment","select","sell","seminar","senior","sense","sentence","series","service", -"session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell", -"sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop", -"short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side", -"siege","sight","sign","silent","silk","silly","silver","similar","simple","since", -"sing","siren","sister","situate","six","size","skate","sketch","ski","skill", -"skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight", -"slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth", -"snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda", -"soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry", -"sort","soul","sound","soup","source","south","space","spare","spatial","spawn", -"speak","special","speed","spell","spend","sphere","spice","spider","spike","spin", -"spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring", -"spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp", -"stand","start","state","stay","steak","steel","stem","step","stereo","stick", -"still","sting","stock","stomach","stone","stool","story","stove","strategy","street", -"strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway", -"success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny", -"sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey", -"suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim", -"swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag", -"tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi", -"teach","team","tell","ten","tenant","tennis","tent","term","test","text", -"thank","that","theme","then","theory","there","they","thing","this","thought", -"three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber", -"time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler", -"toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool", -"tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist", -"toward","tower","town","toy","track","trade","traffic","tragic","train","transfer", -"trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick", -"trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust", -"truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle", -"twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella", -"unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform", -"unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade", -"uphold","upon","upper","upset","urban","urge","usage","use","used","useful", -"useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van", -"vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue", -"verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory", -"video","view","village","vintage","violin","virtual","virus","visa","visit","visual", -"vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage", -"wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash", -"wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather", -"web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat", -"wheel","when","where","whip","whisper","wide","width","wife","wild","will", -"win","window","wine","wing","wink","winner","winter","wire","wisdom","wise", -"wish","witness","wolf","woman","wonder","wood","wool","word","work","world", -"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year", -"yellow","you","young","youth","zebra","zero","zone","zoo"] -}; diff --git a/src/js/wordlist_english.js b/src/js/wordlist_english.js new file mode 100644 index 0000000..fa6e624 --- /dev/null +++ b/src/js/wordlist_english.js @@ -0,0 +1,206 @@ +WORDLISTS["english"] = [ +"abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse", +"access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act", +"action","actor","actress","actual","adapt","add","addict","address","adjust","admit", +"adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent", +"agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert", +"alien","all","alley","allow","almost","alone","alpha","already","also","alter", +"always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger", +"angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique", +"anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic", +"area","arena","argue","arm","armed","armor","army","around","arrange","arrest", +"arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset", +"assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction", +"audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake", +"aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge", +"bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain", +"barrel","base","basic","basket","battle","beach","bean","beauty","because","become", +"beef","before","begin","behave","behind","believe","below","belt","bench","benefit", +"best","betray","better","between","beyond","bicycle","bid","bike","bind","biology", +"bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless", +"blind","blood","blossom","blouse","blue","blur","blush","board","boat","body", +"boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss", +"bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread", +"breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze", +"broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb", +"bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy", +"butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call", +"calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas", +"canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry", +"cart","case","cash","casino","castle","casual","cat","catalog","catch","category", +"cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century", +"cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase", +"chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child", +"chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle", +"citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk", +"clever","click","client","cliff","climb","clinic","clip","clock","clog","close", +"cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut", +"code","coffee","coil","coin","collect","color","column","combine","come","comfort", +"comic","common","company","concert","conduct","confirm","congress","connect","consider","control", +"convince","cook","cool","copper","copy","coral","core","corn","correct","cost", +"cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle", +"craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek", +"crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial", +"cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup", +"cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad", +"damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal", +"debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense", +"define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny", +"depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk", +"despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond", +"diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur", +"direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance", +"divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain", +"donate","donkey","donor","door","dose","double","dove","draft","dragon","drama", +"drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop", +"drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf", +"dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo", +"ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow", +"elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody", +"embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless", +"endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough", +"enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip", +"era","erase","erode","erosion","error","erupt","escape","essay","essence","estate", +"eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange", +"excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit", +"exotic","expand","expect","expire","explain","expose","express","extend","extra","eye", +"eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame", +"family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father", +"fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female", +"fence","festival","fetch","fever","few","fiber","fiction","field","figure","file", +"film","filter","final","find","fine","finger","finish","fire","firm","first", +"fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor", +"flee","flight","flip","float","flock","floor","flower","fluid","flush","fly", +"foam","focus","fog","foil","fold","follow","food","foot","force","forest", +"forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile", +"frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen", +"fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy", +"gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp", +"gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture", +"ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance", +"glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue", +"goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown", +"grab","grace","grain","grant","grape","grass","gravity","great","green","grid", +"grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt", +"guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy", +"harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health", +"heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden", +"high","hill","hint","hip","hire","history","hobby","hockey","hold","hole", +"holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital", +"host","hotel","hour","hover","hub","huge","human","humble","humor","hundred", +"hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea", +"identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune", +"impact","impose","improve","impulse","inch","include","income","increase","index","indicate", +"indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury", +"inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install", +"intact","interest","into","invest","invite","involve","iron","island","isolate","issue", +"item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel", +"job","join","joke","journey","joy","judge","juice","jump","jungle","junior", +"junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney", +"kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife", +"knock","know","lab","label","labor","ladder","lady","lake","lamp","language", +"laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit", +"layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal", +"legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level", +"liar","liberty","library","license","life","lift","light","like","limb","limit", +"link","lion","liquid","list","little","live","lizard","load","loan","lobster", +"local","lock","logic","lonely","long","loop","lottery","loud","lounge","love", +"loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad", +"magic","magnet","maid","mail","main","major","make","mammal","man","manage", +"mandate","mango","mansion","manual","maple","marble","march","margin","marine","market", +"marriage","mask","mass","master","match","material","math","matrix","matter","maximum", +"maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt", +"member","memory","mention","menu","mercy","merge","merit","merry","mesh","message", +"metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor", +"minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile", +"model","modify","mom","moment","monitor","monkey","monster","month","moon","moral", +"more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie", +"much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual", +"myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature", +"near","neck","need","negative","neglect","neither","nephew","nerve","nest","net", +"network","neutral","never","news","next","nice","night","noble","noise","nominee", +"noodle","normal","north","nose","notable","note","nothing","notice","novel","now", +"nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe", +"obtain","obvious","occur","ocean","october","odor","off","offer","office","often", +"oil","okay","old","olive","olympic","omit","once","one","onion","online", +"only","open","opera","opinion","oppose","option","orange","orbit","orchard","order", +"ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output", +"outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact", +"paddle","page","pair","palace","palm","panda","panel","panic","panther","paper", +"parade","parent","park","parrot","party","pass","patch","path","patient","patrol", +"pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen", +"penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo", +"phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot", +"pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate", +"play","please","pledge","pluck","plug","plunge","poem","poet","point","polar", +"pole","police","pond","pony","pool","popular","portion","position","possible","post", +"potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare", +"present","pretty","prevent","price","pride","primary","print","priority","prison","private", +"prize","problem","process","produce","profit","program","project","promote","proof","property", +"prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin", +"punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle", +"pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit", +"raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp", +"ranch","random","range","rapid","rare","rate","rather","raven","raw","razor", +"ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle", +"reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release", +"relief","rely","remain","remember","remind","remove","render","renew","rent","reopen", +"repair","repeat","replace","report","require","rescue","resemble","resist","resource","response", +"result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib", +"ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot", +"ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket", +"romance","roof","rookie","room","rose","rotate","rough","round","route","royal", +"rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness", +"safe","sail","salad","salmon","salon","salt","salute","same","sample","sand", +"satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter", +"scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script", +"scrub","sea","search","season","seat","second","secret","section","security","seed", +"seek","segment","select","sell","seminar","senior","sense","sentence","series","service", +"session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell", +"sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop", +"short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side", +"siege","sight","sign","silent","silk","silly","silver","similar","simple","since", +"sing","siren","sister","situate","six","size","skate","sketch","ski","skill", +"skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight", +"slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth", +"snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda", +"soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry", +"sort","soul","sound","soup","source","south","space","spare","spatial","spawn", +"speak","special","speed","spell","spend","sphere","spice","spider","spike","spin", +"spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring", +"spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp", +"stand","start","state","stay","steak","steel","stem","step","stereo","stick", +"still","sting","stock","stomach","stone","stool","story","stove","strategy","street", +"strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway", +"success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny", +"sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey", +"suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim", +"swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag", +"tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi", +"teach","team","tell","ten","tenant","tennis","tent","term","test","text", +"thank","that","theme","then","theory","there","they","thing","this","thought", +"three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber", +"time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler", +"toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool", +"tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist", +"toward","tower","town","toy","track","trade","traffic","tragic","train","transfer", +"trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick", +"trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust", +"truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle", +"twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella", +"unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform", +"unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade", +"uphold","upon","upper","upset","urban","urge","usage","use","used","useful", +"useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van", +"vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue", +"verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory", +"video","view","village","vintage","violin","virtual","virus","visa","visit","visual", +"vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage", +"wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash", +"wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather", +"web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat", +"wheel","when","where","whip","whisper","wide","width","wife","wild","will", +"win","window","wine","wing","wink","winner","winter","wire","wisdom","wise", +"wish","witness","wolf","woman","wonder","wood","wool","word","work","world", +"worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year", +"yellow","you","young","youth","zebra","zero","zone","zoo"] diff --git a/src/js/wordlists.js b/src/js/wordlists.js new file mode 100644 index 0000000..740f20c --- /dev/null +++ b/src/js/wordlists.js @@ -0,0 +1 @@ +WORDLISTS = {}; -- 2.41.0