package Ġorg . bouncycastle . k crypto . cert Ċ Ċ import Ġorg . bouncycastle . asn 1 . ASN 1 En codable Ċ import Ġorg . bouncycastle . asn 1 . ASN 1 Object Identifier Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 0 . X 5 0 0 Name Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . Algorithm Identifier Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . Extension Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . Extensions Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . Time Ċ import Ġorg . bouncycastle . cert . X 5 0 9 v 2 CRL Builder Ċ import Ġorg . bouncycastle . k crypto . Signature Calculator Ċ import Ġorg . bouncycastle . k crypto . Signing Key Ċ import Ġorg . bouncycastle . k crypto . internal . K Content Signer Ċ import Ġorg . bouncycastle . k crypto . spec . Sig Alg Spec Ċ import Ġjava . math . BigInteger Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġclass Ġto Ġproduce Ġan ĠX . 5 0 9 ĠVersion Ġ 2 ĠCRL . Ċ Ġ*/ Ċ open Ġclass ĠV 2 CRL Builder Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġc rl Builder : ĠX 5 0 9 v 2 CRL Builder ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBasic Ġconstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġissuer Ġthe Ġissuer Ġthis ĠCRL Ġis Ġassociated Ġwith . ĊĠĠĠĠ Ġ* Ġ@ param Ġthis Update Ġ Ġthe Ġdate Ġof Ġthis Ġupdate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissuer : ĠX 5 0 0 Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Update : ĠDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder Ġ= ĠX 5 0 9 v 2 CRL Builder ( issuer , Ġthis Update ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBasic Ġconstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġissuer Ġthe Ġissuer Ġthis ĠCRL Ġis Ġassociated Ġwith . ĊĠĠĠĠ Ġ* Ġ@ param Ġthis Update Ġ Ġthe ĠTime Ġof Ġthis Ġupdate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissuer : ĠX 5 0 0 Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Update : ĠTime ) Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder Ġ= ĠX 5 0 9 v 2 CRL Builder ( issuer , Ġthis Update ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBasic Ġconstructor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġissuer Cert Ġthe Ġissuer Ġcertificate Ġthis ĠCRL Ġis Ġassociated Ġwith . ĊĠĠĠĠ Ġ* Ġ@ param Ġthis Update Ġ Ġthe ĠTime Ġof Ġthis Ġupdate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġissuer Cert : ĠCertificate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Update : ĠTime ) Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder Ġ= ĠX 5 0 9 v 2 CRL Builder ( issuer Cert . subject , Ġthis Update ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġa Ġbuilder Ġfor Ġa Ġversion Ġ 2 ĠCRL , Ġinitial ised Ġwith Ġanother ĠCRL . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtemplate CRL Ġtemplate ĠCRL Ġto Ġbase Ġthe Ġnew Ġone Ġon . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( template CRL : ĠCRL ) Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder Ġ= ĠX 5 0 9 v 2 CRL Builder ( template CRL ._ c rl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġif Ġthe Ġextension Ġindicated Ġby ĠO ID Ġis Ġpresent . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġfor Ġthe Ġextension Ġof Ġinterest . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe ĠExtension , Ġor Ġnull Ġif Ġit Ġis Ġnot Ġpresent . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas Extension ( oid : ĠASN 1 Object Identifier ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġc rl Builder . has Extension ( oid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġcurrent Ġvalue Ġof Ġthe Ġextension Ġfor ĠO ID . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġfor Ġthe Ġextension Ġwe Ġwant Ġto Ġfetch . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġa Ġmatching Ġextension Ġis Ġpresent , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Extension ( oid : ĠASN 1 Object Identifier ): ĠExtension ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġc rl Builder . getExtension ( oid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġdate Ġby Ġwhich Ġthe Ġnext ĠCRL Ġwill Ġbecome Ġavailable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġ Ġdate Ġof Ġnext ĠCRL Ġupdate . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Next Update ( date : ĠDate ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . set Next Update ( date ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġdate Ġby Ġwhich Ġthe Ġnext ĠCRL Ġwill Ġbecome Ġavailable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdate Ġ Ġdate Ġof Ġnext ĠCRL Ġupdate . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Next Update ( date : ĠTime ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . set Next Update ( date ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa ĠCRL Ġentry Ġwith Ġthe Ġjust Ġreason Code Ġextension . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Certificate Serial Ġserial Ġnumber Ġof Ġrev oked Ġcertificate . ĊĠĠĠĠ Ġ* Ġ@ param Ġrev ocation Date Ġdate Ġof Ġcertificate Ġrev ocation . ĊĠĠĠĠ Ġ* Ġ@ param Ġreason Ġthe Ġreason Ġcode , Ġas Ġindicated Ġin ĠCRL Reason , Ġi . e ĠCRL Reason . key Comp romise , Ġor Ġ 0 Ġif Ġnot Ġto Ġbe Ġused . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd CRL Entry ( user Certificate Serial : ĠBigInteger , Ġrev ocation Date : ĠDate , Ġreason : ĠRev ocation Reason ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . add CRL Entry ( user Certificate Serial , Ġrev ocation Date , Ġreason . value ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa ĠCRL Ġentry Ġwith Ġan Ġinvalid ity Date Ġextension Ġas Ġwell Ġas Ġa Ġreason Code Ġextension . ĠThis Ġis Ġused ĊĠĠĠĠ Ġ* Ġwhere Ġthe Ġdate Ġof Ġrev ocation Ġmight Ġbe Ġafter Ġissues Ġwith Ġthe Ġcertificate Ġmay Ġhave Ġoccurred . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Certificate Serial Ġserial Ġnumber Ġof Ġrev oked Ġcertificate . ĊĠĠĠĠ Ġ* Ġ@ param Ġrev ocation Date Ġdate Ġof Ġcertificate Ġrev ocation . ĊĠĠĠĠ Ġ* Ġ@ param Ġreason Ġthe Ġreason Ġcode , Ġas Ġindicated Ġin ĠCRL Reason , Ġi . e ĠCRL Reason . key Comp romise , Ġor Ġ 0 Ġif Ġnot Ġto Ġbe Ġused . ĊĠĠĠĠ Ġ* Ġ@ param Ġinvalid ity Date Ġthe Ġdate Ġon Ġwhich Ġthe Ġprivate Ġkey Ġfor Ġthe Ġcertificate Ġbecame Ġcomp romise d Ġor Ġthe Ġcertificate Ġotherwise Ġbecame Ġinvalid . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd CRL Entry ( user Certificate Serial : ĠBigInteger , Ġrev ocation Date : ĠDate , Ġreason : ĠRev ocation Reason , Ġinvalid ity Date : ĠDate ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . add CRL Entry ( user Certificate Serial , Ġrev ocation Date , Ġreason . value , Ġinvalid ity Date ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa ĠCRL Ġentry Ġwith Ġextensions . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Certificate Serial Ġserial Ġnumber Ġof Ġrev oked Ġcertificate . ĊĠĠĠĠ Ġ* Ġ@ param Ġrev ocation Date Ġdate Ġof Ġcertificate Ġrev ocation . ĊĠĠĠĠ Ġ* Ġ@ param Ġextensions Ġextension Ġset Ġto Ġbe Ġassociated Ġwith Ġthis ĠCRL Entry . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd CRL Entry ( user Certificate Serial : ĠBigInteger , Ġrev ocation Date : ĠDate , Ġextensions : ĠExtensions ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . add CRL Entry ( user Certificate Serial , Ġrev ocation Date , Ġextensions ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġthe ĠCRL Entry Ġobjects Ġcontained Ġin Ġa Ġprevious ĠCRL . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġthe ĠX 5 0 9 CRL Holder Ġto Ġsource Ġthe Ġother Ġentries Ġfrom . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd CRL ( other : ĠCRL ): ĠV 2 CRL Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġc rl Builder . add CRL ( other ._ c rl ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġgiven Ġextension Ġfield Ġfor Ġthe Ġstandard Ġextensions Ġtag Ġ( tag Ġ 3 ) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġdefining Ġthe Ġextension Ġtype . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Critical Ġtrue Ġif Ġthe Ġextension Ġis Ġcritical , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe ĠASN . 1 Ġstructure Ġthat Ġforms Ġthe Ġextension 's Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoid : ĠASN 1 Object Identifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Critical : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠASN 1 En codable ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . add Extension ( oid , Ġis Critical , Ġvalue ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġgiven Ġextension Ġfield Ġfor Ġthe Ġstandard Ġextensions Ġtag Ġ( tag Ġ 3 ) Ġusing Ġa Ġbyte Ġencoding Ġof Ġthe ĊĠĠĠĠ Ġ* Ġextension Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġdefining Ġthe Ġextension Ġtype . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Critical Ġtrue Ġif Ġthe Ġextension Ġis Ġcritical , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġencoded Value Ġa Ġbyte Ġarray Ġrepresenting Ġthe Ġencoding Ġof Ġthe Ġextension Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoid : ĠASN 1 Object Identifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Critical : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoded Value : ĠByteArray ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . add Extension ( oid , Ġis Critical , Ġencoded Value ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġgiven Ġextension Ġfield Ġfor Ġthe Ġstandard Ġextensions Ġtag Ġ( tag Ġ 3 ). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġextension Ġthe Ġfull Ġextension Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension : ĠExtension ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . add Extension ( extension ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReplace Ġthe Ġextension Ġfield Ġfor Ġthe Ġpassed Ġin Ġextension 's Ġextension ĠID ĊĠĠĠĠ Ġ* Ġwith Ġa Ġnew Ġversion . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġdefining Ġthe Ġextension Ġtype . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Critical Ġtrue Ġif Ġthe Ġextension Ġis Ġcritical , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue Ġthe ĠASN . 1 Ġstructure Ġthat Ġforms Ġthe Ġextension 's Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreplace Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoid : ĠASN 1 Object Identifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Critical : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠASN 1 En codable ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . replace Extension ( oid , Ġis Critical , Ġvalue ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReplace Ġthe Ġextension Ġfield Ġfor Ġthe Ġpassed Ġin Ġextension 's Ġextension ĠID ĊĠĠĠĠ Ġ* Ġwith Ġa Ġnew Ġversion . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġextension Ġthe Ġfull Ġextension Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreplace Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension : ĠExtension ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . replace Extension ( extension ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReplace Ġa Ġgiven Ġextension Ġfield Ġfor Ġthe Ġstandard Ġextensions Ġtag Ġ( tag Ġ 3 ) Ġwith Ġthe Ġpassed Ġin ĊĠĠĠĠ Ġ* Ġbyte Ġencoded Ġextension Ġvalue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġdefining Ġthe Ġextension Ġtype . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Critical Ġtrue Ġif Ġthe Ġextension Ġis Ġcritical , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ* Ġ@ param Ġencoded Value Ġa Ġbyte Ġarray Ġrepresenting Ġthe Ġencoding Ġof Ġthe Ġextension Ġvalue . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreplace Extension ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoid : ĠASN 1 Object Identifier , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Critical : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoded Value : ĠByteArray ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . replace Extension ( oid , Ġis Critical , Ġencoded Value ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemove Ġthe Ġextension Ġindicated Ġby ĠO ID . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoid Ġthe ĠO ID Ġof Ġthe Ġextension Ġto Ġbe Ġremoved . ĊĠĠĠĠ Ġ* Ġ@ return Ġthis Ġbuilder Ġobject .. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Extension ( oid : ĠASN 1 Object Identifier ): ĠV 2 CRL Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġc rl Builder . remove Extension ( oid ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġan ĠX . 5 0 9 ĠCRL , Ġbased Ġon Ġthe Ġcurrent Ġissuer Ġand Ġsubject ĊĠĠĠĠ Ġ* Ġusing Ġthe Ġpassed Ġin Ġsignature Calculator . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsignature Calculator Ġthe Ġsignature Ġcalculator Ġto Ġuse Ġto Ġsign Ġthe ĠCRL . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġholder Ġcontaining Ġthe Ġresulting Ġsigned Ġcertificate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbuild ( signature Calculator : ĠSignature Calculator < Algorithm Identifier >): ĠCRL Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCRL ( c rl Builder . build ( K Content Signer ( signature Calculator ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGenerate Ġan ĠX . 5 0 9 ĠCRL , Ġbased Ġon Ġthe Ġcurrent Ġissuer Ġand Ġsubject ĊĠĠĠĠ Ġ* Ġusing Ġthe Ġpassed Ġin Ġkey Ġand Ġalgorithm Ġspecification . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġsigning Key Ġthe Ġkey Ġto Ġuse Ġto Ġsign Ġthe ĠCRL . ĊĠĠĠĠ Ġ* Ġ@ param Ġsig Alg Spec Ġthe Ġspecification Ġfor Ġthe Ġsignature Ġalgorithm . ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġholder Ġcontaining Ġthe Ġresulting Ġsigned Ġcertificate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbuild ( signing Key : ĠSign ing Key , Ġsig Alg Spec : ĠSig Alg Spec ): ĠCRL Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCRL ( c rl Builder . build ( K Content Signer ( signing Key . signature Calculator ( sig Alg Spec )))) ĊĠĠĠ Ġ} Ċ } Ċ