优化 randomSecword,使得接受更多格式的语言代码
This commit is contained in:
		
							parent
							
								
									e1985e73e6
								
							
						
					
					
						commit
						354a90a8ad
					
				
							
								
								
									
										26
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								index.js
									
									
									
									
									
								
							@ -9,7 +9,7 @@ const eccrypto = require('eccrypto') // 用于加解密。不知道怎么用 cry
 | 
				
			|||||||
const keyman = require('js-crypto-key-utils') // 转换原始密钥和 PER/DER 格式。
 | 
					const keyman = require('js-crypto-key-utils') // 转换原始密钥和 PER/DER 格式。
 | 
				
			||||||
// const BitcoreMnemonic = require('bitcore-mnemonic') // https://bitcore.io/api/mnemonic/   https://github.com/bitpay/bitcore-mnemonic // 打包成 app 里常有问题,试图访问 window 变量,无法生成 secword
 | 
					// const BitcoreMnemonic = require('bitcore-mnemonic') // https://bitcore.io/api/mnemonic/   https://github.com/bitpay/bitcore-mnemonic // 打包成 app 里常有问题,试图访问 window 变量,无法生成 secword
 | 
				
			||||||
const bip39 = require('bip39') // https://github.com/bitcoinjs/bip39 // 有更多语言,但不方便选择语言,也不能使用 pass
 | 
					const bip39 = require('bip39') // https://github.com/bitcoinjs/bip39 // 有更多语言,但不方便选择语言,也不能使用 pass
 | 
				
			||||||
const HDKey = require('hdkey') // https://github.com/cryptocoinjs/hdkey // 或者用 bitcore-mnemonic 或者 ethers 里的相同功能
 | 
					const hdkey = require('hdkey') // https://github.com/cryptocoinjs/hdkey // 或者用 bitcore-mnemonic 或者 ethers 里的相同功能
 | 
				
			||||||
// const bitcorelib = require('bitcore-lib')
 | 
					// const bitcorelib = require('bitcore-lib')
 | 
				
			||||||
// const secp256k1 = require('secp256k1')
 | 
					// const secp256k1 = require('secp256k1')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -226,7 +226,7 @@ module.exports = {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }else {
 | 
					      }else {
 | 
				
			||||||
        // 用 bip39 算法从 secword 到种子,再用 bip32 算法从种子到根私钥。这是比特币、以太坊的标准方式,结果一致。
 | 
					        // 用 bip39 算法从 secword 到种子,再用 bip32 算法从种子到根私钥。这是比特币、以太坊的标准方式,结果一致。
 | 
				
			||||||
        let hdmaster=HDKey.fromMasterSeed(Buffer.from(this.secword2seed(secword, option.pass), 'hex')) // 和 new BitcoreMnemonic(secword).toHDPrivateKey 求出的公私钥一样!
 | 
					        let hdmaster=hdkey.fromMasterSeed(Buffer.from(this.secword2seed(secword, option.pass), 'hex')) // 和 new BitcoreMnemonic(secword).toHDPrivateKey 求出的公私钥一样!
 | 
				
			||||||
//        let hdmaster=new BitcoreMnemonic(secword).toHDPrivateKey(option.pass) // 和 ethers.HDNode.fromMnemonic(secword)的公私钥一样。而 ethers.HDNode.fromMnemonic(secword).derivePath("m/44'/60'/0'/0/0")的公私钥===ethers.Wallet.fromMnemonic(secword [,"m/44'/60'/0'/0/0"])
 | 
					//        let hdmaster=new BitcoreMnemonic(secword).toHDPrivateKey(option.pass) // 和 ethers.HDNode.fromMnemonic(secword)的公私钥一样。而 ethers.HDNode.fromMnemonic(secword).derivePath("m/44'/60'/0'/0/0")的公私钥===ethers.Wallet.fromMnemonic(secword [,"m/44'/60'/0'/0/0"])
 | 
				
			||||||
        let key=hdmaster
 | 
					        let key=hdmaster
 | 
				
			||||||
        if (option.path==='master'){
 | 
					        if (option.path==='master'){
 | 
				
			||||||
@ -422,16 +422,28 @@ module.exports = {
 | 
				
			|||||||
    return null
 | 
					    return null
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  ,
 | 
					  ,
 | 
				
			||||||
  randomSecword(lang='english'){ // Object.keys(BitcoreMnemonic.Words) => [ 'CHINESE', 'ENGLISH', 'FRENCH', 'ITALIAN', 'JAPANESE', 'KOREAN', 'SPANISH' ]
 | 
					  randomSecword(lang='english'){ // accepts case-insensitive lang, such as 'chinese, cn, tw, en'
 | 
				
			||||||
    //// for BitcoreMnemonic
 | 
					    //// for BitcoreMnemonic
 | 
				
			||||||
    // let language = { zhCN: 'CHINESE', enUS: 'ENGLISH', frFR: 'FRENCH', itIT: 'ITALIAN', jaJP: 'JAPANESE', koKR: 'KOREAN', esES: 'SPANISH' }[lang]
 | 
					    // lang=lang.toUpperCase()
 | 
				
			||||||
 | 
					    // let language = { ZHCN: 'CHINESE', ENUS: 'ENGLISH', FRFR: 'FRENCH', ITIT: 'ITALIAN', JAJP: 'JAPANESE', KOKR: 'KOREAN', ESES: 'SPANISH' }[lang]
 | 
				
			||||||
    //   || (BitcoreMnemonic.Words.hasOwnProperty(lang.toUpperCase()) ? lang.toUpperCase() : 'ENGLISH')
 | 
					    //   || (BitcoreMnemonic.Words.hasOwnProperty(lang.toUpperCase()) ? lang.toUpperCase() : 'ENGLISH')
 | 
				
			||||||
    // return new BitcoreMnemonic(BitcoreMnemonic.Words[language]).phrase
 | 
					    // return new BitcoreMnemonic(BitcoreMnemonic.Words[language]).phrase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // for bip39
 | 
					    // for bip39
 | 
				
			||||||
    const langMap = { zhCN: 'chinese_simplified', zhTW: 'chinese_traditional', enUS: 'english', frFR: 'french', itIT: 'italian', jaJP: 'japanese', koKR: 'korean', esES: 'spanish' }
 | 
					    const langMap = { zhcn: 'chinese_simplified', zhtw: 'chinese_traditional', enus: 'english', frfr: 'french', itit: 'italian', jajp: 'japanese', kokr: 'korean', eses: 'spanish' }
 | 
				
			||||||
    let language = langMap[lang] 
 | 
					    langMap.chinese=langMap.cn=langMap.zhcn
 | 
				
			||||||
      || (typeof(lang)==='string' && Object.values(langMap).indexOf(lang.toLowerCase()>=0) ? lang.toLowerCase() : 'english')
 | 
					    langMap.taiwanese=langMap.tw=langMap.zhtw
 | 
				
			||||||
 | 
					    langMap.en=langMap.enus
 | 
				
			||||||
 | 
					    langMap.fr=langMap.frfr
 | 
				
			||||||
 | 
					    langMap.it=langMap.itit
 | 
				
			||||||
 | 
					    langMap.ko=langMap.kr=langMap.kokr
 | 
				
			||||||
 | 
					    langMap.ja=langMap.jp=langMap.jajp
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    let language = 'english'
 | 
				
			||||||
 | 
					    if (typeof(lang)==='string'){
 | 
				
			||||||
 | 
					      lang = lang.toLowerCase()
 | 
				
			||||||
 | 
					      language = langMap[lang] || (bip39.wordlists[lang] ? lang : 'english')
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    bip39.setDefaultWordlist(language)
 | 
					    bip39.setDefaultWordlist(language)
 | 
				
			||||||
    return bip39.generateMnemonic()
 | 
					    return bip39.generateMnemonic()
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user