package Ġcom . sal ted ge . provider . demo . tools Ċ Ċ import Ġcom . sal ted ge . provider . demo . callback .* Ċ import Ġcom . sal ted ge . provider . demo . model . Sca Action Entity Ċ import Ġcom . sal ted ge . provider . demo . model . Sca Connection Entity Ċ import Ġcom . sal ted ge . provider . demo . model . Sca Consent Entity Ċ import Ġcom . sal ted ge . provider . demo . tools . security . Crypto Tools Ċ import Ġcom . sal ted ge . provider . demo . tools . security . Key Tools Ċ import Ġjava . security . Secure Random Ċ import Ġjava . time . Instant Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġreturn ĠAuthorization Data Ġas Ġjson Ġstring Ċ Ġ*/ Ċ fun Ġcreate Authorization Data ( action : ĠSca Action Entity ): ĠString Ġ{ ĊĠĠĠ Ġval Ġdescription Ġ= Ġwhen Ġ( action . description Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" html " Ġ-> ĠDescription Data ( html Ġ= Ġ"< body >< p >< b > TP P </ b > Ġis Ġrequesting Ġyour Ġauthorization Ġto Ġaccess Ġaccount Ġinformation Ġdata Ġfrom Ġ< b > Demo ĠBank </ b ></ p ></ body >") ĊĠĠĠĠĠĠĠ Ġ" json " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDescription Data ( payment Ġ= ĠDescription Payment Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpay ee Ġ= Ġ" TP P ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġ" 1 0 0 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ġ= Ġ" MD 2 4 ĠAG 0 0 Ġ 0 2 2 5 Ġ 1 0 0 0 Ġ 1 3 1 0 Ġ 4 1 6 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment _ date Ġ= Ġaction . createdAt Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreference Ġ= Ġ" X 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfee Ġ= Ġ" No Ġfee ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexchange _ rate Ġ= Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠDescription Data ( text Ġ= Ġ" TP P Ġis Ġrequesting Ġyour Ġauthorization Ġto Ġaccess Ġaccount Ġinformation Ġdata Ġfrom ĠDemo ĠBank ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġdescription . extra Ġ= ĠExtra Data ( action _ date Ġ= Ġ" Today ", Ġdevice Ġ= Ġ" Google ĠChrome ", Ġlocation Ġ= Ġ" M un ich , ĠGermany ", Ġip Ġ= Ġ" 1 2 7 . 0 . 0 . 0 ") ĊĠĠĠ Ġval Ġauthorization Data Ġ= ĠAuthorization Data ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Access Ġaccount Ġinformation ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠ Ġauthorization _ code Ġ= Ġaction . code , ĊĠĠĠĠĠĠĠ Ġcreated _ at Ġ= Ġaction . createdAt Value . toString (), ĊĠĠĠĠĠĠĠ Ġexpires _ at Ġ= Ġaction . expires At . toString () ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġauthorization Data . toJson () Ġ?: Ġ"" Ċ } Ċ Ċ /** Ċ Ġ* Ġreturn ĠCon sent Data Ġas Ġjson Ġstring Ċ Ġ*/ Ċ fun Ġcreate Consent Data ( model : ĠSca Consent Entity ): ĠString Ġ{ ĊĠĠĠ Ġval Ġdata Ġ= ĠCon sent Data ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġmodel . id . toString (), ĊĠĠĠĠĠĠĠ Ġconsent _ type Ġ= Ġmodel . consent Type , ĊĠĠĠĠĠĠĠ Ġt pp _ name Ġ= Ġmodel . tp p Name , ĊĠĠĠĠĠĠĠ Ġaccounts Ġ= Ġmodel . get Consent Accounts (), ĊĠĠĠĠĠĠĠ Ġshared _ data Ġ= ĠCon sent Shared Data ( balance Ġ= Ġmodel . balance , Ġtransactions Ġ= Ġmodel . transactions ), ĊĠĠĠĠĠĠĠ Ġcreated _ at Ġ= Ġ( model . createdAt Ġ?: ĠInstant . of Epoch Second ( 0 )). toString (), ĊĠĠĠĠĠĠĠ Ġexpires _ at Ġ= Ġmodel . expires At . toString () ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġdata . toJson () Ġ?: Ġ"" Ċ } Ċ Ċ /** Ċ Ġ* ĠAES - 2 5 6 - CBC Ċ Ġ*/ Ċ fun Ġcreate Encrypted Action ( data : ĠString , Ġconnection : ĠSca Connection Entity ): ĠAction Authorization Ġ{ ĊĠĠĠ Ġval ĠpublicKey Ġ= ĠKey Tools . convert Pem To PublicKey ( connection . rsa PublicKey , ĠKey Tools . Algorithm . RSA ) ĊĊĠĠĠ Ġval Ġkey Ġ= ĠByteArray ( 3 2 ) ĊĠĠĠ ĠSecure Random (). next Bytes ( key ) ĊĠĠĠ Ġval Ġiv Ġ= ĠByteArray ( 1 6 ) ĊĠĠĠ ĠSecure Random (). next Bytes ( iv ) ĊĊĠĠĠ Ġreturn ĠAction Authorization ( ĊĠĠĠĠĠĠĠ Ġconnection _ id Ġ= Ġconnection . connection Id , ĊĠĠĠĠĠĠĠ Ġkey Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( Crypto Tools . encrypt R sa ( key , ĠpublicKey )), ĊĠĠĠĠĠĠĠ Ġiv Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( Crypto Tools . encrypt R sa ( iv , ĠpublicKey )), ĊĠĠĠĠĠĠĠ Ġdata Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( Crypto Tools . encrypt Aes ( data , Ġkey , Ġiv )) ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAES - 2 5 6 - CBC Ċ Ġ*/ Ċ fun Ġcreate Encrypted Encrypted Consent ( data : ĠString , Ġexpires At : ĠInstant , Ġconnection : ĠSca Connection Entity ): ĠEn crypted Consent Ġ{ ĊĠĠĠ Ġval ĠpublicKey Ġ= ĠKey Tools . convert Pem To PublicKey ( connection . rsa PublicKey , ĠKey Tools . Algorithm . RSA ) ĊĊĠĠĠ Ġval Ġkey Ġ= ĠByteArray ( 3 2 ) ĊĠĠĠ ĠSecure Random (). next Bytes ( key ) ĊĠĠĠ Ġval Ġiv Ġ= ĠByteArray ( 1 6 ) ĊĠĠĠ ĠSecure Random (). next Bytes ( iv ) ĊĊĠĠĠ Ġreturn ĠEn crypted Consent ( ĊĠĠĠĠĠĠĠ Ġconnection _ id Ġ= Ġconnection . connection Id , ĊĠĠĠĠĠĠĠ Ġexpires _ at Ġ= Ġexpires At . toString (), ĊĠĠĠĠĠĠĠ Ġkey Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( Crypto Tools . encrypt R sa ( key , ĠpublicKey )), ĊĠĠĠĠĠĠĠ Ġiv Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( Crypto Tools . encrypt R sa ( iv , ĠpublicKey )), ĊĠĠĠĠĠĠĠ Ġdata Ġ= ĠBase 6 4 . get Encoder (). encode ToString ( Crypto Tools . encrypt Aes ( data , Ġkey , Ġiv )) ĊĠĠĠ Ġ) Ċ }