/* - Ċ Ġ* Ġ#% L Ċ Ġ* ĠCloud Spec ĠAWS ĠProvider Ċ Ġ* Ġ%% Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠE ze qu iel ĠF on cub iert a Ċ Ġ* Ġ%% Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* ĠĊ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* ĠĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ġ# L % Ċ Ġ*/ Ċ package Ġcloud spec . aws . kms Ċ Ċ import Ġcloud spec . annotation . Id Definition Ċ import Ġcloud spec . annotation . Property Definition Ċ import Ġcloud spec . annotation . Resource Definition Ċ import Ġcloud spec . aws . AWS Provider Ċ import Ġcloud spec . model . KeyValue Ċ import Ġcloud spec . model . Resource Def Ref Ċ import Ġsoftware . amazon . aw ssdk . services . kms . model .* Ċ import Ġjava . time . Instant Ċ Ċ @ Resource Definition ( ĊĠĠĠĠĠĠĠ Ġprovider Ġ= ĠAWS Provider . PROVIDER _ NAME , ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠK MS Group . GROUP _ NAME , ĊĠĠĠĠĠĠĠ Ġname Ġ= ĠK MS Key . RESOURCE _ NAME , ĊĠĠĠĠĠĠĠ Ġdescription Ġ= ĠK MS Key . RESOURCE _ DESCRIPTION Ċ ) Ċ data Ġclass ĠK MS Key ( ĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ REGION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ REGION _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġregion : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ ACCOUNT _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ ACCOUNT _ ID _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġaws AccountId : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ@ Id Definition ĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ KEY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ KEY _ ID _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Id : ĠString , ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ ARN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ ARN _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġar n : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ CRE ATION _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ CRE ATION _ DATE _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcreation Date : ĠInstant ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ ENABLED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ ENABLED _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġenabled : ĠBoolean ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ DESCRIPTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ DESCRIPTION _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ KEY _ USAGE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ KEY _ USAGE _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Usage : ĠKey Usage Type ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ KEY _ STATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ KEY _ STATE _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġkey State : ĠKey State ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ DE LE TION _ DATE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ DE LE TION _ DATE _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdeletion Date : ĠInstant ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ VALID _ TO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ VALID _ TO _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġvalid To : ĠInstant ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ ORIGIN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ ORIGIN _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġorigin : ĠOrigin Type ?, ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġassociate Ġwith Ġcustom Ġkey Ġstore ĊĠĠĠĠĠĠĠ Ġval Ġcustom KeyStore Id : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġassociate Ġwith Ġcloud ĠHSM Ġcluster ĊĠĠĠĠĠĠĠ Ġval Ġcloud H sm ClusterId : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ EXPI RATION AL _ MODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ EXPI RATION AL _ MODE _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġexpiration Model : ĠExp iration Model Type ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ KEY _ MANAGER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ KEY _ MANAGER _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġkey Manager : ĠKey Manager Type ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ CUSTOMER _ MASTER _ KEY _ SPEC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ CUSTOMER _ MASTER _ KEY _ SPEC _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcustomer Master KeySpec : ĠCustomer Master KeySpec ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ ENCRYPT ION _ ALG ORITH MS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ ENCRYPT ION _ ALG ORITH MS _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġencryption Algorithms : ĠList < Encryption Algorithm Spec > ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ SIGN ING _ ALG ORITH MS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ SIGN ING _ ALG ORITH MS _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsigning Algorithms : ĠList < Signing Algorithm Spec > ?, ĊĊĠĠĠĠĠĠĠ Ġ@ property : Property Definition ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠPROP _ TAGS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= ĠPROP _ TAGS _ D ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġtags : ĠList < KeyValue >? Ċ ) Ġ: ĠK MS Resource () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRESOURCE _ NAME Ġ= Ġ" key " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠRESOURCE _ DESCRIPTION Ġ= Ġ" Key " ĊĠĠĠĠĠĠĠ Ġval ĠRESOURCE _ DEF Ġ= ĠResource Def Ref ( AWS Provider . PROVIDER _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK MS Group . GROUP _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRESOURCE _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ REGION Ġ= Ġ" region " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ REGION _ D Ġ= Ġ" The ĠAWS Ġregion " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ACCOUNT _ ID Ġ= Ġ" account _ id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ACCOUNT _ ID _ D Ġ= Ġ" The Ġtw el ve - digit Ġaccount ĠID Ġof Ġthe ĠAWS Ġaccount Ġthat Ġowns Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ ID Ġ= Ġ" key _ id " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ ID _ D Ġ= Ġ" The Ġglobally Ġunique Ġidentifier Ġfor Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ARN Ġ= Ġ" arn " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ARN _ D Ġ= Ġ" The ĠAmazon ĠResource ĠName Ġ( ARN ) Ġof Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ CRE ATION _ DATE Ġ= Ġ" creation _ date " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ CRE ATION _ DATE _ D Ġ= Ġ" The Ġdate Ġand Ġtime Ġwhen Ġthe ĠC MK Ġwas Ġcreated " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ENABLED Ġ= Ġ" enabled " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ENABLED _ D Ġ= Ġ" Specifies Ġwhether Ġthe ĠC MK Ġis Ġenabled " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ DESCRIPTION Ġ= Ġ" description " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ DESCRIPTION _ D Ġ= Ġ" The Ġdescription Ġof Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ USAGE Ġ= Ġ" key _ usage " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ USAGE _ D Ġ= Ġ" The Ġcrypto graphic Ġoperations Ġfor Ġwhich Ġyou Ġcan Ġuse Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ STATE Ġ= Ġ" key _ state " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ STATE _ D Ġ= Ġ" The Ġstate Ġof Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ DE LE TION _ DATE Ġ= Ġ" deletion _ date " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ DE LE TION _ DATE _ D Ġ= Ġ" The Ġdate Ġand Ġtime Ġafter Ġwhich ĠAWS ĠK MS Ġdeletes Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ VALID _ TO Ġ= Ġ" valid _ to " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ VALID _ TO _ D Ġ= Ġ" The Ġtime Ġat Ġwhich Ġthe Ġimported Ġkey Ġmaterial Ġexpires " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ORIGIN Ġ= Ġ" origin " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ORIGIN _ D Ġ= Ġ" The Ġsource Ġof Ġthe ĠC MK 's Ġkey Ġmaterial " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ EXPI RATION AL _ MODE Ġ= Ġ" exp ir ational _ mode " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ EXPI RATION AL _ MODE _ D Ġ= Ġ" Specifies Ġwhether Ġthe ĠC MK 's Ġkey Ġmaterial Ġexpires " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ MANAGER Ġ= Ġ" key _ manager " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ KEY _ MANAGER _ D Ġ= Ġ" The Ġmanager Ġof Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ CUSTOMER _ MASTER _ KEY _ SPEC Ġ= Ġ" customer _ master _ key _ spec " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ CUSTOMER _ MASTER _ KEY _ SPEC _ D Ġ= Ġ" Descri bes Ġthe Ġtype Ġof Ġkey Ġmaterial Ġin Ġthe ĠC MK " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ENCRYPT ION _ ALG ORITH MS Ġ= Ġ" encryption _ algorithms " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ ENCRYPT ION _ ALG ORITH MS _ D Ġ= Ġ" A Ġlist Ġof Ġencryption Ġalgorithms Ġthat Ġthe ĠC MK Ġsupports " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ SIGN ING _ ALG ORITH MS Ġ= Ġ" signing _ algorithms " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ SIGN ING _ ALG ORITH MS _ D Ġ= Ġ" A Ġlist Ġof Ġsigning Ġalgorithms Ġthat Ġthe ĠC MK Ġsupports " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ TAGS Ġ= Ġ" tags " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPROP _ TAGS _ D Ġ= Ġ" The Ġtags Ġattached Ġto Ġthe Ġtable " ĊĠĠĠ Ġ} Ċ } Ċ