package Ġru . surf studio . otp _ aut ofill Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context Wrapper Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . util . Base 6 4 Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . security . Message Digest Ċ import Ġjava . security . NoSuch AlgorithmException Ċ Ċ private Ġconst Ġval ĠHASH _ TYPE Ġ= Ġ" SHA - 2 5 6 " Ċ private Ġconst Ġval ĠNUM _ HASH ED _ BYTES Ġ= Ġ 9 Ċ private Ġconst Ġval ĠNUM _ BASE 6 4 _ CHAR Ġ= Ġ 1 1 Ċ Ċ /// ĠFrom ĠGoogle ĠExample ĠApp Ċ // Ġhttps :// github . com / google archive / android - credentials / blob / master / sms - verification / android / app / src / main / java / com / google / samples / smart lock / sms _ verify / App Signature Helper . java Ċ class ĠApp Signature Helper ( context : ĠContext ) Ġ: ĠContext Wrapper ( context ) Ġ{ ĊĊĠĠĠ Ġfun Ġget App Signatures (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= ĠpackageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġpackage Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignatures Ġ= Ġpackage Manager . get Package Info ( packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ SIGNATURE S ). signatures ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignatures . map NotNull Ġ{ Ġhash ( packageName , Ġit . to Chars String ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhash ( packageName : ĠString , Ġsignature : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Info Ġ= Ġ"$ packageName Ġ$ signature " ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Digest Ġ= ĠMessage Digest . getInstance ( HASH _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Digest . update ( app Info . toByteArray ( StandardCharsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Signature Ġ= Ġmessage Digest . digest (). copyOf Range ( 0 , ĠNUM _ HASH ED _ BYTES ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbase 6 4 Hash Ġ= ĠBase 6 4 . encode ToString ( hash Signature , ĠBase 6 4 . NO _ P ADDING Ġor ĠBase 6 4 . NO _ WRAP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase 6 4 Hash Ġ= Ġbase 6 4 Hash . substring ( 0 , ĠNUM _ BASE 6 4 _ CHAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase 6 4 Hash ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch AlgorithmException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }