package Ġe hn . tech iop . h cert . kotlin . chain . impl Ċ Ċ import Ġe hn . tech iop . h cert . kotlin . chain . Certificate Repository Ċ import Ġe hn . tech iop . h cert . kotlin . chain . Error Ċ import Ġe hn . tech iop . h cert . kotlin . chain . Verification Result Ċ import Ġe hn . tech iop . h cert . kotlin . chain . from Base 6 4 Ċ import Ġe hn . tech iop . h cert . kotlin . crypto . Certificate Ċ import Ġe hn . tech iop . h cert . kotlin . crypto . Jvm Certificate Ċ import Ġe hn . tech iop . h cert . kotlin . crypto . kid Ċ import Ġe hn . tech iop . h cert . kotlin . trust . Trusted Certificate Ċ import Ġjava . security . cert . Certificate Factory Ċ import Ġjava . security . cert . X 5 0 9 Certificate Ċ Ċ actual Ġclass ĠPref illed Certificate Repository Ġ: ĠCertificate Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlist Ġ= Ġmutable ListOf < X 5 0 9 Certificate >() ĊĊĠĠĠ Ġconstructor ( var arg Ġcertificates : ĠCertificate <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġcertificates . filter Is Instance ( Jvm Certificate :: class . java ). forEach Ġ{ Ġlist Ġ+= Ġit . certificate Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġconstructor ( input : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠCertificate Factory . getInstance (" X . 5 0 9 ") ĊĠĠĠĠĠĠĠ Ġlist Ġ+= Ġfactory . generate Certificate ( input . inputStream ()) Ġas ĠX 5 0 9 Certificate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( var arg Ġcertificates : ĠX 5 0 9 Certificate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcertificates . forEach Ġ{ Ġlist Ġ+= Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconstructor ( var arg Ġpem Encoded Certificates : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠCertificate Factory . getInstance (" X . 5 0 9 ") ĊĠĠĠĠĠĠĠ Ġpem Encoded Certificates . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= Ġfactory . generate Certificate ( it . byte InputStream ()) Ġas ĠX 5 0 9 Certificate ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġactual Ġconstructor ( base 6 4 Encoded : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠCertificate Factory . getInstance (" X . 5 0 9 ") ĊĠĠĠĠĠĠĠ Ġlist Ġ+= Ġfactory . generate Certificate ( base 6 4 Encoded . from Base 6 4 (). inputStream ()) Ġas ĠX 5 0 9 Certificate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Trusted Certificates ( ĊĠĠĠĠĠĠĠ Ġkid : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġverification Result : ĠVerification Result ĊĠĠĠ Ġ): ĠList < Trusted Certificate > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcert List Ġ= Ġlist . filter Ġ{ Ġit . kid Ġcontent Equals Ġkid Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( cert List . isEmpty ()) Ġthrow ĠIllegalArgumentException (" kid "). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverification Result . error Ġ= ĠError . KEY _ NOT _ IN _ TR UST _ LIST ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcert List . map Ġ{ ĠJ vm Certificate ( it ). to Trusted Certificate () Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊ