package Ġcom . d ail ym otion . k int a . integration . travis Ċ Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġjava . security . Key Factory Ċ import Ġjava . security . spec . X 5 0 9 Encoded KeySpec Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . Cipher Ċ Ċ object ĠTravis Integration Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġhttps :// en . wikipedia . org / wiki / Privacy - Enhanced _ Mail ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġwill Ġfail Ġif Ġthe ĠPEM Ġcontains Ġseveral Ġobjects . ĊĠĠĠĠ Ġ* ĠFor Ġour Ġcase , Ġit 's Ġenough Ġsince ĠTravis Ġonly Ġsends Ġus Ġone Ġsingle Ġpublic Ġkey . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdecode Single Object Pem ( pem : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase 6 4 Ġ= Ġpem . trim (). lines (). drop ( 1 ). drop Last ( 1 ). join ToString ("") ĊĊĠĠĠĠĠĠĠ Ġcheck (! base 6 4 . contains (" ----- ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" It Ġlooks Ġlike Ġthe Ġprovided ĠPEM Ġfile Ġcontained Ġseveral Ġobjects . ĠThis Ġis Ġnot Ġsupported Ġat Ġthe Ġmoment ." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠBase 6 4 . get Decoder (). decode ( base 6 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget PublicKey ( repo Owner : ĠString , Ġrepo Name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" https :// api . travis - ci . org / repos /$ repo Owner /$ repo Name / key ". let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Builder (). get (). url ( it ) ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient (). new Call ( it . build ()). execute (). body () !!. string () ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson . non strict . parse Json ( it ). jsonObject . get Primitive (" key "). content ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġencrypt ( repo Owner : ĠString , Ġrepo Name : ĠString , Ġvalue : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠpublicKey Ġ= Ġget PublicKey ( repo Owner , Ġrepo Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcipher Ġ= ĠCipher . getInstance (" RSA ") ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠX 5 0 9 Encoded KeySpec ( decode Single Object Pem ( publicKey )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey Factory . getInstance (" RSA "). generate Public ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcipher . init ( Cipher . ENCRYPT _ MODE , Ġkey ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcipher . do Final ( value . toByteArray ()). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . get Encoder (). encode ToString ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }