package Ġid . walt . services . vc Ċ Ċ import Ġcom . nim bus ds . jwt . Signed JWT Ċ import Ġid . walt . vc lib . model . Ver ifiable Credential Ċ import Ġid . walt . vc lib . vc list .* Ċ import Ġmu . Kotlin Logging Ċ Ċ private Ġval Ġlog Ġ= ĠKotlin Logging . logger (" SS IK IT ĠV c Utils ") Ċ Ċ object ĠV c Utils Ġ{ ĊĊĠĠĠ Ġfun Ġget Issuer ( vc Obj : ĠVer ifiable Credential ): ĠString Ġ= Ġwhen Ġ( vc Obj ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc Obj . issuer !! ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc Obj . issuer !! ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc Obj . issuer !! ĊĠĠĠĠĠĠĠ Ġis ĠPer manent Res ident Card Ġ-> Ġvc Obj . issuer !! ĊĠĠĠĠĠĠĠ Ġis ĠUniversity Degree Ġ-> Ġvc Obj . issuer . id ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable At testation Ġ-> Ġvc Obj . issuer ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc Obj . issuer ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Presentation Ġ-> Ġwhen Ġ( vc Obj . jwt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġvc Obj . proof !!. creator !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSigned JWT . parse ( vc Obj . jwt ). jwt Claims Set . issuer ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠG ai ax Credential Ġ-> Ġvc Obj . issuer ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Issuer Ġfor Ġ${ vc Obj . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Subject ( vc Obj : ĠVer ifiable Credential ): ĠString Ġ= Ġwhen Ġ( vc Obj ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc Obj . credential Subject !!. id !! ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc Obj . credential Subject !!. id !! ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc Obj . credential Subject !!. id !! ĊĠĠĠĠĠĠĠ Ġis ĠPer manent Res ident Card Ġ-> Ġvc Obj . credential Subject !!. id !! ĊĠĠĠĠĠĠĠ Ġis ĠUniversity Degree Ġ-> Ġvc Obj . credential Subject . id ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable At testation Ġ-> Ġvc Obj . credential Subject !!. id ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc Obj . credential Subject . id ĊĠĠĠĠĠĠĠ Ġis ĠG ai ax Credential Ġ-> Ġvc Obj . credential Subject . id ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Presentation Ġ-> Ġvc Obj . holder !! ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Holder Ġfor Ġ${ vc Obj . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Iss u ance Date ( vc : ĠVer ifiable Credential ) Ġ= Ġwhen Ġ( vc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc . iss u ance Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc . iss u ance Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc . iss u ance Date ĊĠĠĠĠĠĠĠ Ġis ĠUniversity Degree Ġ-> Ġvc . iss u ance Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable At testation Ġ-> Ġvc . iss u ance Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc . iss u ance Date ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Iss u ance Date Ġfor Ġ${ vc . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Valid From ( vc : ĠVer ifiable Credential ) Ġ= Ġwhen Ġ( vc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc . valid From ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc . valid From ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc . valid From ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable At testation Ġ-> Ġvc . valid From ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc . valid From ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Valid From Ġfor Ġ${ vc . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Expiration Date ( vc : ĠVer ifiable Credential ) Ġ= Ġwhen Ġ( vc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc . expiration Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc . expiration Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc . expiration Date ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc . expiration Date ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Expiration Date Ġfor Ġ${ vc . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Credential Schema ( vc : ĠVer ifiable Credential ) Ġ= Ġwhen Ġ( vc ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc . credential Schema ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc . credential Schema ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc . credential Schema ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable At testation Ġ-> Ġvc . credential Schema ĊĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc . credential Schema ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Credential Schema Ġfor Ġ${ vc . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Challenge ( vc : Ver ifiable Credential ): ĠString ? Ġ= Ġwhen ( vc . jwt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġwhen ( vc ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠE u rop ass Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVer ifiable Id Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVer ifiable Dip lo ma Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPer manent Res ident Card Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUniversity Degree Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVer ifiable At testation Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVer ifiable Authorization Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVer ifiable Presentation Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠG ai ax Credential Ġ-> Ġvc . proof !!. nonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn Ġ{ Ġ" No Ġget Credential Schema Ġfor Ġ${ vc . type . last ()} !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSigned JWT . parse ( vc . jwt ). jwt Claims Set . get Claim (" nonce "). toString () ĊĠĠĠ Ġ} Ċ } Ċ