package Ġcom . github . Open IC P _ BR . kt Lib Ċ Ċ import Ġorg . bouncycastle . asn 1 . ASN 1 Sequence Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 0 . X 5 0 0 Name Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 0 . X 5 0 0 Name Builder Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . X 5 0 9 Name Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . X 5 0 9 Name Entry Converter Ċ import Ġjava . util .* Ċ import Ġorg . bouncycastle . j ce . provider . Bo unc y Castle Provider Ċ import Ġjava . security . Security Ċ import Ġjavax . security . auth . x 5 0 0 . X 5 0 0 Principal Ċ Ċ /** Ċ Ġ* ĠA Ġfunction Ġthat Ġinitializes Ġthis Ġlibrary . ĠThis ĠMUST Ġbe Ġcalled Ġbefore Ġanything Ġelse . Ċ Ġ*/ Ċ fun ĠI CP init () Ġ{ ĊĠĠĠ Ġif Ġ( init ed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ; ĊĠĠĠ Ġ} ĊĠĠĠ ĠSecurity . add Provider ( Bo unc y Castle Provider ()) ĊĠĠĠ Ġinit ed Ġ= Ġtrue Ċ } Ċ Ċ internal Ġvar Ġinit ed Ġ= Ġfalse Ċ Ċ fun ĠByteArray . to Hex () Ġ= Ġthis . join ToString ( separator Ġ= Ġ"") Ġ{ Ġit . toInt (). and ( 0 xff ). toString ( 1 6 ). pad Start ( 2 , Ġ' 0 ') Ġ} Ċ Ċ /** Ċ Ġ* ĠA Ġstring Ġrepresenting Ġthe Ġcurrent Ġversion Ġof Ġthis Ġlibrary . Ċ Ġ*/ Ċ val ĠI CP Version : ĠString ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ Ġproperties . load ( Certificate :: class . java . getResource AsStream (" info . properties ")); ĊĠĠĠĠĠĠĠ Ġreturn Ġproperties . getProperty (" version ") ĊĠĠĠ Ġ} Ċ Ċ internal Ġfun Ġjavax X 5 0 0 Principal 2 BC X 5 0 9 Name ( src : ĠX 5 0 0 Principal ): ĠX 5 0 0 Name Ġ{ ĊĠĠĠ Ġreturn ĠX 5 0 0 Name ( src . getName (" CAN ON ICAL ")) Ċ }