package Ġme . sto jan . km sp gp . cli Ċ Ċ import Ġcom . github . aj alt . cli kt . core . Cli kt Command Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . argument Ċ import Ġme . sto jan . km sp gp . crypto . PG P Ċ import Ġorg . bouncycastle . crypto . io . Digest OutputStream Ċ import Ġsoftware . amazon . aw ssdk . services . kms . model . Describe Key Request Ċ import Ġsoftware . amazon . aw ssdk . services . kms . model . Get PublicKey Request Ċ import Ġjava . time . Instant Ċ Ċ class ĠSign ( val Ġroot : ĠRoot ) Ġ: ĠCli kt Command ( help Ġ= Ġ" Sign Ġa Ġmessage Ġwith Ġthe Ġprovided Ġkey .") Ġ{ ĊĠĠĠ Ġval Ġkey Ġby Ġargument ( help Ġ= Ġ" The Ġkey ĠID Ġ( ARN , ĠID Ġor Ġalias ) Ġof Ġthe Ġkey Ġto Ġsign Ġwith .") ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdes Res Ġ= Ġroot . kms Client . describe Key ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDescribe Key Request . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. key Id ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpub Res Ġ= Ġroot . kms Client . get PublicKey ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGet PublicKey Request . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. key Id ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdigest Ġ= ĠP GP . best Digest ( pub Res ) ĊĊĠĠĠĠĠĠĠ ĠSystem .` in `. transfer To ( Digest OutputStream ( digest )) ĊĊĠĠĠĠĠĠĠ Ġval Ġsignature Ġ= ĠP GP . sign ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnow Ġ= ĠInstant . now (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdigest Ġ= Ġdigest , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Fn Ġ= ĠP GP . signer ( root . kms Client , Ġpub Res Ġ= Ġpub Res , Ġdes Res Ġ= Ġdes Res ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdes Res Ġ= Ġdes Res , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpub Res Ġ= Ġpub Res , ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġecho ( message Ġ= ĠP GP . armor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignature . encode ( this ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }