package Ġio . open future . chain . crypto . component . seed Ċ Ċ import Ġio . open future . chain . crypto . constants . Seed Constant Ċ import Ġio . open future . chain . crypto . util . Hash Utils Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġjava . text . Normalizer Ċ Ċ @ Component Ċ class ĠSeed Calculator Ġ{ ĊĊĠĠĠ Ġfun Ġcalculate Seed ( seed Phrase : ĠString , Ġpassword Phrase : ĠString Ġ= Ġ"") : ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmnemonic Chars Ġ= ĠNormal izer . normalize ( seed Phrase , ĠNormal izer . Form . N FK D ). toCharArray () ĊĠĠĠĠĠĠĠ Ġval Ġnormalized Pass phrase Ġ= ĠNormal izer . normalize ( password Phrase , ĠNormal izer . Form . N FK D ) ĊĠĠĠĠĠĠĠ Ġval Ġpassphrase Salt Ġ= Ġget Utf 8 Bytes ( normalized Pass phrase ) ĊĠĠĠĠĠĠĠ Ġval Ġsalt Ġ= Ġcombine ( get Utf 8 Bytes ( Seed Constant . SAL T ), Ġpassphrase Salt ) ĊĠĠĠĠĠĠĠ Ġreturn ĠHash Utils . pb k df 2 ( mn emonic Chars , Ġsalt ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcombine ( array 1 : ĠByteArray , Ġarray 2 : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= ĠByteArray ( array 1 . size Ġ+ Ġarray 2 . size ) ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( array 1 , Ġ 0 , Ġbytes , Ġ 0 , Ġarray 1 . size ) ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( array 2 , Ġ 0 , Ġbytes , Ġarray 1 . size , Ġbytes . size Ġ- Ġarray 1 . size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbytes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Utf 8 Bytes ( string : ĠString ): ĠByteArray Ġ= Ġstring . toByteArray () Ċ Ċ }