package Ġorg . cloudfoundry . cred hub . credentials Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . google . protobuf . ByteString Ċ import Ġio . grpc . Status Ċ import Ġio . grpc . Status RuntimeException Ċ import Ġorg . cloudfoundry . cred hub . Error Messages Ċ import Ġorg . cloudfoundry . cred hub . auth . User Context Holder Ċ import Ġorg . cloudfoundry . cred hub . constants . Credential Write Mode . CONVER GE Ċ import Ġorg . cloudfoundry . cred hub . constants . Credential Write Mode . NO _ OVER WRITE Ċ import Ġorg . cloudfoundry . cred hub . constants . Credential Write Mode . OVER WRITE Ċ import Ġorg . cloudfoundry . cred hub . credential . Certificate Credential Value Ċ import Ġorg . cloudfoundry . cred hub . credential . Credential Value Ċ import Ġorg . cloudfoundry . cred hub . credential . Json Credential Value Ċ import Ġorg . cloudfoundry . cred hub . credential . R sa Credential Value Ċ import Ġorg . cloudfoundry . cred hub . credential . Ssh Credential Value Ċ import Ġorg . cloudfoundry . cred hub . credential . String Credential Value Ċ import Ġorg . cloudfoundry . cred hub . credential . User Credential Value Ċ import Ġorg . cloudfoundry . cred hub . domain . Certificate Generation Parameters Ċ import Ġorg . cloudfoundry . cred hub . exceptions . Entry NotFoundException Ċ import Ġorg . cloudfoundry . cred hub . generate . Universal Credential Generator Ċ import Ġorg . cloudfoundry . cred hub . remote . Remote Backend Client Ċ import Ġorg . cloudfoundry . cred hub . remote . grpc . Find Response Ċ import Ġorg . cloudfoundry . cred hub . remote . grpc . Find Result Ċ import Ġorg . cloudfoundry . cred hub . remote . grpc . Get N Versions Response Ċ import Ġorg . cloudfoundry . cred hub . remote . grpc . GetResponse Ċ import Ġorg . cloudfoundry . cred hub . remote . grpc . Set Response Ċ import Ġorg . cloudfoundry . cred hub . requests . Base Credential Generate Request Ċ import Ġorg . cloudfoundry . cred hub . requests . Base Credential Set Request Ċ import Ġorg . cloudfoundry . cred hub . requests . Certificate Generation Request Parameters Ċ import Ġorg . cloudfoundry . cred hub . requests . Generation Parameters Ċ import Ġorg . cloudfoundry . cred hub . requests . R sa Generation Parameters Ċ import Ġorg . cloudfoundry . cred hub . requests . Ssh Generation Parameters Ċ import Ġorg . cloudfoundry . cred hub . requests . String Generation Parameters Ċ import Ġorg . cloudfoundry . cred hub . views . Credential View Ċ import Ġorg . cloudfoundry . cred hub . views . Data Response Ċ import Ġorg . cloudfoundry . cred hub . views . Find Credential Result Ċ import Ġorg . springframework . context . annotation . Profile Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . time . Instant Ċ import Ġjava . util . UUID Ċ Ċ @ Service Ċ @ Profile (" remote ") Ċ class ĠRemote Credentials Handler ( ĊĠĠĠ Ġprivate Ġval Ġuser Context Holder : ĠUser Context Holder , ĊĠĠĠ Ġprivate Ġval ĠobjectMapper : ĠObjectMapper , ĊĠĠĠ Ġprivate Ġval Ġclient : ĠRemote Backend Client , ĊĠĠĠ Ġprivate Ġval Ġcredential Generator : ĠUniversal Credential Generator Ċ ) Ġ: ĠCredentials Handler Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget NC redential Versions ( credential Name : ĠString , ĠnumberOf Versions : ĠInt ?): ĠData Response Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( numberOf Versions Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠgetAll Credential Versions ( credential Name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠGet N Versions Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . getN Versions Request ( credential Name , Ġuser Context Holder . user Context ?. actor . toString (), ĠnumberOf Versions ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Credential View >() ĊĠĠĠĠĠĠĠ Ġresponse . versions List . forEach Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential Value Ġ= ĠgetValue From Response ( v . type , Ġv . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCredential View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . parse ( v . version CreatedAt ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( v . id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠData Response ( result . sorted By Descending Ġ{ Ġit . version CreatedAt Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Credential Versions ( credential Name : ĠString ): ĠData Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠGet N Versions Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . getAll Versions Request ( credential Name , Ġuser Context Holder . user Context ?. actor . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Credential View >() ĊĠĠĠĠĠĠĠ Ġresponse . versions List . forEach Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential Value Ġ= ĠgetValue From Response ( v . type , Ġv . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCredential View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . parse ( v . version CreatedAt ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( v . id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠData Response ( result . sorted By Descending Ġ{ Ġit . version CreatedAt Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetCurrent Credential Versions ( credential Name : ĠString ): ĠData Response Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠGet Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . get ByName Request ( credential Name , Ġactor . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcredential Value Ġ= ĠgetValue From Response ( response . type , Ġresponse . data ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠData Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCredential View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . parse ( response . version CreatedAt ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( response . id ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Credential Version By UUID ( credential UUID : ĠString ): ĠCredential View Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠGet Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . getById Request ( credential UUID , Ġactor . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcredential Value Ġ= ĠgetValue From Response ( response . type , Ġresponse . data ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCredential View ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . parse ( response . version CreatedAt ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( response . id ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Containing Name ( name : ĠString , Ġexpires Within Days : ĠString ): ĠList < Find Credential Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠFind Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . find Containing Name Request ( name , Ġactor . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠgetList From Response ( response . results List ). sorted By Descending Ġ{ Ġit . version CreatedAt Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Starting With Path ( path : ĠString , Ġexpires Within Days : ĠString ): ĠList < Find Credential Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠFind Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . find Starting With Path Request ( path , Ġactor . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠgetList From Response ( response . results List ). sorted By Descending Ġ{ Ġit . version CreatedAt Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Credential ( generate Request : ĠBase Credential Generate Request ): ĠCredential View Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Response Ġ= Ġget Credential From Request ( generate Request ) ĊĠĠĠĠĠĠĠ Ġval Ġcredential Value : ĠCredential Value ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġgenerate Request . name ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġgenerate Request . type ĊĠĠĠĠĠĠĠ Ġval Ġversion CreatedAt : ĠInstant ĊĠĠĠĠĠĠĠ Ġval Ġuuid : ĠUUID ĊĊĠĠĠĠĠĠĠ Ġif Ġ( getResponse Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value Ġ= ĠgetValue From Response ( getResponse . type , Ġget Response . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion CreatedAt Ġ= ĠInstant . parse ( getResponse . version CreatedAt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠUUID . fromString ( getResponse . id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġcredential Generator . generate ( generate Request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġcreate ByteString From Data ( type , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Params Ġ= Ġcreate ByteString From Generation Parameters ( type , Ġgenerate Request . generation Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : ĠSet Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . setRequest ( name !! , Ġtype !! , Ġdata , Ġactor . toString (), Ġgen Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value Ġ= ĠgetValue From Response ( response . type , Ġresponse . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion CreatedAt Ġ= ĠInstant . parse ( response . version CreatedAt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠUUID . fromString ( response . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCredential View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion CreatedAt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Credential ( setRequest : ĠBase Credential Set Request < *> ): ĠCredential View Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġset Request . name ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġset Request . type ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġcreate ByteString From Data ( type , Ġset Request . credential Value ) ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠSet Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= Ġclient . setRequest ( name !! , Ġtype !! , Ġdata , Ġactor . toString (), ĠByte String . EMPTY ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcredential Value Ġ= ĠgetValue From Response ( response . type , Ġresponse . data ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCredential View ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . parse ( response . version CreatedAt ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( response . id ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Credential ( credential Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactor Ġ= Ġuser Context Holder . user Context ?. actor ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . delete Request ( credential Name , Ġactor . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġhandle Exception ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetList From Response ( results : ĠList < Find Result >): ĠList < Find Credential Result > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresults . map Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFind Credential Result ( Instant . parse ( result . version CreatedAt ), Ġresult . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetValue From Response ( type : ĠString , Ġdata : ĠByte String ): ĠCredential Value Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" value " Ġ-> ĠString Credential Value ( data . toString Utf 8 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġ-> ĠString Credential Value ( data . toString Utf 8 ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" certificate " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġdata . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCertificate Credential Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" ca "] ?. text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" certificate "] ?. text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" private _ key "] ?. text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" ca _ name "] ?. text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" certificate _ authority "] ?. boolean Value () Ġ?: Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" self _ signed "] ?. boolean Value () Ġ?: Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" generated "] ?. boolean Value () Ġ?: Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" trans itional "] ?. boolean Value () Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" json " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġdata . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson Credential Value ( json Node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" user " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġdata . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Credential Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" username "] ?. text Value () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" password "] ?. text Value () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" salt "] ?. text Value () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rsa " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġdata . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR sa Credential Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" public _ key "] ?. text Value () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" private _ key "] ?. text Value () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġdata . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSsh Credential Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" public _ key "] ?. text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" private _ key "] ?. text Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" public _ key _ fingerprint "] ?. text Value () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġcreate ByteString From Data ( type : ĠString ?, Ġdata : ĠCredential Value ?): ĠByte String Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" value " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Credential Value Ġ= Ġdata Ġas ĠString Credential Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġstring Credential Value . string Credential ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Credential Value Ġ= Ġdata Ġas ĠString Credential Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġstring Credential Value . string Credential ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" certificate " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcertificate Credential Value Ġ= Ġdata Ġas ĠCertificate Credential Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ca " Ġto Ġcertificate Credential Value . ca , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ca _ name " Ġto Ġcertificate Credential Value . ca Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" certificate " Ġto Ġcertificate Credential Value . certificate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private _ key " Ġto Ġcertificate Credential Value . privateKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" trans itional " Ġto Ġcertificate Credential Value . trans itional , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" certificate _ authority " Ġto Ġcertificate Credential Value . certificate Authority , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" self _ signed " Ġto Ġcertificate Credential Value . self Signed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" generated " Ġto Ġcertificate Credential Value . generated ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" json " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Credential Value Ġ= Ġdata Ġas ĠJson Credential Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠJsonNode Ġ= Ġjson Credential Value . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue String Ġ= Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( value String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" user " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Credential Value Ġ= Ġdata Ġas ĠUser Credential Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" username " Ġto Ġuser Credential Value . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġto Ġuser Credential Value . password , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" salt " Ġto Ġuser Credential Value . get Or Generate Salt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rsa " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrsa Credential Value Ġ= Ġdata Ġas ĠR sa Credential Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" public _ key " Ġto Ġrsa Credential Value . publicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private _ key " Ġto Ġrsa Credential Value . privateKey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġssh Credential Value Ġ= Ġdata Ġas ĠSsh Credential Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" public _ key " Ġto Ġssh Credential Value . publicKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private _ key " Ġto Ġssh Credential Value . privateKey , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" public _ key _ fingerprint " Ġto Ġssh Credential Value . publicKey Fingerprint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġcreate ByteString From Generation Parameters ( type : ĠString ?, Ġgeneration Params : ĠGeneration Parameters ?): ĠByte String Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring Generation Parameters Ġ= Ġgeneration Params Ġas ĠString Generation Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" include _ special " Ġto Ġstring Generation Parameters . include Special , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude _ number " Ġto Ġstring Generation Parameters . exclude Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude _ upper " Ġto Ġstring Generation Parameters . exclude Upper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude _ lower " Ġto Ġstring Generation Parameters . exclude Lower , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" username " Ġto Ġstring Generation Parameters . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" length " Ġto Ġstring Generation Parameters . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġssh Generation Parameters Ġ= Ġgeneration Params Ġas ĠSsh Generation Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key _ length " Ġto Ġssh Generation Parameters . key Length , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh _ comment " Ġto Ġssh Generation Parameters . ssh Comment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rsa " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrsa Generation Parameters Ġ= Ġgeneration Params Ġas ĠR sa Generation Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key _ length " Ġto Ġrsa Generation Parameters . key Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" user " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Generation Parameters Ġ= Ġgeneration Params Ġas ĠString Generation Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" include _ special " Ġto Ġuser Generation Parameters . include Special , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude _ number " Ġto Ġuser Generation Parameters . exclude Number , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude _ upper " Ġto Ġuser Generation Parameters . exclude Upper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" exclude _ lower " Ġto Ġuser Generation Parameters . exclude Lower , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" username " Ġto Ġuser Generation Parameters . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" length " Ġto Ġuser Generation Parameters . length ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" certificate " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcert Generation Params Ġ= Ġgeneration Params Ġas ĠCertificate Generation Parameters ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Ġ= Ġcert Generation Params . x 5 0 0 Principal ?. getName (" RFC 1 7 7 9 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx 5 0 0 Names : ĠMutable Map < String , ĠString > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnames Array Ġ= Ġnames ?. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnames Array ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkv Ġ= Ġit . split (' =') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx 5 0 0 Names [ kv [ 0 ]] Ġ= Ġkv [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠobjectMapper . writeValue AsString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is _ ca " Ġto Ġcert Generation Params . is Ca , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" organization _ unit " Ġto Ġx 5 0 0 Names [" OU "], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" organization " Ġto Ġx 5 0 0 Names [" O "], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" state " Ġto Ġx 5 0 0 Names [" ST "], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" country " Ġto Ġx 5 0 0 Names [" C "], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" locality " Ġto Ġx 5 0 0 Names [" L "], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" common _ name " Ġto Ġx 5 0 0 Names [" CN "], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key _ length " Ġto Ġcert Generation Params . key Length , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" duration " Ġto Ġcert Generation Params . duration , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" self _ signed " Ġto Ġcert Generation Params . is Self Signed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ca _ name " Ġto Ġcert Generation Params . ca Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" alternative _ names " Ġto Ġcert Generation Params . alternative Names , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key _ usage " Ġto Ġcert Generation Params . key Usage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extended _ key _ usage " Ġto Ġcert Generation Params . extended Key Usage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). filter Values Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByte String . copyFrom Utf 8 ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Generation Parameters From Response ( type : ĠString , Ġgeneration Params : ĠByte String ): ĠGeneration Parameters Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġgeneration Params . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) Ġ?: Ġreturn ĠString Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeneration Parameters Ġ= ĠString Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" length ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . length Ġ= Ġjson Node [" length "]. intValue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" username ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . username Ġ= Ġjson Node [" username "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" exclude _ lower ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . exclude Lower Ġ= Ġjson Node [" exclude _ lower "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" ex lude _ upper ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . exclude Upper Ġ= Ġjson Node [" ex lude _ upper "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" exclude _ number ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . exclude Number Ġ= Ġjson Node [" exclude _ number "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" include _ special ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . include Special Ġ= Ġjson Node [" include _ special "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" user " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġgeneration Params . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) Ġ?: Ġreturn ĠString Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeneration Parameters Ġ= ĠString Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" length ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . length Ġ= Ġjson Node [" length "]. intValue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" username ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . username Ġ= Ġjson Node [" username "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" exclude _ lower ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . exclude Lower Ġ= Ġjson Node [" exclude _ lower "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" ex lude _ upper ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . exclude Upper Ġ= Ġjson Node [" ex lude _ upper "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" exclude _ number ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . exclude Number Ġ= Ġjson Node [" exclude _ number "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" include _ special ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . include Special Ġ= Ġjson Node [" include _ special "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġgeneration Params . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) Ġ?: Ġreturn ĠSsh Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeneration Parameters Ġ= ĠSsh Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" key _ length ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . key Length Ġ= Ġjson Node [" key _ length "]. intValue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" ssh _ comment ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . ssh Comment Ġ= Ġjson Node [" ssh _ comment "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rsa " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġgeneration Params . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) Ġ?: Ġreturn ĠR sa Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeneration Parameters Ġ= ĠR sa Generation Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" key _ length ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters . key Length Ġ= Ġjson Node [" key _ length "]. intValue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" certificate " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson String Ġ= Ġgeneration Params . toString Utf 8 () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Node Ġ= ĠobjectMapper . read Tree ( json String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠCertificate Generation Parameters ( Certificate Generation Request Parameters ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeneration Request Parameters Ġ= ĠCertificate Generation Request Parameters () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" organization ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . organization Ġ= Ġjson Node [" organization "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" state ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . state Ġ= Ġjson Node [" state "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" country ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . country Ġ= Ġjson Node [" country "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" common _ name ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . common Name Ġ= Ġjson Node [" common _ name "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" organization _ unit ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . organization Unit Ġ= Ġjson Node [" organization _ unit "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" locality ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . locality Ġ= Ġjson Node [" locality "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" is _ ca ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . is Ca Ġ= Ġjson Node [" is _ ca "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" key _ usage ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . key Usage Ġ= ĠarrayOf ( json Node [" key _ usage "]. text Value ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" extended _ key _ usage ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . extended Key Usage Ġ= ĠarrayOf ( json Node [" extended _ key _ usage "]. text Value ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" alternative _ names ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalt Names : ĠMutable List < String > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Node [" alternative _ names "][" names "]. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalt Names . add ( it [" name "][" string "]. toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . alternative Names Ġ= Ġalt Names . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" ca _ name ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . ca Name Ġ= Ġjson Node [" ca _ name "]. text Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" self _ signed ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . is Self Signed Ġ= Ġjson Node [" self _ signed "]. boolean Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" duration ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . duration Ġ= Ġjson Node [" duration "]. intValue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( json Node . has NonNull (" key _ length ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneration Request Parameters . key Length Ġ= Ġjson Node [" key _ length "]. intValue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCertificate Generation Parameters ( generation Request Parameters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Credential From Request ( credential Request : ĠBase Credential Generate Request ): ĠGet Response ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Value : ĠGet Response ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Value Ġ= Ġclient . get ByName Request ( credential Request . name !! , Ġuser Context Holder . user Context ?. actor . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoriginal Generation Parameters Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Generation Parameters From Response ( original Value . type , Ġoriginal Value . generation Parameters ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credential Request . mode Ġ== ĠOVER WRITE Ġ|| Ġcredential Request . is Overwrite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credential Request . mode Ġ== ĠCON VER GE Ġ|| Ġcredential Request . mode Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( original Generation Parameters Ġ!= Ġcredential Request . generation Parameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credential Request . mode Ġ== ĠNO _ OVER WRITE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoriginal Value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠStatus RuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġoriginal Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Exception ( e : ĠStatus RuntimeException ): ĠException Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e . status . code Ġ== ĠStatus . NOT _ FOUND . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEntry NotFoundException ( Error Messages . Credential . INVALID _ ACCESS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠRuntimeException (" Request Ġfailed Ġwith Ġstatus Ġcode : Ġ${ e . status . code }") ĊĠĠĠ Ġ} Ċ } Ċ