package Ġorg . v accine impact . api . security Ċ Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . File Ċ import Ġjava . security .* Ċ import Ġjava . security . spec . PKCS 8 Encoded KeySpec Ċ import Ġjava . security . spec . X 5 0 9 Encoded KeySpec Ċ import Ġjava . util .* Ċ Ċ object ĠKey Helper Ċ { ĊĠĠĠ Ġprivate Ġval Ġkey Factory Ġ= ĠKey Factory . getInstance (" RSA ") ĊĠĠĠ Ġprivate Ġval Ġkey Path Ġ= Ġ"/ etc / mont ag u / api / token _ key " ĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= ĠLoggerFactory . getLogger ( Key Helper :: class . java ) ĊĊĠĠĠ Ġval Ġkey Pair Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( File ( key Path , Ġ" private _ key . der "). exists ()) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload KeyPair () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate KeyPair () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload KeyPair (): ĠKey Pair ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Loading Ġtoken Ġsigning Ġkey pair Ġfrom Ġ$ key Path ") ĊĠĠĠĠĠĠĠ Ġreturn ĠKey Pair ( load PublicKey (), Ġload PrivateKey ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload PublicKey (): ĠPublicKey ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Bytes Ġ= ĠFile ( key Path , Ġ" public _ key . der "). read Bytes () ĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= ĠX 5 0 9 Encoded KeySpec ( key Bytes ) ĊĠĠĠĠĠĠĠ Ġreturn Ġkey Factory . generate Public ( spec ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload PrivateKey (): ĠPrivate Key ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( key Path , Ġ" private _ key . der ") ĊĠĠĠĠĠĠĠ Ġval Ġkey Bytes Ġ= Ġfile . read Bytes () ĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= ĠPKCS 8 Encoded KeySpec ( key Bytes ) ĊĠĠĠĠĠĠĠ Ġreturn Ġkey Factory . generate Private ( spec ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate KeyPair (): ĠKey Pair ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Unable Ġto Ġfind Ġa Ġtoken Ġkey pair Ġat Ġ$ key Path . ĠGenerating Ġa Ġnew ") ĊĠĠĠĠĠĠĠ Ġlogger . info (" RSA Ġkey pair Ġfor Ġtoken Ġsigning . ĠIf Ġother Ġapplications Ġneed Ġto ") ĊĠĠĠĠĠĠĠ Ġlogger . info (" verify Ġtokens Ġthey Ġshould Ġuse Ġthe Ġfollowing Ġpublic Ġkey :") ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠKey Pair Generator . getInstance (" RSA "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġkey pair Ġ= Ġgenerator . generate KeyPair () ĊĠĠĠĠĠĠĠ Ġval ĠpublicKey Ġ= ĠBase 6 4 . get Encoder (). encode ( key pair . public . encoded ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" Public Ġkey Ġfor Ġtoken Ġverification : Ġ" Ġ+ ĠpublicKey ) ĊĠĠĠĠĠĠĠ Ġreturn Ġkey pair ĊĠĠĠ Ġ} Ċ }