package Ġcom . ren re nb it . rr wallet . service . wallet . ether Ċ Ċ import Ġcom . blank j . util code . util . Log Utils Ċ import Ġcom . ren re nb it . rr wallet . service . wallet .* Ċ import Ġorg . bitcoin j . crypto . HD Utils . parse Path Ċ import Ġorg . bitcoin j . wallet . Determin istic Key Chain Ċ import Ġorg . bitcoin j . wallet . Determin istic Seed Ċ import Ġorg . web 3 j . crypto . EC KeyPair Ċ import Ġorg . web 3 j . crypto . Keys Ċ import Ġorg . web 3 j . utils . Numeric Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj ack Q Ġon Ġ 2 0 1 8 / 6 / 4 . Ċ Ġ*/ Ċ class ĠE th Wallet Creator Ġ: ĠI Wallet Creator Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Wallet ( privateKey : ĠString ?): ĠWallet Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWallet . Builder . create ( Coin Type . eth ). privateKey ( privateKey ). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget PublicKey ( privateKey : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNumeric . to HexString No Prefix ( EC KeyPair . create ( Numeric . to BigInt ( privateKey )). publicKey ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Address ( privateKey : ĠString ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġec KeyPair Ġ= ĠEC KeyPair . create ( Numeric . to BigInt ( privateKey )) ĊĠĠĠĠĠĠĠ Ġreturn ĠNumeric . prepend Hex Prefix ( Keys . getAddress ( ec KeyPair )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsecure Random Ġ= ĠSecure Random Utils . secure Random () ĊĠĠĠ Ġoverride Ġfun Ġcreate New Wallet (): ĠWallet Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwallet Ġ= Ġcreate Wallet From Words ( make Mnemonic ()) ĊĠĠĠĠĠĠĠ ĠLog Utils . d (" create Ġwallet Ġsuccess Ġ: Ġ" Ġ+ Ġwallet ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwallet ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Mnemonic (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitial Entropy Ġ= ĠByteArray ( 1 6 ) ĊĠĠĠĠĠĠĠ Ġsecure Random . next Bytes ( initial Entropy ) ĊĠĠĠĠĠĠĠ Ġreturn ĠAndroid Mnemonic Utils . generate Mnemonic ( initial Entropy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Wallet From Words ( words : ĠString ): ĠWallet Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWallet . Builder . create ( Coin Type . eth ). mn emonic ( words ). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget PrivateKey ( words : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwords List Ġ= ĠArrays . asList (* words . split ("\\ s +". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġdeterministic Seed Ġ= ĠDetermin istic Seed ( words List , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġdeterministic Key Chain Ġ= ĠDetermin istic Key Chain . builder (). seed ( determin istic Seed ). build () ĊĠĠĠĠĠĠĠ Ġval ĠprivateKey Ġ= Ġdeterministic Key Chain . getKey By Path ( parse Path ( convert 2 bit Coin j Path ( Coin Type . eth . path )), Ġtrue ). priv Key ĊĠĠĠĠĠĠĠ Ġreturn ĠNumeric . to HexString With Prefix ( privateKey ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert 2 bit Coin j Path ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpath . toUpperCase (). replace (" '", Ġ" H ") ĊĠĠĠ Ġ} Ċ } Ċ