/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠApp mat t us ĠLimited Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠB ab ylon ĠPart ners ĠLimited Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠFile Ġmodified Ġby ĠApp mat t us ĠLimited Ċ Ġ* ĠSee : Ġhttps :// github . com / app mat t us / certificate tr ansparency / compare / e 3 d 4 6 9 df 9 be 3 5 bcb f 0 f 5 6 4 d 3 2 ca 7 4 af 4 e 5 ca 4 ae 5 ... main Ċ Ġ*/ Ċ Ċ package Ġcom . app mat t us . certificate tr ansparency . internal . log list . model . v 2 Ċ Ċ import Ġcom . app mat t us . certificate tr ansparency . internal . log list . de serializer . Http Url Deserializer Ċ import Ġcom . app mat t us . certificate tr ansparency . internal . log list . de serializer . State Deserializer Ċ import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġokhttp 3 . Http Url Ċ Ċ /** Ċ Ġ* Ġ@ property Ġdescription ĠDescription Ġof Ġthe ĠCT Ġlog . ĠA Ġhuman - readable Ġdescription Ġthat Ġcan Ġbe Ġused Ġto Ġidentify Ġthis Ġlog . Ċ Ġ* Ġ@ property Ġkey ĠThe Ġpublic Ġkey Ġof Ġthe ĠCT Ġlog . ĠThe Ġlog 's Ġpublic Ġkey Ġas Ġa ĠD ER - encoded ĠASN . 1 ĠSubject PublicKey Info Ġstructure , Ġthen Ġencoded Ġas Ċ Ġ* Ġbase 6 4 Ġ( https :// tools . ietf . org / html / rfc 5 2 8 0 # section - 4 . 1 . 2 . 7 ). Ċ Ġ* Ġ@ property Ġlog Id ĠThe ĠSHA - 2 5 6 Ġhash Ġof Ġthe ĠCT Ġlog 's Ġpublic Ġkey , Ġbase 6 4 - encoded . ĠThis Ġis Ġthe ĠLog ID Ġfound Ġin ĠS CT s Ġissued Ġby Ġthis Ġlog Ċ Ġ* Ġ( https :// tools . ietf . org / html / rfc 6 9 6 2 # section - 3 . 2 ). Ċ Ġ* Ġ@ property Ġmaximum Merge Delay ĠThe ĠMaximum ĠMerge ĠDelay , Ġin Ġseconds . ĠThe ĠCT Ġlog Ġshould Ġnot Ġtake Ġlonger Ġthan Ġthis Ġto Ġincorpor ate Ġa Ġcertificate Ċ Ġ* Ġ( https :// tools . ietf . org / html / rfc 6 9 6 2 # section - 3 ). Ċ Ġ* Ġ@ property Ġurl ĠThe Ġbase ĠURL Ġof Ġthe ĠCT Ġlog 's ĠHTTP ĠAPI . ĠThe ĠAPI Ġendpoints Ġare Ġdefined Ġin Ġhttps :// tools . ietf . org / html / rfc 6 9 6 2 # section - 4 . Ċ Ġ* Ġ@ property Ġdns ĠThe Ġdomain Ġname Ġof Ġthe ĠCT Ġlog 's ĠDNS ĠAPI . ĠThe ĠAPI Ġendpoints Ġare Ġdefined Ġin Ċ Ġ* Ġhttps :// github . com / google / certificate - tr ansparency - rf cs / blob / master / dns / draft - ct - over - dns . md . Ċ Ġ* Ġ@ property Ġtemporal Interval ĠThe Ġlog Ġwill Ġonly Ġaccept Ġcertificates Ġthat Ġexpire Ġ( have Ġa ĠNot After Ġdate ) Ġbetween Ġthese Ġdates . Ċ Ġ* Ġ@ property Ġlog Type ĠThe Ġpurpose Ġof Ġthis Ġlog , Ġe . g . Ġtest . Ċ Ġ* Ġ@ property Ġstate ĠThe Ġstate Ġof Ġthe Ġlog Ġfrom Ġthe Ġlog Ġlist Ġdistribut or 's Ġperspective . Ċ Ġ*/ Ċ @ Serializable Ċ internal Ġdata Ġclass ĠLog ( ĊĠĠĠ Ġ@ Serial Name (" description ") Ġval Ġdescription : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Serial Name (" key ") Ġval Ġkey : ĠString , ĊĠĠĠ Ġ@ Serial Name (" log _ id ") Ġval Ġlog Id : ĠString , ĊĠĠĠ Ġ@ Serial Name (" m md ") Ġval Ġmaximum Merge Delay : ĠInt , ĊĠĠĠ Ġ@ Serial Name (" url ") Ġ@ Serializable ( with Ġ= ĠHttp Url Deserializer :: class ) Ġval Ġurl : ĠHttp Url , ĊĠĠĠ Ġ@ Serial Name (" dns ") Ġval Ġdns : ĠHost name ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Serial Name (" temporal _ interval ") Ġval Ġtemporal Interval : ĠTemp oral Interval ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Serial Name (" log _ type ") Ġval Ġlog Type : ĠLog Type ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Serial Name (" state ") Ġ@ Serializable ( with Ġ= ĠState Deserializer :: class ) Ġval Ġstate : ĠState ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( description Ġ== Ġnull Ġ|| Ġdescription . isNotEmpty ()) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠĠĠĠĠ Ġrequire ( log Id . length Ġ== Ġ 4 4 ) ĊĠĠĠĠĠĠĠ Ġrequire ( maximum Merge Delay Ġ>= Ġ 1 ) ĊĠĠĠ Ġ} Ċ } Ċ