// Ċ // ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠCouch base , ĠInc ĠAll Ġrights Ġreserved . Ċ // Ċ // Ġ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 Ċ // Ċ // Ġhttps :// info . couch base . com / rs / 3 0 2 - GJ Y - 0 3 4 / images / 2 0 1 7 - 1 0 - 3 0 _ License _ Agreement . pdf Ċ // Ċ // Ġ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 . Ċ // Ċ package Ġcom . couch base . lite . internal . core Ċ Ċ import Ġcom . couch base . lite . Platform Security Test Ċ import Ġcom . couch base . lite . internal . KeyStore Manager Ċ import Ġcom . couch base . lite . internal . core . impl . Native C 4 KeyPair Ċ import Ġcom . couch base . lite . internal . core . impl . Native C 4 Listener Ċ import Ġcom . couch base . lite . internal . security . Signature Ċ import Ġcom . couch base . lite . internal . utils . Fn Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . security . KeyStore Ċ import Ġjava . security . cert . Certificate Ċ import Ġjava . security . interfaces . RS AP rivate Key Ċ import Ġjava . util . Date Ċ import Ġkotlin . random . Random Ċ Ċ class ĠC 4 KeyPair Test Ġ: ĠPlatform Security Test () Ġ{ ĊĠĠĠ Ġdata Ġclass ĠNative Call ( val Ġalg : ĠByte , Ġval Ġbits : ĠInt , Ġval Ġtoken : ĠLong , Ġval Ġdata : ĠAny ? Ġ= Ġnull ) ĊĊĠĠĠ Ġdata Ġclass ĠStore Mgr Call ( val Ġstore : ĠKey Store ?, Ġval Ġalias : ĠString , Ġval Ġpwd : ĠString ?, Ġval Ġdata : ĠAny ? Ġ= Ġnull ) ĊĊĠĠĠ Ġprivate Ġval Ġc 4 Native Mock Ġ= Ġobject Ġ: ĠC 4 KeyPair . Native Impl Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalls Ġ= Ġmutable ListOf < Native Call >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġn Generate Self Signed Certificate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc 4 KeyPair : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalgorithm : ĠByte , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Bits : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes : ĠArray < out ĠArray < String >> ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusage : ĠByte , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidity InSeconds : ĠLong ĊĠĠĠĠĠĠĠ Ġ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . add ( Native Call ( algorithm , Ġkey Bits , Ġc 4 KeyPair , Ġattributes )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRandom . Default . next Bytes ( 2 5 6 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġn From External ( algorithm : ĠByte , Ġkey Bits : ĠInt , Ġtoken : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . add ( Native Call ( algorithm , Ġkey Bits , Ġtoken )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 L ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġn Free ( token : ĠLong ) Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠ Ġfun Ġreset () Ġ= Ġcalls . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġkey Store Manager Mock Ġ= Ġobject Ġ: ĠKey Store Manager () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalls Ġ= Ġmutable ListOf < Store Mgr Call >() ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetKey Data ( key Pair : ĠC 4 KeyPair ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Mgr Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . key Store , Ġkey Pair . key Alias , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Pair . key Password Ġ== Ġnull ) Ġnull Ġelse ĠString ( key Pair . key Password !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdecrypt ( key Pair : ĠC 4 KeyPair , Ġdata : ĠByteArray ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Mgr Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . key Store , Ġkey Pair . key Alias , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Pair . key Password Ġ== Ġnull ) Ġnull Ġelse ĠString ( key Pair . key Password !! ), Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsign ( key Pair : ĠC 4 KeyPair , Ġdigest Algorithm : ĠSignature . Signature Digest Algorithm , Ġdata : ĠByteArray ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Mgr Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . key Store , Ġkey Pair . key Alias , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Pair . key Password Ġ== Ġnull ) Ġnull Ġelse ĠString ( key Pair . key Password !! ), Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfree ( key Pair : ĠC 4 KeyPair ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalls . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStore Mgr Call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . key Store , Ġkey Pair . key Alias , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key Pair . key Password Ġ== Ġnull ) Ġnull Ġelse ĠString ( key Pair . key Password !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Certificate Chain ( key Store : ĠKey Store ?, Ġkey Alias : ĠString ): ĠMutable List < Certificate >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetKey ( key Store : ĠKey Store ?, Ġkey Alias : ĠString , Ġkey Password : ĠChar Array ?): ĠRS AP rivate Key ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Self Signed Cert Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Store : ĠKey Store ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalias : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Password : ĠChar Array ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Server : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattributes : ĠMutable Map < String , ĠString >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpiration : ĠDate ? ĊĠĠĠĠĠĠĠ Ġ) Ġ= ĠUnit ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfind Alias ( key Store : ĠKey Store ?, Ġkey Alias : ĠString ) Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelete Entries ( key Store : ĠKey Store ?, Ġfilter : ĠFn . Predicate < String > ?) Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġreset () Ġ= Ġcalls . clear () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp C 4 Listener Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġkey Store Manager Mock . reset () ĊĠĠĠĠĠĠĠ ĠKey Store Manager . set Instance ( key Store Manager Mock ) ĊĠĠĠĠĠĠĠ Ġc 4 Native Mock . reset () ĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . native Impl Ġ= Ġc 4 Native Mock ĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . KEY _ PAIR _ CONTEXT . clear () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown C 4 Listener Test () Ġ{ ĊĠĠĠĠĠĠĠ ĠKey Store Manager . set Instance ( null ) ĊĠĠĠĠĠĠĠ ĠC 4 Listener . native Impl Ġ= ĠNative C 4 Listener () ĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . native Impl Ġ= ĠNative C 4 KeyPair () ĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . KEY _ PAIR _ CONTEXT . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create C 4 KeyPair () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store . getInstance (" PKCS 1 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ". toCharArray (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( c 4 Keys ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġc 4 Native Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġc 4 Native Mock . calls [ 0 ] ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( call ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 0 . to Byte (), Ġcall . alg ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 4 8 , Ġcall . bits ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( 0 , Ġcall . token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Short Create C 4 KeyPair () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( c 4 Keys ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġc 4 Native Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġc 4 Native Mock . calls [ 0 ] ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( call ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 0 . to Byte (), Ġcall . alg ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 4 8 , Ġcall . bits ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( 0 , Ġcall . token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Key Data Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= ĠKey Store . getInstance (" PKCS 1 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ". toCharArray (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( c 4 Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠC 4 KeyPair . KEY _ PAIR _ CONTEXT . keySet () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġtokens . size ) ĊĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . getKey Data Callback ( tokens . iterator (). next (). to Long ()) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġkey Store Manager Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġkey Store Manager Mock . calls [ 0 ] ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( store , Ġcall . store ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . alias ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . pwd ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Decrypt Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= ĠKey Store . getInstance (" PKCS 1 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠRandom . next Bytes ( 1 7 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ". toCharArray (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( c 4 Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠC 4 KeyPair . KEY _ PAIR _ CONTEXT . keySet () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġtokens . size ) ĊĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . decrypt Callback ( tokens . iterator (). next (). to Long (), Ġdata ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġkey Store Manager Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġkey Store Manager Mock . calls [ 0 ] ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( store , Ġcall . store ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . alias ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . pwd ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( data , Ġcall . data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sign Key Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= ĠKey Store . getInstance (" PKCS 1 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠRandom . next Bytes ( 1 7 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ". toCharArray (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( c 4 Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠC 4 KeyPair . KEY _ PAIR _ CONTEXT . keySet () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġtokens . size ) ĊĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . sign Callback ( tokens . iterator (). next (). to Long (), Ġ 0 , Ġdata ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġkey Store Manager Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġkey Store Manager Mock . calls [ 0 ] ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( store , Ġcall . store ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . alias ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . pwd ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( data , Ġcall . data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfree Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( c 4 Keys ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠC 4 KeyPair . KEY _ PAIR _ CONTEXT . keySet () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġtokens . size ) ĊĊĠĠĠĠĠĠĠ ĠC 4 KeyPair . free Callback ( tokens . iterator (). next (). to Long ()) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 1 , Ġkey Store Manager Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġkey Store Manager Mock . calls [ 0 ] ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" foo ", Ġcall . alias ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Generate Self Signed Certificate () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc 4 Keys Ġ= ĠC 4 KeyPair . create KeyPair ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" foo ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcert Ġ= Ġc 4 Keys . generate Self Signed Certificate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Algorithm . RSA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Key Size . BIT _ 2 0 4 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX 5 0 9 _ ATTRIBUTES , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey Store Manager . Cert Usage . TLS _ SERVER , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠAssert . assertNotNull ( cert ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 , Ġc 4 Native Mock . calls . size ) ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġcreate KeyPair Ġcall Ġis Ġfirst . ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġc 4 Native Mock . calls [ 1 ] ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 0 . to Byte (), Ġcall . alg ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( 2 0 4 8 , Ġcall . bits ) ĊĠĠĠĠĠĠĠ ĠAssert . assertNot Equals ( 0 , Ġcall . token ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( attr Ġin Ġcall . data Ġas ĠArray <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġatt Ġ= Ġattr Ġas ĠArray < *> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( X 5 0 9 _ ATTRIBUTES [ att [ 0 ]], Ġatt [ 1 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ