From 50e226de8b4cb56e8930adfdb3847bc6030cecd1 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Mon, 9 Jan 2023 14:04:51 +0000 Subject: [PATCH 01/50] Set version -> 3.13.0 --- .DS_Store | Bin 6148 -> 6148 bytes azure-pipelines.yml | 2 +- src/.DS_Store | Bin 6148 -> 8196 bytes src/Yoti.Auth/Yoti.Auth.csproj | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.DS_Store b/.DS_Store index 2cd034b27a1e786fe4cbf3702a79255fb0c4d66e..9120dba210b5e85593dd16fcb8aeb7c27fdc04af 100644 GIT binary patch delta 49 zcmZoMXffCj%*wcHatLc7uT*ulu91O(j)I|?rRC%ctkR4N*z)8?ko_-uA;%k}d4Z?cSYQsh*0o-8cJ;)&BqSxGG^X(f}% zp2=m-rk2mwdhgR`!&*Ljs^``o{?;=@Zu!affk6MNv6)sM@`N)PxaOgKek?-i1SW4ae{nKEW6G z4nN@!CNPVaa1Gb-8s0z+i+C4z@i7|sH0(5oA;N_zP61uLMO$9D>Y1Gk`#V8%Vfx&1}2C_AiEhh$Mei#1^|7%8fX9j diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index 167046de..4849982c 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -19,7 +19,7 @@ False latest true - 3.12.0 + 3.13.0 From 8b57ee1bda84a76dbbb8e6e3b7ce119a773ce271 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Mon, 9 Jan 2023 14:12:57 +0000 Subject: [PATCH 02/50] Set version -> 3.13.0 --- .DS_Store | Bin 6148 -> 0 bytes src/.DS_Store | Bin 8196 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 src/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9120dba210b5e85593dd16fcb8aeb7c27fdc04af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKTWb?R6h4zgvuP^?R49V5;A1fgzUzkA&_S; zf5E@ttN26wFFxrvmuPp>_*jF?fpfmOoHLhi=dwdYtTpy_iHbyIK?UYEU@j0*FLX&V zx?~H;WE%t8p&|Lu!IHNrFbo(5){OzNcdt{A-qDyw*tLK5Z-9Lqq9md+y`?h>4g=nI z1MVV192fi0@=qy9;rJkrIQ1z?`F%n2k5=^bBNdUwd`HwzwwpP=*vp+nL(RxHcNq9lT&a9# znQZRL)x4FrHm#S=37fiX7wMk+)E`W`#T#uN#yvkAjAVfC4dC+P znIC$5(&FRLi)5^$Dy)K4=oW8Hr#sb3rDX5c8;x1Xo;Iq;?A7YCS;4w_=kEQZ?rCrq z@{brhgyDpia!um`J|UrJ{l*!E0T0D&g?A2Yi|-#N*^poUbK=WuzjJ(iy>vddr_);X zUdgW2_x{4hdo}HqY={-~d)_HN@(Vt&1|vF2u_D&_c~(?M>umLkur}9ukY;R#0mHyQ zVL+S@HdJ6!<6NOUI$-1z0GLCu6r{z^frzm+HZ{%_q6WfLC{Tqm{ls7@9Obt5YigV; zRN=(*THn!HZ{%_q6A`o1SAc{7zQqt FfnTlx?SKFP diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index 5bb7ef58565fc5508a261ad45a756d845216d2be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8196 zcmeHLO-~a+7=8y(wj#283VtLTdockKib9A7*8(x<0b&W30G4gLl$B+s?r!<8A?aN` z`vd#|ob{wXK#yKM_y@dr#&mKr3(_6u>i^C*y>3Us`pk z70?R&mkRLzgN2!+t*|0d{5r4@Apl|%Hj9LHi~|J6QfMozNEB4;Q$`O&QHcsMh@_+4 z;_isH!iq#m2O{Y})W}3dC`62oJWIF(u_fwKE1(sqS3m~$Q?LyVY}Cf@S)XOmoo}Z{ zm73)Ee7LMNU)-lTNV6pXM0z zv(>tjo%h_WjM+88Xyka*4FtiEIWaPl7_bs! zqq_rEc|0*RVBH%T-QA5D-SN8*o@Lhk4a(k#sRL2}4``Lof6KR6t9!A{R6u=33uxoK z7%TvT2s{`>QA$`_<5wLuQthEvtyIS_YQ*|<=3-qdm+vHoP@v(_@$rAC#nr%cqFV3J zc+9(bxlOeY$k*z-{V>hyQixq@x!iiC&1~=JZ0~CC?(VtT+uhf3{YJ*@%sRRCLcl-q z1oK&t^h<8WYzuLrOy?M#4ctv!AnC~6j#A!hG<6&yJah9e4w~k6is;jI&>%W}9JnrB zECgPDW_2}mqjXJufsd98nD5WB(2G1q7na26k-ITXR~e4TXE0Obrf}X3Lc}^wdcg?- zhZfxA&a&@hU4MoqSroC2w1;oOXD)_J6`h<%3-O1)gvt<$+qY%Sgt)8##O?HFQ8&7( zO$x~zWz*KQNOz2pI|&;P^H z>nE+iX(`YsJMQK2|J2F%|ED#)?pG_I6*vb9kfzDhWD+M*J^qi*iO1R&<`v95aleX0 nLBT?V Date: Mon, 9 Jan 2023 16:19:51 +0000 Subject: [PATCH 03/50] Cleanup unneccessary files --- test/.DS_Store | Bin 6148 -> 0 bytes test/Yoti.Auth.Tests/.DS_Store | Bin 8196 -> 0 bytes test/Yoti.Auth.Tests/DocScan/.DS_Store | Bin 6148 -> 0 bytes test/Yoti.Auth.Tests/DocScan/Session/.DS_Store | Bin 6148 -> 0 bytes .../DocScan/Session/Create/.DS_Store | Bin 6148 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/.DS_Store delete mode 100644 test/Yoti.Auth.Tests/.DS_Store delete mode 100644 test/Yoti.Auth.Tests/DocScan/.DS_Store delete mode 100644 test/Yoti.Auth.Tests/DocScan/Session/.DS_Store delete mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Create/.DS_Store diff --git a/test/.DS_Store b/test/.DS_Store deleted file mode 100644 index b493ede371dcef262a0b89e8ef8f614a922472bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!EVz)5S>j^>L{wn0Z=bUD{+lVXiBAui<_1MS6qP*pkR}zHMrg?cE}-$LYM28zsk(#Br^#z`19C-um7-yi0D4O1E-`E z72lyTqC-UcG(`1FDz355ZpKa~#j$_(d2*bkMcL_mSGA@3^1YQ{C1?g8qeC-^%D5aC zy?FGVd;7*@$weF|Z_?qU-+HiX@-j~I;m8uw!4N4Q-lqA$OnPRV4+_hT+(gg_8vWMV zblTl`-qzi%%~@Mdw>LU%z1iKG%^JbOCr@9z?tjgWa&ux;AcZgA+N#G3I7RRmjlM;r zJTv(LGWjl#{;Vj}-G$;uxC~vZj(QCKlRRwr` z&~V1kW985;9cb(k09ePcHN^b0$Q3`{vH&{35?Vkk$)xb}IW$I79jlk$fT z<)5tl2}Rkbh87QPMkbzNnKb8|g~NfMei11AKR%re)g0y*;$$Q)B;)+tB1lV zKmUQ*zWsvD5-f!j+q3EWR?wP2KP`NZX`)X}>zKzrqtIXPb>MaUoLk31e9_V1qavIX zdL>@99@@2|q?!82*IF|QllI))chy(wAGk5-4SK`gt4c#3Roc~dCt0bsUhvbF)=}-W zUaf71!O`yM#Hx>p+XF5gRpQZkekbV({8PgNs*n|U6nkt7{U-Psf4wk1#oP0i zN@C@$?L~_HH?MUw_5P;#DMti)vN7VHdCUOD)sTH7C}^^e<~6-DO?rk|M7BQSk<_i6 zFM65pu1S1W3;OUzOMf`i-xP*A;0*hhjbe^1)KG@n0!JE{A_6{PA;vL!vqxTWudu9) z(YCB=NOhT=S1dtc^n(o$i^`~ZH4M3q!^TS4*~A{&+cpP{6D+9UbplA E7f*1up8x;= diff --git a/test/Yoti.Auth.Tests/DocScan/.DS_Store b/test/Yoti.Auth.Tests/DocScan/.DS_Store deleted file mode 100644 index 35cfc3a98007ddf8d186a4c146885488999f6b82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKL2uJA6n^eHnrcGofuUU{S>jravW`iJOX$jhE1B24_Q@h8x+2pcym=t)1DdyZ^E+yN3t!ww%4%@3iGX_i#RM2HVe`zkWaXmVa0J z2MdM|2Vah{#|{^8fnY_0^JuJct-hjV!CGW{^a^+dyaKmTz^x&{)@?{W*DK%^cn}Kk z`XJ$qp~K3eSvpXdBLJ|DYGa7`$B;SFVd${3h!&WzRG_5_cf=5uj(X|xLWh+_ODEwD zAHt0++zCaP(b2y&=_EpnzVr%s1(p@qu$L{~|KI-m{J%`{S6%_Hz`asH)caAthevXI z>)ONdUMt~W;B1^%S^PsmV76l9@>aY9H->u20Wfq}Sws!Y{|FcveBl-NuL}GIeI0w< diff --git a/test/Yoti.Auth.Tests/DocScan/Session/.DS_Store b/test/Yoti.Auth.Tests/DocScan/Session/.DS_Store deleted file mode 100644 index 3f7e57b3c430fb4156a09735ecd4b714d2f46a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!Ab)$5S`R&Q$*-Np~ryNqSdM(Ue;OX-OC zI+H|ksa~bX3`|}!nb}QVLM8zK(H{0T0BQgrQ3*>`EPfE`C!La#vy>5q`9=oOQKGNI zM2Az}Y?ws`Xzdo@0QwL?0LAsAO|g%<_HM)szu+5=1`lqnU&Dta9%Rktn<&kd=NBrn zA{XVQf2&7+7G%RgJLsQN>qP4${HzDzX&jBZwdDhyWLV z4NRyS4gw+}hl3sMgNbq@l*Uo6UyWYVAxWRk^adzIWWcOYT$sWJV1F_otC1 zhoA6_mBO4J{eGJ0^akw|BjFgC$&jBI@v*SKiJuqL@BCnsg&AN5n1PvRz@3S5app(L z17rr6fxl*e&Ig4`=sCgbhWsp~5{egbhc# za(;n6ut-;8n|Ev H{*-|ayS`-b diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/.DS_Store b/test/Yoti.Auth.Tests/DocScan/Session/Create/.DS_Store deleted file mode 100644 index 415710a702370d3ca8796f326f0bd960e332f261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKyG{c^3>-s>NNG}1?l15Ms}T5s{6G*yG$^2mq`r#p;?pvI20a|icjG!J4AG8> j(T=(Cc6<{>S=W5c^IkY42A%n!6ZJFTy2zx!Un_71kIogP From c5913652c5389ff7eb6eda7598448c1920a50c79 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Mon, 9 Jan 2023 16:25:33 +0000 Subject: [PATCH 04/50] Cleanup unneccessary files --- .../DocScan/DocScanExample/DocScanExample.sln | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 src/Examples/DocScan/DocScanExample/DocScanExample.sln diff --git a/src/Examples/DocScan/DocScanExample/DocScanExample.sln b/src/Examples/DocScan/DocScanExample/DocScanExample.sln deleted file mode 100644 index 52210ccf..00000000 --- a/src/Examples/DocScan/DocScanExample/DocScanExample.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 25.0.1703.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DocScanExample", "DocScanExample.csproj", "{33DF7B65-3CBB-40B0-A08A-17A05AB7D071}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {33DF7B65-3CBB-40B0-A08A-17A05AB7D071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33DF7B65-3CBB-40B0-A08A-17A05AB7D071}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33DF7B65-3CBB-40B0-A08A-17A05AB7D071}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33DF7B65-3CBB-40B0-A08A-17A05AB7D071}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {D250BACD-0361-4529-98E0-EEE3F48D5863} - EndGlobalSection -EndGlobal From 4cadc4107e500d2df1cc50d4de9e927466db7ccd Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Mon, 9 Jan 2023 16:34:13 +0000 Subject: [PATCH 05/50] Update .gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 82b0fcb2..6e27c66c 100644 --- a/.gitignore +++ b/.gitignore @@ -34,9 +34,6 @@ Backup*/ # except build/, which is used as an MSBuild target. !**/packages/build/ -.DS_STORE -.DS_Store - # Coverage OpenCover/ From 85d448382da97f23d12e9ca84fa449393dd1ef99 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 20 Apr 2023 16:35:49 +0100 Subject: [PATCH 06/50] update versions --- src/Yoti.Auth/Yoti.Auth.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index 167046de..36c5346e 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -19,7 +19,7 @@ False latest true - 3.12.0 + 3.14.0 From d53bf73b7e78892605638e2da6ca648e526fc941 Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Tue, 13 Feb 2024 21:37:52 +0300 Subject: [PATCH 07/50] Release/3.15.0 (#450) * SDK-2368: added advanced identity profiles for share1 and idv * SDK-2342: added support for enabling expanded document fields * SDK-2341: added support to retrieve expanded doc fields and media, added succedd page example * SDK-2342: updated test fw version for security and azure pipelines * SDK-2341 Removed CameraAndUpload on dbs example page * Sdk 2368: Generated Advanced Identity Profile Example Page * Create new issue template workflow --- .github/ISSUE_TEMPLATE.md | 17 -- .github/ISSUE_TEMPLATE/config.yml | 5 + src/Examples/Aml/AmlExample/AmlExample.csproj | 2 +- .../Controllers/AdvancedIdentityController.cs | 148 ++++++++++++++++++ .../Controllers/DbsController.cs | 11 +- .../Controllers/HomeController.cs | 3 +- .../AdvancedIdentityProfile/Index.cshtml | 4 + .../Views/IdVerify/Success.cshtml | 60 +++++++ src/Yoti.Auth/DocScan/DocScanService.cs | 2 +- .../Session/Create/AdvancedIdentityProfile.cs | 24 +++ .../Session/Create/SessionSpecification.cs | 6 +- .../Create/SessionSpecificationBuilder.cs | 20 ++- .../RequestedTextExtractionTaskBuilder.cs | 13 +- .../Task/RequestedTextExtractionTaskConfig.cs | 6 +- .../AdvancedIdentityProfilePreviewResponse.cs | 12 ++ .../AdvancedIdentityProfileResponse.cs | 19 +++ .../FailureReasonResponse.cs | 10 ++ .../Retrieve/ExpandedDocumentFieldResponse.cs | 13 ++ .../Session/Retrieve/GetSessionResult.cs | 6 + .../Resource/IdDocumentResourceResponse.cs | 3 + .../ShareUrl/Policy/DynamicPolicy.cs | 19 ++- .../ShareUrl/Policy/DynamicPolicyBuilder.cs | 14 +- .../Yoti.Auth.Tests.Common.csproj | 2 +- .../DocScan/DocScanClientTests.cs | 31 ++++ .../SessionSpecificationBuilderTests.cs | 82 ++++++++++ ...RequestedTextExtractionTaskBuilderTests.cs | 27 +++- .../Session/Retrieve/GetSessionResultTests.cs | 17 ++ .../Policy/DynamicPolicyBuilderTests.cs | 13 ++ ...sionResultWithAdvancedIdentityProfile.json | 42 +++++ .../TestData/IdentityProfiles.cs | 42 ++++- test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 5 +- 31 files changed, 638 insertions(+), 40 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 src/Examples/DocScan/DocScanExample/Controllers/AdvancedIdentityController.cs create mode 100644 src/Examples/DocScan/DocScanExample/Views/AdvancedIdentityProfile/Index.cshtml create mode 100644 src/Yoti.Auth/DocScan/Session/Create/AdvancedIdentityProfile.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfilePreviewResponse.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfileResponse.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/FailureReasonResponse.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/ExpandedDocumentFieldResponse.cs create mode 100644 test/Yoti.Auth.Tests/TestData/GetSessionResultWithAdvancedIdentityProfile.json diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index cce3710d..00000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Custom issue template -about: " There's a better way to get help!" -title: '' -labels: '' -assignees: '' - ---- - -# -# Wait ✋ -# -# There's a better way to get help! -# -# Send your questions or issues to sdksupport@yoti.com -# -# diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..9486bc24 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Yoti Support + url: https://support.yoti.com/yotisupport/s/contactsupport + about: Please send your questions or issues here. diff --git a/src/Examples/Aml/AmlExample/AmlExample.csproj b/src/Examples/Aml/AmlExample/AmlExample.csproj index 15bf388e..f96d7c36 100644 --- a/src/Examples/Aml/AmlExample/AmlExample.csproj +++ b/src/Examples/Aml/AmlExample/AmlExample.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.1 + netcoreapp3.1 diff --git a/src/Examples/DocScan/DocScanExample/Controllers/AdvancedIdentityController.cs b/src/Examples/DocScan/DocScanExample/Controllers/AdvancedIdentityController.cs new file mode 100644 index 00000000..c114d552 --- /dev/null +++ b/src/Examples/DocScan/DocScanExample/Controllers/AdvancedIdentityController.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Net.Http; +using DocScanExample.Models; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Yoti.Auth; +using Yoti.Auth.DocScan; +using Yoti.Auth.DocScan.Session.Create; + +namespace DocScanExample.Controllers +{ + public class AdvancedIdentityProfileController : Controller + { + private readonly DocScanClient _client; + + private readonly string _baseUrl; + private readonly Uri _apiUrl; + + public AdvancedIdentityProfileController(IHttpContextAccessor httpContextAccessor) + { + var request = httpContextAccessor.HttpContext.Request; + + _baseUrl = $"{request.Scheme}://{request.Host}"; ; + _apiUrl = GetApiUrl(); + _client = GetDocScanClient(_apiUrl); + } + + public IActionResult Index() + { + AdvancedIdentityProfile data = new AdvancedIdentityProfile + { + profiles = new List + { + new Profile + { + trust_framework = "UK_TFIDA", + schemes = new List + { + new Scheme + { + label = "LB912", + type = "RTW" + } + } + }, + new Profile + { + trust_framework = "YOTI_GLOBAL", + schemes = new List + { + new Scheme + { + label = "LB321", + type = "IDENTITY", + objective = "AL_L1" + } + } + } + } + }; + //Build Session Spec + var sessionSpec = new SessionSpecificationBuilder() + .WithClientSessionTokenTtl(600) + .WithResourcesTtl(90000) + .WithUserTrackingId("some-user-tracking-id") + //Add Sdk Config (with builder) + .WithSdkConfig( + new SdkConfigBuilder() + .WithAllowsCamera() + .WithPrimaryColour("#2d9fff") + .WithSecondaryColour("#FFFFFF") + .WithFontColour("#FFFFFF") + .WithLocale("en-GB") + .WithPresetIssuingCountry("GBR") + .WithSuccessUrl($"{_baseUrl}/idverify/success") + .WithErrorUrl($"{_baseUrl}/idverify/error") + .WithPrivacyPolicyUrl($"{_baseUrl}/privacy-policy") + .Build() + ) + .WithCreateIdentityProfilePreview(true) + .WithAdvancedIdentityProfileRequirements(data) + .WithSubject(new + { + subject_id = "some_subject_id_string" + }) + .Build(); + + CreateSessionResult createSessionResult = _client.CreateSession(sessionSpec); + string sessionId = createSessionResult.SessionId; + + string path = $"web/index.html?sessionID={sessionId}&sessionToken={createSessionResult.ClientSessionToken}"; + Uri uri = new Uri(_apiUrl, path); + + ViewBag.iframeUrl = uri.ToString(); + + TempData["sessionId"] = sessionId; + return View(); + } + + public IActionResult Media(string mediaId, string sessionId) + { + MediaValue media = _client.GetMediaContent(sessionId, mediaId); + + return File(media.GetContent(), media.GetMIMEType()); + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + + internal static DocScanClient GetDocScanClient(Uri apiUrl = null) + { + if (apiUrl == null) + apiUrl = GetApiUrl(); + + StreamReader privateKeyStream = System.IO.File.OpenText(Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH")); + var key = CryptoEngine.LoadRsaKey(privateKeyStream); + + string clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); + + return new DocScanClient(clientSdkId, key, new HttpClient(), apiUrl); + } + + internal static Uri GetApiUrl() + { + string apiUrl = Environment.GetEnvironmentVariable("YOTI_DOC_SCAN_API_URL"); + if (string.IsNullOrEmpty(apiUrl)) + { + return Yoti.Auth.Constants.Api.DefaultYotiDocsUrl; + } + + if (!apiUrl.EndsWith("/", StringComparison.Ordinal)) + apiUrl += "/"; + + return new Uri(apiUrl); + } + + public IActionResult PrivacyPolicy() + { + return View(); + } + } +} diff --git a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs index a7d74c9f..2a1200be 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs @@ -9,10 +9,6 @@ using Yoti.Auth; using Yoti.Auth.DocScan; using Yoti.Auth.DocScan.Session.Create; -using Yoti.Auth.DocScan.Session.Create.Check; -using Yoti.Auth.DocScan.Session.Create.Filter; -using Yoti.Auth.DocScan.Session.Create.Objectives; -using Yoti.Auth.DocScan.Session.Create.Task; namespace DocScanExample.Controllers { @@ -34,7 +30,6 @@ public DbsController(IHttpContextAccessor httpContextAccessor) public IActionResult Index() { - //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) @@ -43,7 +38,7 @@ public IActionResult Index() //Add Sdk Config (with builder) .WithSdkConfig( new SdkConfigBuilder() - .WithAllowsCameraAndUpload() + .WithAllowsCamera() .WithPrimaryColour("#2d9fff") .WithSecondaryColour("#FFFFFF") .WithFontColour("#FFFFFF") @@ -55,7 +50,7 @@ public IActionResult Index() .Build() ) .WithCreateIdentityProfilePreview(true) - .WithIdentityProfileRequirements(new + .WithIdentityProfileRequirements(new { trust_framework = "UK_TFIDA", scheme = new @@ -127,4 +122,4 @@ public IActionResult PrivacyPolicy() return View(); } } -} \ No newline at end of file +} diff --git a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs index f15ed5f4..1713dc4b 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs @@ -82,8 +82,9 @@ public IActionResult Index() //Add Tasks (using builders) .WithRequestedTask( new RequestedTextExtractionTaskBuilder() - .WithManualCheckAlways() + .WithManualCheckFallback() .WithChipDataDesired() + .WithCreateExpandedDocumentFields() .Build() ) .WithRequestedTask( diff --git a/src/Examples/DocScan/DocScanExample/Views/AdvancedIdentityProfile/Index.cshtml b/src/Examples/DocScan/DocScanExample/Views/AdvancedIdentityProfile/Index.cshtml new file mode 100644 index 00000000..fa3beadf --- /dev/null +++ b/src/Examples/DocScan/DocScanExample/Views/AdvancedIdentityProfile/Index.cshtml @@ -0,0 +1,4 @@ +@{ + ViewData["Title"] = "Advanced Identity Profile Page"; +} + \ No newline at end of file diff --git a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml index c3c2a1db..284bcaff 100644 --- a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml +++ b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml @@ -289,6 +289,31 @@ } + @if (Model.AdvancedIdentityProfilePreviewResponse != null && Model.AdvancedIdentityProfilePreviewResponse.Media != null) + { +
+
+

Advanced Identity Profile Preview

+
+
+ + } @@ -344,6 +369,41 @@ } + @if (document.ExpandedDocumentFields != null) + { +
+
+

+ +

+
+
+
+ @if (document.ExpandedDocumentFields.Media != null) + { +
Media
+ + + + + + + +
ID + + @document.ExpandedDocumentFields.Media.Id + +
+ } +
+
+
+ } + @if (document.DocumentIdPhoto != null) {
diff --git a/src/Yoti.Auth/DocScan/DocScanService.cs b/src/Yoti.Auth/DocScan/DocScanService.cs index 87875608..404c19e5 100644 --- a/src/Yoti.Auth/DocScan/DocScanService.cs +++ b/src/Yoti.Auth/DocScan/DocScanService.cs @@ -151,7 +151,7 @@ public async Task GetMediaContent(string sdkId, AsymmetricCipherKeyP Response.CreateYotiExceptionFromStatusCode(response); } - if (response.Content == null) + if (response.Content == null || response.Content.Headers.ContentType == null) { return null; } diff --git a/src/Yoti.Auth/DocScan/Session/Create/AdvancedIdentityProfile.cs b/src/Yoti.Auth/DocScan/Session/Create/AdvancedIdentityProfile.cs new file mode 100644 index 00000000..eaa2cbff --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/AdvancedIdentityProfile.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; + +namespace Yoti.Auth.DocScan.Session.Create +{ + public class Scheme + { + public string label { get; set; } + public string type { get; set; } + public string objective { get; set; } + } + + public class Profile + { + public string trust_framework { get; set; } + public List schemes { get; set; } + } + + public class AdvancedIdentityProfile + { + public List profiles { get; set; } + } +} + diff --git a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs index e09a461a..129d800d 100644 --- a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs +++ b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs @@ -9,7 +9,7 @@ namespace Yoti.Auth.DocScan.Session.Create { public class SessionSpecification { - internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, string userTrackingId, NotificationConfig notifications, List requestedChecks, List requestedTasks, SdkConfig sdkConfig, List requiredDocuments, bool? blockBiometricConsent, DateTimeOffset? sessionDeadline, object identityProfileRequirements, object subject, bool createIdentityProfilePreview) + internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, string userTrackingId, NotificationConfig notifications, List requestedChecks, List requestedTasks, SdkConfig sdkConfig, List requiredDocuments, bool? blockBiometricConsent, DateTimeOffset? sessionDeadline, object identityProfileRequirements, object subject, bool createIdentityProfilePreview, object advancedIdentityProfileRequirements) { ClientSessionTokenTtl = clientSessionTokenTtl; ResourcesTtl = resourcesTtl; @@ -24,6 +24,7 @@ internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, str IdentityProfileRequirements = identityProfileRequirements; Subject = subject; CreateIdentityProfilePreview = createIdentityProfilePreview; + AdvancedIdentityProfileRequirements = advancedIdentityProfileRequirements; } [JsonProperty(PropertyName = "client_session_token_ttl")] @@ -64,5 +65,8 @@ internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, str [JsonProperty(PropertyName = "subject")] public object Subject { get; } + + [JsonProperty(PropertyName = "advanced_identity_profile_requirements")] + public object AdvancedIdentityProfileRequirements { get; } } } diff --git a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs index ba413ec2..ee7c9f20 100644 --- a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs +++ b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs @@ -1,11 +1,13 @@ using System; using System.Collections.Generic; +using Newtonsoft.Json; using Yoti.Auth.DocScan.Session.Create.Check; using Yoti.Auth.DocScan.Session.Create.Filter; using Yoti.Auth.DocScan.Session.Create.Task; namespace Yoti.Auth.DocScan.Session.Create -{ +{ + public class SessionSpecificationBuilder { private readonly List _requestedChecks = new List(); @@ -21,6 +23,7 @@ public class SessionSpecificationBuilder private object _identityProfileRequirements; private object _subject; private bool _createIdentityProfilePreview; + private AdvancedIdentityProfile _advancedIdentityProfileRequirements; /// /// Sets the client session token TTL (time-to-live) @@ -151,6 +154,7 @@ public SessionSpecificationBuilder WithIdentityProfileRequirements(object identi _identityProfileRequirements = identityProfileRequirements; return this; } + /// /// Sets the Subject object for the session @@ -174,6 +178,17 @@ public SessionSpecificationBuilder WithCreateIdentityProfilePreview(bool createI return this; } + /// + /// Sets the Advanced Identity Profile Requirements for the session + /// + /// The Advanced Identity Profile Requirements for the session + /// the builder + public SessionSpecificationBuilder WithAdvancedIdentityProfileRequirements(AdvancedIdentityProfile profile) + { + _advancedIdentityProfileRequirements = profile; + return this; + } + /// /// Builds the based on the values supplied to the builder /// @@ -193,7 +208,8 @@ public SessionSpecification Build() _sessionDeadline, _identityProfileRequirements, _subject, - _createIdentityProfilePreview + _createIdentityProfilePreview, + _advancedIdentityProfileRequirements ); } } diff --git a/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilder.cs b/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilder.cs index 2ae53754..6fba3bda 100644 --- a/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilder.cs +++ b/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilder.cs @@ -9,6 +9,7 @@ public class RequestedTextExtractionTaskBuilder { private string _manualCheck; private string _chipData; + private bool _createExpandedDocumentFields; /// /// Requires that a manual follow-up check is always performed @@ -60,11 +61,21 @@ public RequestedTextExtractionTaskBuilder WithChipDataIgnore() return this; } + /// + /// Sets the value of createExpandedDocumentFields data to "true" + /// + /// The builder + public RequestedTextExtractionTaskBuilder WithCreateExpandedDocumentFields() + { + _createExpandedDocumentFields = true; + return this; + } + public RequestedTextExtractionTask Build() { Validation.NotNullOrEmpty(_manualCheck, nameof(_manualCheck)); - RequestedTextExtractionTaskConfig config = new RequestedTextExtractionTaskConfig(_manualCheck, _chipData); + RequestedTextExtractionTaskConfig config = new RequestedTextExtractionTaskConfig(_manualCheck, _chipData, _createExpandedDocumentFields); return new RequestedTextExtractionTask(config); } diff --git a/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskConfig.cs b/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskConfig.cs index b98ad03f..e98fa7ce 100644 --- a/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskConfig.cs +++ b/src/Yoti.Auth/DocScan/Session/Create/Task/RequestedTextExtractionTaskConfig.cs @@ -4,10 +4,11 @@ namespace Yoti.Auth.DocScan.Session.Create.Task { public class RequestedTextExtractionTaskConfig : RequestedTaskConfig { - public RequestedTextExtractionTaskConfig(string manualCheck, string chipData = null) + public RequestedTextExtractionTaskConfig(string manualCheck, string chipData = null, bool? createExpandedDocumentFields = false) { ManualCheck = manualCheck; ChipData = chipData; + CreateExpandedDocumentFields = createExpandedDocumentFields; } [JsonProperty(PropertyName = "manual_check")] @@ -15,5 +16,8 @@ public RequestedTextExtractionTaskConfig(string manualCheck, string chipData = n [JsonProperty(PropertyName = "chip_data")] public string ChipData { get; } + + [JsonProperty(PropertyName = "create_expanded_document_fields")] + public bool? CreateExpandedDocumentFields { get; } } } \ No newline at end of file diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfilePreviewResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfilePreviewResponse.cs new file mode 100644 index 00000000..981bcac0 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfilePreviewResponse.cs @@ -0,0 +1,12 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; + +namespace Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfilePreview +{ + public class AdvancedIdentityProfilePreviewResponse + { + [JsonProperty(PropertyName = "media")] + public MediaResponse Media { get; private set; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfileResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfileResponse.cs new file mode 100644 index 00000000..a2b843f5 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/AdvancedIdentityProfileResponse.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; + +namespace Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile +{ + public class AdvancedIdentityProfileResponse + { + [JsonProperty(PropertyName = "subject_id")] + public string SubjectId { get; private set; } + [JsonProperty(PropertyName = "result")] + public string Result { get; private set; } + [JsonProperty(PropertyName = "failure_reason")] + public FailureReasonResponse FailureReason { get; private set; } + [JsonProperty(PropertyName = "identity_profile_report")] + public Dictionary Report { get; private set; } + + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/FailureReasonResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/FailureReasonResponse.cs new file mode 100644 index 00000000..b55c83d8 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/AdvancedIdentityProfile/FailureReasonResponse.cs @@ -0,0 +1,10 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile +{ + public class FailureReasonResponse + { + [JsonProperty(PropertyName = "reason_code")] + public string ReasonCode { get; private set; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/ExpandedDocumentFieldResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/ExpandedDocumentFieldResponse.cs new file mode 100644 index 00000000..af117608 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/ExpandedDocumentFieldResponse.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Retrieve +{ + /// + /// ExpandedDocumentFieldsResponse represents the document fields in a document + /// + public class ExpandedDocumentFieldsResponse : IResponseWithMediaProperty + { + [JsonProperty(PropertyName = "media")] + public MediaResponse Media { get; private set; } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/GetSessionResult.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/GetSessionResult.cs index b34905a7..89e67609 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/GetSessionResult.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/GetSessionResult.cs @@ -56,6 +56,12 @@ public class GetSessionResult [JsonProperty(PropertyName = "identity_profile_preview")] public IdentityProfilePreviewResponse IdentityProfilePreviewResponse { get; internal set; } + [JsonProperty(PropertyName = "advanced_identity_profile")] + public IdentityProfileResponse AdvancedIdentityProfile { get; internal set; } + + [JsonProperty(PropertyName = "advanced_identity_profile_preview")] + public IdentityProfilePreviewResponse AdvancedIdentityProfilePreviewResponse { get; internal set; } + public List GetAuthenticityChecks() { if (Checks == null) diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/IdDocumentResourceResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/IdDocumentResourceResponse.cs index 3948c4cd..3136cc1d 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/IdDocumentResourceResponse.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/IdDocumentResourceResponse.cs @@ -25,6 +25,9 @@ public class IdDocumentResourceResponse : ResourceResponse [JsonProperty(PropertyName = "document_id_photo")] public DocumentIdPhotoResponse DocumentIdPhoto { get; internal set; } + [JsonProperty(PropertyName = "expanded_document_fields")] + public ExpandedDocumentFieldsResponse ExpandedDocumentFields { get; internal set; } + /// /// Filters the tasks for the text extraction tasks associated with the ID document /// diff --git a/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicy.cs b/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicy.cs index 488cb28d..787ff990 100644 --- a/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicy.cs +++ b/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicy.cs @@ -29,12 +29,16 @@ public class DynamicPolicy [JsonProperty(PropertyName = "identity_profile_requirements")] private readonly object _identityProfileRequirements; + + [JsonProperty(PropertyName = "advanced_identity_profile_requirements")] + private readonly object _advancedIdentityProfileRequirements; public DynamicPolicy( ICollection wantedAttributes, HashSet wantedAuthTypes, bool wantedRememberMeId, - object identityProfileRequirements = null + object identityProfileRequirements = null, + object advancedIdentityProfileRequirements = null ) { _wantedAttributes = wantedAttributes; @@ -42,6 +46,7 @@ public DynamicPolicy( _wantedRememberMeId = wantedRememberMeId; _isWantedRememberMeIdOptional = false; _identityProfileRequirements = identityProfileRequirements; + _advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; } /// @@ -91,5 +96,17 @@ public object IdentityProfileRequirements return _identityProfileRequirements; } } + + /// + /// AdvancedIdentityProfileRequirements requested in the policy + /// + [JsonIgnore] + public object AdvancedIdentityProfileRequirements + { + get + { + return _advancedIdentityProfileRequirements; + } + } } } \ No newline at end of file diff --git a/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs b/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs index 8d4ba4e4..78ff280e 100644 --- a/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs +++ b/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs @@ -9,6 +9,7 @@ public class DynamicPolicyBuilder private readonly HashSet _wantedAuthTypes = new HashSet(); private bool _wantedRememberMeId; private object _identityProfileRequirements; + private object _advancedIdentityProfileRequirements; public DynamicPolicyBuilder WithWantedAttribute(WantedAttribute wantedAttribute) { @@ -157,10 +158,21 @@ public DynamicPolicyBuilder WithIdentityProfileRequirements(object identityProfi _identityProfileRequirements = identityProfileRequirements; return this; } + + /// + /// Use an AdvancedIdentity Profile Requirement object for the share + /// + /// object describing the advanced identity profile requirements to use + /// with the identity profile requirements + public DynamicPolicyBuilder WithAdvancedIdentityProfileRequirements(object advancedIdentityProfileRequirements) + { + _advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + return this; + } public DynamicPolicy Build() { - return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements); + return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements, _advancedIdentityProfileRequirements); } } } \ No newline at end of file diff --git a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj index 292d43db..8832cfb2 100644 --- a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj +++ b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj @@ -1,7 +1,7 @@  - netcoreapp2.1 + netcoreapp3.1 diff --git a/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs b/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs index 944a6127..243aec81 100644 --- a/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs @@ -686,6 +686,37 @@ public void ShouldParseIdentityProfileResponse() Assert.AreEqual(mediaId, result.IdentityProfile.Report["media"]["id"]); } + + [TestMethod] + public void ShouldParseAdvancedIdentityProfileResponse() + { + string mediaId = "c69ff2db-6caf-4e74-8386-037711bbc8d7"; + string getSessionResult; + using (StreamReader r = File.OpenText("TestData/GetSessionResultWithAdvancedIdentityProfile.json")) + { + getSessionResult = r.ReadToEnd(); + } + + var successResponse = new HttpResponseMessage + { + StatusCode = HttpStatusCode.OK, + Content = new StringContent(getSessionResult), + }; + + Mock handlerMock = Auth.Tests.Common.Http.SetupMockMessageHandler(successResponse); + var httpClient = new HttpClient(handlerMock.Object); + + DocScanClient docScanClient = new DocScanClient(_sdkId, _keyPair, httpClient); + + GetSessionResult result = docScanClient.GetSession("some-session-id"); + + Assert.AreEqual("DONE", result.AdvancedIdentityProfile.Result); + Assert.AreEqual("someStringHere", result.AdvancedIdentityProfile.SubjectId); + Assert.AreEqual("MANDATORY_DOCUMENT_COULD_NOT_BE_PROVIDED", result.AdvancedIdentityProfile.FailureReason.ReasonCode); + + Assert.AreEqual("UK_TFIDA", result.AdvancedIdentityProfile.Report["compliance"][0]["trust_framework"]); + Assert.AreEqual(mediaId, result.AdvancedIdentityProfile.Report["media"]["id"].Value()); + } private DocScanClient SetupDocScanClient(dynamic responseContent) { diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs index 9b332b15..cc26264c 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs @@ -163,6 +163,61 @@ public void ShoudBuildWithIdentityProfileRequirements() Assert.IsTrue(sessionSpecJson.Contains("BASIC")); } + [TestMethod] + public void ShoudBuildWithAdvancedIdentityProfileRequirements() + { + string advancedIdentityProfileJson = @" + { + ""profiles"": [ + { + ""trust_framework"": ""UK_TFIDA"", + ""schemes"": [ + { + ""label"": ""LB912"", + ""type"": ""RTW"" + }, + { + ""label"": ""LB777"", + ""type"": ""DBS"", + ""objective"": ""BASIC"" + } + ] + }, + { + ""trust_framework"": ""YOTI_GLOBAL"", + ""schemes"": [ + { + ""label"": ""LB321"", + ""type"": ""IDENTITY"", + ""objective"": ""AL_L1"", + ""config"": {} + } + ] + } + ] + }"; + + var sessionSpec = new SessionSpecificationBuilder() + .WithIdentityProfileRequirements(advancedIdentityProfileJson) + .Build(); + + string sessionSpecJson = JsonConvert.SerializeObject(sessionSpec); + Assert.IsTrue(sessionSpecJson.Contains("UK_TFIDA")); + Assert.IsTrue(sessionSpecJson.Contains("YOTI_GLOBAL")); + Assert.IsTrue(sessionSpecJson.Contains("IDENTITY")); + + } + + [TestMethod] + public void ShouldNotImplicitlySetAValueForAdvancedIdentityProfileRequirements() + { + SessionSpecification sessionSpec = + new SessionSpecificationBuilder() + .Build(); + + Assert.IsNull(sessionSpec.AdvancedIdentityProfileRequirements); + } + [TestMethod] public void ShoudBuildWithSubject() { @@ -287,6 +342,33 @@ public void ShouldBuildWithIdentityProfilePreview() Assert.AreEqual(identityProfileRequirements, sessionSpec.IdentityProfileRequirements); } + + [TestMethod] + public void ShouldBuildWithAdvancedIdentityProfilePreview() + { + AdvancedIdentityProfile advancedIdentityProfileRequirements = IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); + + SessionSpecification sessionSpec = + new SessionSpecificationBuilder() + .WithAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements) + .WithCreateIdentityProfilePreview(true) + .Build(); + + Assert.AreEqual(advancedIdentityProfileRequirements, sessionSpec.AdvancedIdentityProfileRequirements); + } + + [TestMethod] + public void ShouldBuildWithAdvancedIdentityProfileRequirements() + { + AdvancedIdentityProfile advancedIdentityProfileRequirements = IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); + + SessionSpecification sessionSpec = + new SessionSpecificationBuilder() + .WithAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements) + .Build(); + + Assert.AreEqual(advancedIdentityProfileRequirements, sessionSpec.AdvancedIdentityProfileRequirements); + } [TestMethod] public void ShouldNotImplicitlySetAValueForIdentityProfileRequirements() diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs index b3dd26bc..6dfedc94 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs @@ -78,12 +78,35 @@ public void ShouldBuildWithChipDataIgnore() { RequestedTextExtractionTask task = new RequestedTextExtractionTaskBuilder() - .WithManualCheckAlways() + .WithManualCheckFallback() .WithChipDataIgnore() .Build(); - Assert.AreEqual("ALWAYS", task.Config.ManualCheck); + Assert.AreEqual("FALLBACK", task.Config.ManualCheck); Assert.AreEqual("IGNORE", task.Config.ChipData); } + + [TestMethod] + public void ShouldBuildWithCreateExpandedDocumentFields() + { + RequestedTextExtractionTask task = + new RequestedTextExtractionTaskBuilder() + .WithManualCheckFallback() + .WithCreateExpandedDocumentFields() + .Build(); + + Assert.AreEqual(true, task.Config.CreateExpandedDocumentFields); + } + + [TestMethod] + public void ShouldBuildWithouthCreateExpandedDocumentFields() + { + RequestedTextExtractionTask task = + new RequestedTextExtractionTaskBuilder() + .WithManualCheckFallback() + .Build(); + + Assert.AreEqual(false, task.Config.CreateExpandedDocumentFields); + } } } \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/GetSessionResultTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/GetSessionResultTests.cs index 8f73dafc..bdf2cb56 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/GetSessionResultTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/GetSessionResultTests.cs @@ -4,6 +4,8 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; using Yoti.Auth.DocScan.Session.Retrieve; +using Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile; +using Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfilePreview; using Yoti.Auth.DocScan.Session.Retrieve.Check; using Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview; @@ -346,6 +348,21 @@ public void CheckIdentityProfilePreviewResponseIsParsed() AssertMediaValuesCorrect(identityProfilePreviewResponse.media, response.Media, typeof(MediaResponse)); } + + [TestMethod] + public void CheckAdvancedIdentityProfilePreviewResponseIsParsed() + { + dynamic advancedIdentityProfilePreviewResponse = new + { + media = GetMediaResponse() + }; + + string json = JsonConvert.SerializeObject(advancedIdentityProfilePreviewResponse); + AdvancedIdentityProfilePreviewResponse response = + JsonConvert.DeserializeObject(json); + + AssertMediaValuesCorrect(advancedIdentityProfilePreviewResponse.media, response.Media, typeof(MediaResponse)); + } private void AssertMediaValuesCorrect(dynamic originalData, MediaResponse response, Type requiredType) { diff --git a/test/Yoti.Auth.Tests/ShareUrl/Policy/DynamicPolicyBuilderTests.cs b/test/Yoti.Auth.Tests/ShareUrl/Policy/DynamicPolicyBuilderTests.cs index 8d4f87c1..d65f4d1b 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/Policy/DynamicPolicyBuilderTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/Policy/DynamicPolicyBuilderTests.cs @@ -325,5 +325,18 @@ public void ShouldBuildWithIdentityProfileRequirements() Assert.AreEqual(identityProfileRequirements, result.IdentityProfileRequirements); } + + [TestMethod] + public void ShouldBuildWithAdvancedIdentityProfileRequirements() + { + object advancedIdentityProfileRequirements = + IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); + + DynamicPolicy result = new DynamicPolicyBuilder() + .WithAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements) + .Build(); + + Assert.AreEqual(advancedIdentityProfileRequirements, result.AdvancedIdentityProfileRequirements); + } } } \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/TestData/GetSessionResultWithAdvancedIdentityProfile.json b/test/Yoti.Auth.Tests/TestData/GetSessionResultWithAdvancedIdentityProfile.json new file mode 100644 index 00000000..80791cd9 --- /dev/null +++ b/test/Yoti.Auth.Tests/TestData/GetSessionResultWithAdvancedIdentityProfile.json @@ -0,0 +1,42 @@ +{ + "session_id": "a1746488-efcc-4c59-bd28-f849dcb933a2", + "client_session_token_ttl": 599, + "user_tracking_id": "user-tracking-id", + "biometric_consent": "2022-03-29T11:39:08.473Z", + "state": "COMPLETED", + "client_session_token": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "advanced_identity_profile": { + "subject_id": "someStringHere", + "result": "DONE", + "failure_reason": { + "reason_code": "MANDATORY_DOCUMENT_COULD_NOT_BE_PROVIDED" + }, + "identity_profile_report": { + "compliance": [{ + "trust_framework": "UK_TFIDA", + "schemes_compliance": [{ + "scheme": { + "type": "DBS", + "objective": "STANDARD" + }, + "requirements_met": true, + "requirements_not_met_info": "some string here" + }] + }], + "media": { + "id": "c69ff2db-6caf-4e74-8386-037711bbc8d7", + "type": "IMAGE", + "created": "2022-03-29T11:39:24Z", + "last_updated": "2022-03-29T11:39:24Z" + } + } + }, + "advanced_identity_profile_preview": { + "media": { + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "type": "IMAGE", + "created": "2021-06-11T11:39:24Z", + "last_updated": "2021-06-11T11:39:24Z" + } + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs b/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs index 5d81d7a7..033a042f 100644 --- a/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs +++ b/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs @@ -1,4 +1,7 @@ -namespace Yoti.Auth.Tests.TestData +using System.Collections.Generic; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.Tests.TestData { internal static class IdentityProfiles { @@ -22,5 +25,42 @@ public static object CreateStandardSubject() subject_id = "some_subject_id_string" }; } + + public static AdvancedIdentityProfile CreateStandardAdvancedIdentityProfileRequirements() + { + AdvancedIdentityProfile data = new AdvancedIdentityProfile + { + profiles = new List + { + new Yoti.Auth.DocScan.Session.Create.Profile + { + trust_framework = "UK_TFIDA", + schemes = new List + { + new Scheme + { + label = "LB912", + type = "RTW" + } + } + }, + new Yoti.Auth.DocScan.Session.Create.Profile + { + trust_framework = "YOTI_GLOBAL", + schemes = new List + { + new Scheme + { + label = "LB321", + type = "IDENTITY", + objective = "AL_L1" + } + } + } + } + }; + + return data; + } } } diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index cc28ada4..828d95d6 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net6.0 Yoti.Auth.Tests Yoti.Auth.Tests true @@ -67,5 +67,8 @@ PreserveNewest + + PreserveNewest + \ No newline at end of file From 657ba6093c19569274f9ced06170ea2285e04357 Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Wed, 14 Feb 2024 17:37:37 +0300 Subject: [PATCH 08/50] Yoti.Auth version string update (#452) --- src/Yoti.Auth/Yoti.Auth.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index 36c5346e..85bf58f8 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -19,7 +19,7 @@ False latest true - 3.14.0 + 3.15.0 From 8330968d96c8906cb121c4f100810810e76339b4 Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Tue, 14 May 2024 22:49:18 +0300 Subject: [PATCH 09/50] Release/3.16.0 (#465) * SDK-2238:Create Session * Update azure-pipelines.yml * SDK-2245: Retrieve Session * Sdk 2252:Create QR code * SDK-2252:Updated validation rule * SDK-2252:removed net 2.1 support for security issues * Sdk 2257:Retrieve QR code * IN-5590: Update support link (#437) * Sdk 2363: net check for and add optional attribute configuration to sdk (#458) * Bump Google.Protobuf from 3.21.3 to 3.22.0 (#425) * Bump Microsoft.CodeAnalysis.CSharp.Workspaces, Microsoft.CodeAnalysis.Common and Microsoft.CodeAnalysis.CSharp (#460) Updates `Microsoft.CodeAnalysis.CSharp.Workspaces` from 4.2.0 to 4.9.2 Updates `Microsoft.CodeAnalysis.Common` from 4.2.0 to 4.9.2 Updates `Microsoft.CodeAnalysis.CSharp` from 4.2.0 to 4.9.2 * Bump Microsoft.VisualStudio.Azure.Containers.Tools.Targets (#459) * Bumps Microsoft.VisualStudio.Azure.Containers.Tools.Targets from 1.16.1 to 1.20.1. * SDK-2264:Retrieve Receipt, updated Newtonsoft.Json 13.0.3 * SDK-2416:Add support for advanced identity profiles to Share V2 and examples --- README.md | 2 +- azure-pipelines.yml | 2 +- src/Examples/Aml/AmlExample/AmlExample.csproj | 2 +- .../DigitalIdentity/.dockerignore | 25 ++ .../DigitalIdentity/.env.example | 2 + .../AdvancedIdentityShareController.cs | 94 ++++ .../Controllers/HomeController.cs | 91 ++++ .../Controllers/SuccessController.cs | 163 +++++++ .../DigitalIdentityExample.csproj | 55 +++ .../DigitalIdentity/Dockerfile | 20 + .../DigitalIdentity/GlobalSuppressions.cs | 9 + .../Models/DisplayAttribute.cs | 62 +++ .../Models/DisplayAttributes.cs | 28 ++ .../DigitalIdentity/Program.cs | 17 + .../Properties/launchSettings.json | 26 ++ .../DigitalIdentity/DigitalIdentity/README.md | 21 + .../DigitalIdentity/Startup.cs | 87 ++++ .../AdvancedIdentityShare.cshtml | 92 ++++ .../Views/Home/DigitalIdentity.cshtml | 92 ++++ .../Views/Success/Error.cshtml | 19 + .../Views/Success/SuccessResult.cshtml | 172 +++++++ .../DigitalIdentity/Views/Web.config | 43 ++ .../appsettings.Development.json | 9 + .../DigitalIdentity/appsettings.json | 8 + .../DigitalIdentity/docker-compose.dcproj | 18 + .../docker-compose.override.yml | 18 + .../DigitalIdentity/docker-compose.yml | 8 + .../https/DigitalIdentityExample.pfx | Bin 0 -> 2700 bytes .../wwwroot/static/assets/app-store-badge.png | Bin 0 -> 4077 bytes .../static/assets/app-store-badge@2x.png | Bin 0 -> 8819 bytes .../wwwroot/static/assets/company-logo.jpg | Bin 0 -> 4682 bytes .../static/assets/google-play-badge.png | Bin 0 -> 4957 bytes .../static/assets/google-play-badge@2x.png | Bin 0 -> 11267 bytes .../wwwroot/static/assets/icons/address.svg | 3 + .../wwwroot/static/assets/icons/calendar.svg | 5 + .../static/assets/icons/chevron-down-grey.svg | 7 + .../wwwroot/static/assets/icons/document.svg | 3 + .../wwwroot/static/assets/icons/email.svg | 14 + .../wwwroot/static/assets/icons/gender.svg | 5 + .../static/assets/icons/nationality.svg | 3 + .../wwwroot/static/assets/icons/phone.svg | 3 + .../wwwroot/static/assets/icons/profile.svg | 3 + .../wwwroot/static/assets/icons/verified.svg | 6 + .../wwwroot/static/assets/logo.png | Bin 0 -> 2988 bytes .../wwwroot/static/assets/logo@2x.png | Bin 0 -> 5609 bytes .../DigitalIdentity/wwwroot/static/index.css | 152 +++++++ .../wwwroot/static/profile.css | 420 ++++++++++++++++++ .../CoreExample/Controllers/HomeController.cs | 3 +- .../Profile/CoreExample/CoreExample.csproj | 8 +- src/Yoti.Auth.sln | 7 + src/Yoti.Auth/Constants/Api.cs | 3 + src/Yoti.Auth/Conversion.cs | 2 +- src/Yoti.Auth/CryptoEngine.cs | 66 ++- .../DigitalIdentity/CreateQrResult.cs | 18 + .../DigitalIdentity/DigitalIdentityService.cs | 371 ++++++++++++++++ .../Extensions/BaseExtension.cs | 27 ++ .../Extensions/DeviceLocation.cs | 63 +++ .../DigitalIdentity/Extensions/Extension.cs | 33 ++ .../Extensions/ExtensionBuilder.cs | 25 ++ .../Extensions/LocationConstraintContent.cs | 24 + .../LocationConstraintExtensionBuilder.cs | 66 +++ .../Extensions/ThirdPartyAttributeContent.cs | 31 ++ .../ThirdPartyAttributeExtensionBuilder.cs | 67 +++ .../TransactionalFlowExtensionBuilder.cs | 25 ++ .../DigitalIdentity/GetQrCodeResult.cs | 32 ++ src/Yoti.Auth/DigitalIdentity/GetReceipt.cs | 46 ++ .../DigitalIdentity/GetSessionResult.cs | 48 ++ .../Policy/AdvancedIdentityProfile.cs | 30 ++ .../DigitalIdentity/Policy/Constraint.cs | 16 + .../DigitalIdentity/Policy/Notification.cs | 18 + .../DigitalIdentity/Policy/Policy.cs | 113 +++++ .../DigitalIdentity/Policy/PolicyBuilder.cs | 178 ++++++++ .../Policy/PreferredSources.cs | 20 + .../Policy/SourceConstraint.cs | 18 + .../Policy/SourceConstraintBuilder.cs | 72 +++ .../DigitalIdentity/Policy/WantedAnchor.cs | 19 + .../Policy/WantedAnchorBuilder.cs | 37 ++ .../DigitalIdentity/Policy/WantedAttribute.cs | 34 ++ .../Policy/WantedAttributeBuilder.cs | 69 +++ src/Yoti.Auth/DigitalIdentity/QrRequest.cs | 40 ++ .../DigitalIdentity/QrRequestBuilder.cs | 39 ++ .../DigitalIdentity/ReceiptItemKeyResponse.cs | 16 + .../DigitalIdentity/ShareSessionRequest.cs | 83 ++++ .../ShareSessionRequestBuilder.cs | 77 ++++ .../DigitalIdentity/ShareSessionResult.cs | 24 + .../DigitalIdentity/SharedReceiptResponse.cs | 29 ++ src/Yoti.Auth/DigitalIdentityClient.cs | 114 +++++ src/Yoti.Auth/DigitalIdentityClientEngine.cs | 43 ++ src/Yoti.Auth/DocScan/DocScanService.cs | 5 + .../Exceptions/DigitalIdentityException.cs | 22 + .../ShareUrl/Policy/DynamicPolicyBuilder.cs | 3 +- .../ShareUrl/Policy/WantedAttribute.cs | 8 +- .../ShareUrl/Policy/WantedAttributeBuilder.cs | 11 +- src/Yoti.Auth/Yoti.Auth.csproj | 42 +- .../Yoti.Auth.Tests.Common.csproj | 4 +- test/Yoti.Auth.Tests/CryptoEngineTests.cs | 63 ++- .../DigitalIdentityServiceTests.cs | 208 +++++++++ .../Extensions/ExtensionBuilderTests.cs | 25 ++ ...LocationConstraintExtensionBuilderTests.cs | 100 +++++ ...hirdPartyAttributeExtensionBuilderTests.cs | 132 ++++++ .../TransactionalFlowExtensionBuilderTests.cs | 44 ++ .../Policy/DynamicPolicyBuilderTests.cs | 345 ++++++++++++++ .../Policy/WantedAttributeBuilderTests.cs | 166 +++++++ .../Policy/WantedAttributeMatcher.cs | 41 ++ .../DigitalIdentity/QrRequestBuilderTests.cs | 30 ++ .../ShareSessionRequestBuilderTests.cs | 72 +++ .../DigitalIdentityClientEngineTests.cs | 106 +++++ .../DigitalIdentityClientTests.cs | 158 +++++++ .../DigitalIdentityExceptionTests.cs | 36 ++ .../ShareUrl/DynamicScenarioBuilderTests.cs | 3 +- .../Policy/WantedAttributeBuilderTests.cs | 7 +- .../TestData/DigitalIdentity.json | 52 +++ .../TestData/DynamicPolicy.json | 11 +- .../TestData/IdentityProfiles.cs | 53 ++- test/Yoti.Auth.Tests/TestTools/CreateQr.cs | 15 + .../Yoti.Auth.Tests/TestTools/ShareSession.cs | 27 ++ test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 9 +- 117 files changed, 5614 insertions(+), 47 deletions(-) create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/.dockerignore create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/.env.example create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Dockerfile create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/GlobalSuppressions.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttribute.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Program.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/README.md create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Views/AdvancedIdentityShare/AdvancedIdentityShare.cshtml create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/Error.cshtml create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Views/Web.config create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/appsettings.Development.json create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/appsettings.json create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.dcproj create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.override.yml create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.yml create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/https/DigitalIdentityExample.pfx create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/app-store-badge.png create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/app-store-badge@2x.png create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/company-logo.jpg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/google-play-badge.png create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/google-play-badge@2x.png create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/address.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/calendar.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/chevron-down-grey.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/document.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/email.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/gender.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/nationality.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/phone.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/profile.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/verified.svg create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/logo.png create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/logo@2x.png create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/index.css create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/profile.css create mode 100644 src/Yoti.Auth/DigitalIdentity/CreateQrResult.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/BaseExtension.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/DeviceLocation.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/Extension.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/ExtensionBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintContent.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintExtensionBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeContent.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/GetQrCodeResult.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/GetReceipt.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/GetSessionResult.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/AdvancedIdentityProfile.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/Constraint.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/Policy.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/PolicyBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/PreferredSources.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraint.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraintBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchor.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchorBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/WantedAttribute.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/WantedAttributeBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/QrRequest.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/QrRequestBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ReceiptItemKeyResponse.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSessionRequest.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs create mode 100644 src/Yoti.Auth/DigitalIdentityClient.cs create mode 100644 src/Yoti.Auth/DigitalIdentityClientEngine.cs create mode 100644 src/Yoti.Auth/Exceptions/DigitalIdentityException.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ExtensionBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeMatcher.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/QrRequestBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionRequestBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentityExceptionTests.cs create mode 100644 test/Yoti.Auth.Tests/TestData/DigitalIdentity.json create mode 100644 test/Yoti.Auth.Tests/TestTools/CreateQr.cs create mode 100644 test/Yoti.Auth.Tests/TestTools/ShareSession.cs diff --git a/README.md b/README.md index 64354c12..0a165086 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ The Yoti SDK can be used for the following products, follow the links for more i ## Support -For any questions or support please email [clientsupport@yoti.com](mailto:clientsupport@yoti.com). +For any questions or support please contact us here: https://support.yoti.com Please provide the following to get you up and working as quickly as possible: * Computer type diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d9282ce8..7c3f24ea 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -36,7 +36,7 @@ steps: extraProperties: | sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk - sonar.exclusions = src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll + sonar.exclusions = src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll,src/Yoti.Auth/DigitalIdentity/** displayName: SonarCloud Prepare Analysis - task: NuGetToolInstaller@1 diff --git a/src/Examples/Aml/AmlExample/AmlExample.csproj b/src/Examples/Aml/AmlExample/AmlExample.csproj index f96d7c36..ab68935f 100644 --- a/src/Examples/Aml/AmlExample/AmlExample.csproj +++ b/src/Examples/Aml/AmlExample/AmlExample.csproj @@ -12,7 +12,7 @@ - + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/.dockerignore b/src/Examples/DigitalIdentity/DigitalIdentity/.dockerignore new file mode 100644 index 00000000..e7b690f1 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/.env.example b/src/Examples/DigitalIdentity/DigitalIdentity/.env.example new file mode 100644 index 00000000..e8d11ad0 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/.env.example @@ -0,0 +1,2 @@ +YOTI_CLIENT_SDK_ID=yourClientSdkId +YOTI_KEY_FILE_PATH=yourKeyFilePath diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs new file mode 100644 index 00000000..b6cf7f5b --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs @@ -0,0 +1,94 @@ +using System; +using System.IO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Yoti.Auth; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace DigitalIdentityExample.Controllers +{ + public class AdvancedIdentityShareController : Controller + { + private readonly string _clientSdkId; + private readonly ILogger _logger; + public AdvancedIdentityShareController(ILogger logger) + { + _logger = logger; + + _clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); + _logger.LogInformation(string.Format("Yoti Client SDK ID='{0}'", _clientSdkId)); + } + + // GET: /advanced-identity-share + [Route("advanced-identity-share")] + public IActionResult DigitalIdentity() + { + try + { + string yotiKeyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); + _logger.LogInformation( + string.Format( + "yotiKeyFilePath='{0}'", + yotiKeyFilePath)); + + StreamReader privateKeyStream = System.IO.File.OpenText(yotiKeyFilePath); + + var yotiClient = new DigitalIdentityClient(_clientSdkId, privateKeyStream); + + string advancedIdentityProfileJson = @" + { + ""profiles"": [ + { + ""trust_framework"": ""YOTI_GLOBAL"", + ""schemes"": [ + { + ""label"": ""identity-AL-L1"", + ""type"": ""IDENTITY"", + ""objective"": ""AL_L1"", + + }, + { + ""label"": ""identity-AL-M1"", + ""type"": ""IDENTITY"", + ""objective"": ""AL_M1"", + + } + ] + } + ] + + }"; + + var advancedIdentityProfile = JsonConvert.DeserializeObject(advancedIdentityProfileJson); + + var policy = new PolicyBuilder() + .WithAdvancedIdentityProfileRequirements(advancedIdentityProfile) + .Build(); + + var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) + .WithRedirectUri("https:/www.yoti.com") + .Build(); + + var SessionResult = yotiClient.CreateShareSession(sessionReq); + + var sharedReceiptResponse = new SharedReceiptResponse(); + ViewBag.YotiClientSdkId = _clientSdkId; + ViewBag.sessionID = SessionResult.Id; + + return View("AdvancedIdentityShare", sharedReceiptResponse); + } + catch (Exception e) + { + _logger.LogError( + exception: e, + message: e.Message); + + TempData["Error"] = e.Message; + TempData["InnerException"] = e.InnerException?.Message; + return RedirectToAction("Error", "Success"); + } + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs new file mode 100644 index 00000000..9099ec63 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -0,0 +1,91 @@ +using System; +using System.IO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Yoti.Auth; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace DigitalIdentityExample.Controllers +{ + public class HomeController : Controller + { + private readonly string _clientSdkId; + private readonly ILogger _logger; + public HomeController(ILogger logger) + { + _logger = logger; + + _clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); + _logger.LogInformation(string.Format("Yoti Client SDK ID='{0}'", _clientSdkId)); + } + + // GET: /generate-share + [Route("generate-share")] + public IActionResult DigitalIdentity() + { + try + { + string yotiKeyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); + _logger.LogInformation( + string.Format( + "yotiKeyFilePath='{0}'", + yotiKeyFilePath)); + + StreamReader privateKeyStream = System.IO.File.OpenText(yotiKeyFilePath); + + var yotiClient = new DigitalIdentityClient(_clientSdkId, privateKeyStream); + + var givenNamesWantedAttribute = new WantedAttributeBuilder() + .WithName("given_names") + .WithOptional(false) + .Build(); + + var policy = new PolicyBuilder() + .WithWantedAttribute(givenNamesWantedAttribute) + .WithFullName() + .WithEmail() + .WithPhoneNumber() + .WithSelfie() + .WithAgeOver(18) + .WithNationality() + .WithGender() + .WithDocumentDetails() + .WithDocumentImages() + .Build(); + + var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) + .WithNotification(new Notification + { + Headers = { }, + Url = "https://example.com/webhook", + Method = "POST", + VerifyTls = true + + }) + .WithRedirectUri("https:/www.yoti.com").WithSubject(new + { + subject_id = "some_subject_id_string" + }).Build(); + + var SessionResult = yotiClient.CreateShareSession(sessionReq); + + var sharedReceiptResponse = new SharedReceiptResponse(); + ViewBag.YotiClientSdkId = _clientSdkId; + ViewBag.sessionID = SessionResult.Id; + + return View("DigitalIdentity", sharedReceiptResponse); + } + catch (Exception e) + { + _logger.LogError( + exception: e, + message: e.Message); + + TempData["Error"] = e.Message; + TempData["InnerException"] = e.InnerException?.Message; + return RedirectToAction("Error", "Success"); + } + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs new file mode 100644 index 00000000..aeac61a2 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs @@ -0,0 +1,163 @@ +using System; +using System.IO; +using DigitalIdentity.Models; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Yoti.Auth; +using Yoti.Auth.Attribute; +using Yoti.Auth.Document; +using Yoti.Auth.Images; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using Newtonsoft.Json.Linq; + +namespace DigitalIdentityExample.Controllers +{ + public class SuccessController : Controller + { + private readonly string _clientSdkId; + private readonly ILogger _logger; + public SuccessController(ILogger logger) + { + _logger = logger; + + _clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); + _logger.LogInformation(string.Format("Yoti Client SDK ID='{0}'", _clientSdkId)); + } + public ActionResult Error() + { + return View(); + } + [Route("receipt-info")] + // GET: receipt-info?ReceiptID + public IActionResult ReceiptInfo(string ReceiptID) + { + try + { + string yotiKeyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); + _logger.LogInformation( + string.Format( + "yotiKeyFilePath='{0}'", + yotiKeyFilePath)); + + StreamReader privateKeyStream = System.IO.File.OpenText(yotiKeyFilePath); + + var yotiClient = new DigitalIdentityClient(_clientSdkId, privateKeyStream); + + var ReceiptResult = yotiClient.GetShareReceipt(ReceiptID); + + DisplayAttributes displayAttributes = CreateDisplayAttributes(ReceiptResult.UserContent.UserProfile.AttributeCollection); + if (ReceiptResult.UserContent.UserProfile.FullName != null) + { + displayAttributes.FullName = ReceiptResult.UserContent.UserProfile.FullName.GetValue(); + } + + YotiAttribute selfie = ReceiptResult.UserContent.UserProfile.Selfie; + if (ReceiptResult.UserContent.UserProfile.Selfie != null) + { + displayAttributes.Base64Selfie = selfie.GetValue().GetBase64URI(); + } + ViewBag.YotiClientSdkId = _clientSdkId; + + return View("SuccessResult", displayAttributes); + } + catch (Exception e) + { + _logger.LogError( + exception: e, + message: e.Message); + + TempData["Error"] = e.Message; + TempData["InnerException"] = e.InnerException?.Message; + return RedirectToAction("Error", "Success"); + } + } + + private static DisplayAttributes CreateDisplayAttributes(ReadOnlyCollection attributes) + { + var displayAttributes = new DisplayAttributes(); + + foreach (var yotiAttribute in attributes) + { + switch (yotiAttribute.GetName()) + { + case Yoti.Auth.Constants.UserProfile.FullNameAttribute: + // Do nothing - we are displaying this already + break; + + case Yoti.Auth.Constants.UserProfile.GivenNamesAttribute: + AddDisplayAttribute("Given name", "yoti-icon-profile", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.FamilyNameAttribute: + AddDisplayAttribute("Family name", "yoti-icon-profile", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.NationalityAttribute: + AddDisplayAttribute("Nationality", "yoti-icon-nationality", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.PostalAddressAttribute: + AddDisplayAttribute("Postal Address", "yoti-icon-address", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.StructuredPostalAddressAttribute: + AddDisplayAttribute>("Structured Postal Address", "yoti-icon-address", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.PhoneNumberAttribute: + AddDisplayAttribute("Mobile number", "yoti-icon-phone", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.EmailAddressAttribute: + AddDisplayAttribute("Email address", "yoti-icon-email", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.DateOfBirthAttribute: + AddDisplayAttribute("Date of birth", "yoti-icon-calendar", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.SelfieAttribute: + // Do nothing - we already display the selfie + break; + + case Yoti.Auth.Constants.UserProfile.GenderAttribute: + AddDisplayAttribute("Gender", "yoti-icon-gender", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.DocumentDetailsAttribute: + AddDisplayAttribute("Document Details", "yoti-icon-profile", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.DocumentImagesAttribute: + AddDisplayAttribute>("Document Images", "yoti-icon-profile", yotiAttribute, displayAttributes); + break; + + case Yoti.Auth.Constants.UserProfile.IdentityProfileReportAttribute: + AddDisplayAttribute>("Identity Profile Report", "yoti-icon-profile", yotiAttribute, displayAttributes); + break; + + default: + if (yotiAttribute is YotiAttribute stringAttribute) + { + if (stringAttribute.GetName().Contains(":")) + { + displayAttributes.Add(new DisplayAttribute("Age Verification/", "Age verified", "yoti-icon-verified", stringAttribute.GetAnchors(), stringAttribute.GetValue())); + break; + } + + AddDisplayAttribute(stringAttribute.GetName(), "yoti-icon-profile", yotiAttribute, displayAttributes); + } + break; + } + } + + return displayAttributes; + } + private static void AddDisplayAttribute(string name, string icon, BaseAttribute baseAttribute, DisplayAttributes displayAttributes) + { + if (baseAttribute is YotiAttribute yotiAttribute) + displayAttributes.Add(name, icon, yotiAttribute.GetAnchors(), yotiAttribute.GetValue()); + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj new file mode 100644 index 00000000..b24d78cf --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj @@ -0,0 +1,55 @@ + + + + net6.0 + Linux + 9c82fa55-c27e-4405-8983-72662528e16f + ..\..\docker-compose.dcproj + ..\..\.. + DigitalIdentityExample + DigitalIdentityExample + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + + + + + + + <_ContentIncludedByDefault Remove="Pages\Success\SuccessResult.cshtml" /> + + \ No newline at end of file diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Dockerfile b/src/Examples/DigitalIdentity/DigitalIdentity/Dockerfile new file mode 100644 index 00000000..bfd9c663 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Dockerfile @@ -0,0 +1,20 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base + +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj Examples/DigitalIdentity/DigitalIdentity/ +COPY Yoti.Auth/Yoti.Auth.csproj Yoti.Auth/ +COPY . . +WORKDIR /src/Examples/DigitalIdentity/DigitalIdentity + +FROM build AS publish +RUN dotnet publish DigitalIdentityExample.csproj -c Release -r linux-x64 -o /app -p:TargetFrameworks=netcoreapp6.0 -f netcoreapp6.0 + +FROM base AS final +WORKDIR /app +COPY --from=publish /app . +ENTRYPOINT ["dotnet", "./DigitalIdentityExample.dll"] diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/GlobalSuppressions.cs b/src/Examples/DigitalIdentity/DigitalIdentity/GlobalSuppressions.cs new file mode 100644 index 00000000..87fc554a --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/GlobalSuppressions.cs @@ -0,0 +1,9 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Auto-generated", Scope = "member", Target = "~M:DigitalIdentityExample.Startup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Auto-generated", Scope = "member", Target = "~M:DigitalIdentityExample.Startup.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IHostingEnvironment)")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "We want to show all errors here to aid debugging", Scope = "member", Target = "~M:DigitalIdentityExample.Controllers.AccountController.Connect(System.String)~Microsoft.AspNetCore.Mvc.ActionResult")] +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "We want to show all errors here to aid debugging", Scope = "member", Target = "~M:DigitalIdentityExample.Controllers.HomeController.DynamicScenario~Microsoft.AspNetCore.Mvc.IActionResult")] diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttribute.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttribute.cs new file mode 100644 index 00000000..6625d295 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttribute.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; +using Yoti.Auth.Anchors; + +namespace DigitalIdentity.Models +{ + public class DisplayAttribute + { + private readonly string _displayName; + private readonly string _preValue; + private readonly string _icon; + private readonly List _anchors; + private readonly object _value; + + public DisplayAttribute(string displayName, string icon, List anchors, object value) + { + _displayName = displayName; + _preValue = ""; + _icon = icon; + _anchors = anchors; + _value = value; + } + + public DisplayAttribute(string preValue, string displayName, string icon, List anchors, object value) + { + _displayName = displayName; + _preValue = preValue; + _icon = icon; + _anchors = anchors; + _value = value; + } + + public string GetDisplayName() + { + return _displayName; + } + + public string GetPreValue() + { + return _preValue; + } + + public string GetIcon() + { + return _icon; + } + + public List GetAnchors() + { + return _anchors; + } + + public string GetDisplayValue() + { + return _preValue + _value.ToString(); + } + + public object GetValue() + { + return _value; + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs new file mode 100644 index 00000000..417d3e7e --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs @@ -0,0 +1,28 @@ +using System.Collections.Generic; +using Yoti.Auth.Anchors; + +namespace DigitalIdentity.Models +{ + public class DisplayAttributes + { + public List AttributeList { get; internal set; } + public string Base64Selfie { get; internal set; } + public string FullName { get; internal set; } + + internal DisplayAttributes() + { + AttributeList = new List(); + } + + internal void Add(DisplayAttribute displayAttribute) + { + AttributeList.Add(displayAttribute); + } + + internal void Add(string displayName, string icon, List anchors, object value) + { + DisplayAttribute displayAttribute = new DisplayAttribute(displayName, icon, anchors, value); + AttributeList.Add(displayAttribute); + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Program.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Program.cs new file mode 100644 index 00000000..2e32c9ab --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Program.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; + +namespace CoreExample +{ + public static class Program + { + public static void Main(string[] args) + { + CreateWebHostBuilder(args).Build().Run(); + } + + public static IWebHostBuilder CreateWebHostBuilder(string[] args) => + WebHost.CreateDefaultBuilder(args) + .UseStartup(); + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json b/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json new file mode 100644 index 00000000..cb95eb61 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json @@ -0,0 +1,26 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:55000", + "sslPort": 44380 + } + }, + "profiles": { + "CoreExample": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:44344;http://localhost:44343", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", + "environmentVariables": {} + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/README.md b/src/Examples/DigitalIdentity/DigitalIdentity/README.md new file mode 100644 index 00000000..64b310ce --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/README.md @@ -0,0 +1,21 @@ +# .NET Core Example project + +## 1) Setup +1) Clone this repo +1) Navigate to this folder +1) Rename the [.env.example](.env.example) file to `.env` +1) Fill in the environment variables in this file with the ones specific to your application, generated in the [Yoti Hub](https://hub.yoti.com) when you create (and then publish) your application + +## 2a) Running With Docker +1) From the Yoti Hub, set the application domain to `localhost:44380` +1) `docker-compose build --no-cache` +1) `docker-compose up` +1) Navigate to + +>If you encounter a "permission denied" error when trying to access the mounted .pem file, try disabling and re-enabling your shared drive in Docker settings. + +## 2b) Running With .NET Core installed locally +1) From the Yoti Hub, set the application domain to `localhost:44344` +1) Download the .NET SDK for your operating system from step no.1 on ([Windows](https://www.microsoft.com/net/learn/get-started/windows) | [Linux](https://www.microsoft.com/net/learn/get-started/linux/rhel) | [MacOS](https://www.microsoft.com/net/learn/get-started/macos)) +1) Enter `dotnet run -p DigitalIdentityExample.csproj` into the terminal +1) Navigate to the page specified in the terminal window, which should be diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs new file mode 100644 index 00000000..04dd3919 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs @@ -0,0 +1,87 @@ +using System.IO; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +namespace CoreExample +{ + public class Startup + { + public Startup(IConfiguration configuration, ILogger logger) + { + Configuration = configuration; + if (File.Exists(".env")) + { + logger.LogInformation("using environment variables from .env file"); + DotNetEnv.Env.Load(); + } + if (string.IsNullOrEmpty(System.Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"))) + logger.LogCritical("'YOTI_CLIENT_SDK_ID' environment variable not found. " + + "Either pass these in the .env file, or as a standard environment variable."); + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.Configure(options => + { + // This lambda determines whether user consent for non-essential cookies is needed + // for a given request. + options.CheckConsentNeeded = context => true; + options.MinimumSameSitePolicy = SameSiteMode.None; + }); + + services.AddMvc() + .AddSessionStateTempDataProvider(); + services.AddMemoryCache(); + services.AddDistributedMemoryCache(); + services.AddSession(options => + { + options.Cookie.IsEssential = true; + }); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Home/Error"); + app.UseHsts(); + } + + app.UseRouting(); + app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseSession(); + app.UseCookiePolicy(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}"); + }); + app.Use(async (context, next) => + { + if (context.Request.Path == "/") + { + context.Response.Redirect("/generate-share"); + return; + } + + await next(); + }); + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/AdvancedIdentityShare/AdvancedIdentityShare.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/AdvancedIdentityShare/AdvancedIdentityShare.cshtml new file mode 100644 index 00000000..fe627f05 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/AdvancedIdentityShare/AdvancedIdentityShare.cshtml @@ -0,0 +1,92 @@ +@{ + ViewData["Title"] = "Advanced Identity Share"; +} +@model Yoti.Auth.DigitalIdentity.SharedReceiptResponse + + + + + + + + Yoti Digital Identity Client Example + + + + + + +
+
+
+ Yoti +
+ +

Advanced Identity Share Example

+ +
+
+
+ +
+ +
+

The Yoti app is free to download and use:

+ +
+ + Download on the App Store + + + + get it on Google Play + +
+
+
+ + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml new file mode 100644 index 00000000..841d32ac --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -0,0 +1,92 @@ +@{ + ViewData["Title"] = "Digital Identity"; +} +@model Yoti.Auth.DigitalIdentity.SharedReceiptResponse + + + + + + + + Yoti Digital Identity Client Example + + + + + + +
+
+
+ Yoti +
+ +

Digital Identity Share Example

+ +
+
+
+ +
+ +
+

The Yoti app is free to download and use:

+ +
+ + Download on the App Store + + + + get it on Google Play + +
+
+
+ + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/Error.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/Error.cshtml new file mode 100644 index 00000000..9cd2d459 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/Error.cshtml @@ -0,0 +1,19 @@ +@{ + ViewData["Title"] = "Error"; +} + + + + Welcome + + +

Home

+

+ Could not login user for the following reason: @TempData["Error"] +

+

Inner exception:

+

+ @TempData["InnerException"] +

+ + \ No newline at end of file diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml new file mode 100644 index 00000000..a27d3c40 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml @@ -0,0 +1,172 @@ +@{ + ViewData["Title"] = "Connect"; +} +@using System.Globalization; +@using Newtonsoft.Json +@using Newtonsoft.Json.Linq; +@using Yoti.Auth.Document; +@using Yoti.Auth.Images; +@model DigitalIdentity.Models.DisplayAttributes + + + + + + Yoti client example + + + + +
+
+ +
+ Powered by + Yoti +
+ +
+ @if (!string.IsNullOrEmpty(Model.Base64Selfie)) + { +
+ Yoti + + +
+ } + +
+ @Model.FullName +
+
+
+ +
+ + +
+
Attribute
+
Value
+
Anchors
+
+ +
+
+
S / V
+
Value
+
Sub type
+
+
+ +
+ @foreach (DigitalIdentity.Models.DisplayAttribute a in Model.AttributeList) + { +
+
+
+ + @a.GetDisplayName() +
+
+ +
+
+ @switch (a.GetDisplayName()) + { + case "Structured Postal Address": + + @foreach (var item in (Dictionary)a.GetValue()) + { + + + + + } +
@item.Key@item.Value
+ break; + + case "Identity Profile Report": + + @foreach (var item in (Dictionary)a.GetValue()) + { + + + + + + } +
+ @item.Key
+
+                                                            @Html.Raw(@item.Value.ToString(Formatting.Indented))
+                                                        
+
+ break; + + case "Document Details": + { + DocumentDetails documentDetailsValue = (DocumentDetails)a.GetValue(); + + + + + + + + + + + + + + + + + + + + + +
Type@documentDetailsValue.DocumentType
Issuing Country@documentDetailsValue.IssuingCountry
Issuing Authority@documentDetailsValue.IssuingAuthority
Document Number@documentDetailsValue.DocumentNumber
Expiration Date@documentDetailsValue.ExpirationDate.ToString()
+ } + break; + + case "Document Images": + foreach (var image in (List)a.GetValue()) + { + + } + break; + + default: + @a.GetDisplayValue() + break; + } +
+
+ +
+
S / V
+
Value
+
Sub type
+ + @foreach (var source in a.GetAnchors().Where(s => s.GetAnchorType() == Yoti.Auth.Anchors.AnchorType.SOURCE)) + { +
Source
+
@string.Join(", ", source.GetValue())
+
@source.GetSubType()
+ } + @foreach (var verifier in a.GetAnchors().Where(v => v.GetAnchorType() == Yoti.Auth.Anchors.AnchorType.VERIFIER)) + { +
Verifier
+
@string.Join(", ", verifier.GetValue())
+
@verifier.GetSubType()
+ } +
+
+ } +
+
+
+ + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Web.config b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Web.config new file mode 100644 index 00000000..9bc7eab3 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Web.config @@ -0,0 +1,43 @@ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/appsettings.Development.json b/src/Examples/DigitalIdentity/DigitalIdentity/appsettings.Development.json new file mode 100644 index 00000000..e203e940 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Debug", + "System": "Information", + "Microsoft": "Information" + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/appsettings.json b/src/Examples/DigitalIdentity/DigitalIdentity/appsettings.json new file mode 100644 index 00000000..def9159a --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/appsettings.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.dcproj b/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.dcproj new file mode 100644 index 00000000..86377fe6 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.dcproj @@ -0,0 +1,18 @@ + + + + 2.1 + Linux + 85f77b23-0b47-448a-a498-fc0aa1a7b46a + LaunchBrowser + {Scheme}://localhost:{ServicePort} + digitalidentity + + + + docker-compose.yml + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.override.yml b/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.override.yml new file mode 100644 index 00000000..701f4c3f --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.override.yml @@ -0,0 +1,18 @@ +version: '3.4' + +services: + digitalidentityexample: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=https://+:443;http://+:80 + - ASPNETCORE_HTTPS_PORT=44380 + - YOTI_SCENARIO_ID=${YOTI_SCENARIO_ID} + - YOTI_CLIENT_SDK_ID=${YOTI_CLIENT_SDK_ID} + - YOTI_KEY_FILE_PATH=/YotiKey.pem + - ASPNETCORE_Kestrel__Certificates__Default__Password=b0a3e118-0420-4e3c-920c-c2623296ffbf + - ASPNETCORE_Kestrel__Certificates__Default__Path=https/DigitalIdentityExample.pfx + ports: + - "55000:80" + - "44380:443" + volumes: + - ${YOTI_KEY_FILE_PATH}:/YotiKey.pem diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.yml b/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.yml new file mode 100644 index 00000000..11d8ff63 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/docker-compose.yml @@ -0,0 +1,8 @@ +version: '3.4' + +services: + digitalidentityexample: + image: ${DOCKER_REGISTRY-}digitalidentityexample + build: + context: ../../../ + dockerfile: Examples/DigitalIdentity/DigitalIdentity/Dockerfile diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/https/DigitalIdentityExample.pfx b/src/Examples/DigitalIdentity/DigitalIdentity/https/DigitalIdentityExample.pfx new file mode 100644 index 0000000000000000000000000000000000000000..f1b4fc482e7af7424ba205fa425b226ccbb04705 GIT binary patch literal 2700 zcmZXUcU05a7KMKyAwU932}&^(rAVCw1f+UdP79L4yz=-5-`szZ@?=H}MdXo3zihQ6>SWx*y48Ogb+0jpB%t zOF#J(7!DM_9KuK9xaA0xjnATd!kfH)qLhCroP@!1tiR8&h&v-ftSDQq`qQ= za(9l?(_YMgD`T`Q^;IItKIn_uCNDfLYzI-X$7pZ(Pi*QO$TX{&aWgJXzL@?Yr z&ACJ{&h~DNu@!0$z9l;pFO)rP<-*XZ=bj}x@o=0xj}%~6e?2MUe_UDdG+lP_lEw%A z%JKf-B|~gv{C>2ReEWdu<4Et>ncy+=*6_vg zYJrq{m2!cKm^U$Zf0k-VR>$~^UUN5|Cnp>G5A)xsZeM$HrC)IW@b!l>3efqEGh2kE zgJ;UAyxrCqWwKtc=Xjelk3?;T6Y_$tFQb0amOaczu+Ugv_||49-xu&6|2I9oYW&pU zzzqjG6+WvsaNy;tIk$(ofbYPXGL!Kbv9UNRV|y^yQTXIYg2eP&+%~xoaVFG4J${Gl ztZ9e0x{YvNHYY<|^($FkB1CDwjx9g@{Ul%Hhn45%4!v%QP0te4jBjB1MbKd`zHPhT*)Dj zxt?!ZMBDcJ$;noTIrFY_O#Ys5P?5#(07>G&FSBW9%q6efNTa7EE5+7R+bgaw(-!Ei zioiAKbTVTcOntL4QYm7e%^Kl-h{W;dk7QPw8)4NL49Eke^IaGz(O7D#pT;O3%sc3BhIhW{6~s7kTv+XYaWf0=f%a` z!ilu7`LmHa1?#$cv3#mKx^Wu~HE<+K zEecd%2lBM0Z)H|QJF%61iecengBQRoa6V@RmXn*S5s4$8+w-W zTt9gxUu?eP8z|VAKr1Bb9lA5d!_&FFpR>hfY@GffbVA)F<~5l#n`RJFjDlg4DNqT8HPnl2kkm|x`rBB zH5`thh1yUGq~Z*g_>n~3BdYq6$ZGn91j*b&)Oq?IoDZU5Q}^L;+DTULs>K2S@$4Tf@}Qqdk!co)K9XI z6dMR&9mszj(ErDLZhWm?*I1vBFV2aJb{#5N74P@fZiaVPZ0;{iXztz> z(Vg3ITH4BvW<)OulfHEWy}b9WibrrX&R4Zj?7G*=Ua`gONb1dK%*%1W+W6bHQ(qdY z23Rod+N+)N<39C)efKi(NcA5V=iS;`c}9yFgX1K%WtG7;DCVo39OXT7dQQ(g)dXkK z;<>vgq+T3zCkn6=*zeLcBhpWHlKlH;dY&H0s>+lSx1=jtz>ONpS}SdHwEDyb(w-80 z%jdT58PskuUCLE?)8uBWk<5Fae4>J*E3~LX+QF(`#9yq0R&-&AX+4k^8iC&ztK2>e zvv_#*@v=J+o{L(JpY#j5Z1QBY+FM3wM-Dfe*#;aV4^!0YPn}MWd|Fc=K0jQgsWsJV zV5oL{qd-Nv-Yvo-IMrYW`yROUo|`$J#!1QYKcm{^ zC9>7>XRaIV>}zR;zC_aNZ!}p%Fz@Yh2mgofwTfE6yx3Th;ZIr5Mwh!=Str^iW@6t} zQP9wK9kNiRn&~KlUUl^OkOmH?Qmv^Uen=?3E5pXXS!~bMf}t^XG;!%<)Q?zo!>FSR zH?BqfP;z1OxAlsZW?%DPucN1>Hc)t*984PcA60YuBpr>IUrFvJ0$p{{VO&q6ttAbq z{Mb6Lt+m<0MX#TA0OhS1H9JE%xi}tW++UGtC zUFEEoOh>2VE!?eZlx@i&xWVce9TO25pFeMG#v6WBu_C7{jb{vg;tJgE!>B#nhv@A%H$TnxE z`ZXKdQsad+ogg|Mj{`$m``9-E!01n+v?00btMH!pOxeso%IMJ+#Tze&rY*aCf_dmST#7c3kM=yPIu*xyjvC~*`A zlwIKvm`wzN_~A@VYMT{&eDs-Uf!nTP>8*?>1PDUB;8c1G|Cae<0{c@{v1i%49Xr8) H1;&2>#y8Wj literal 0 HcmV?d00001 diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/app-store-badge.png b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/app-store-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec996cc6288d68279c1d735c9d627c64d8a48c6 GIT binary patch literal 4077 zcmVPx^r%6OXRCodHoClB;`CE6}@@ zbT~+!4mo#RbXTl^t$>GL7J>giBe41An=j}26y5zFu0UIetjS@= z9d~rkKmWY@;fEh`8GEIbR&u-Ux~toN|NY%oTW#eQS!9u1`mNN-S!bQ4V^*qHP5HX( zuIui-_ugu%=2GX@TW@unZn|kMeO2nDNr|jgt5$C4(4p?}#~*h+d-ilc{q$2M{HiKH z>ZqgK)mLBbHrs47chX5Gxk-~IxkC>uY*}1r~6ncHez>*REZ=&_0=H)25AsOVf6qdFBbl^Ugc3Zh)P4-q|g<;DRBa z#0DE|pg1qQ@WLhe$&Zy+URm)6XM@(QTWi1I#Js6f4jAK>TW)bX?X;6)9e@@sTIl?? z-g;}d`R1Ezp8Ww|2!8wRw|AuTfV^!ZW&2xet+o8$fB)?be*5h=zwENhmaQw3sww~S z%P;qL-g#$9n{ngD`D2bbM)UUEb5H-}mtXopg9iC2Q>OSc&pcD}2MieCpL^~(O_TTi z_uqRVEH8xO-+%vo%|GFU6a4t`(_f5R73oP* zr?ww7ZGC>=7*09ml&r{y_T`9d?|Spjv;29d__DXU_D(1^g$L@1bpA06;R#+yBRwiB-7gjqEGoFbD9F0pXv4rFO)?06B9pO}Ayf}dpv*@CW2K=7H!S8&|)ddg>`XTJDGAhp7`EJUODD&*;{W;QpX(fIAt(r+c~t^7Asgtt_uktJ(ppb;pXc})F=B+WZ{_v!2RY~T z(@*yz6o>u<`>N9%m(!+A^TMt4$hrIOyS;F)&|Wx`|LUu+R3;MQ3vvl#h>)&mh|sU~ zk&Td_Y<%z?J$iKbmJQ)W_1EwCxRf7I<+fK}eO2W?(RM={+H;gKZ}7CS4m|KcJ+5UF zc;TXY4BEKynzC5uLoi;XS@L6b~g+jU2vo{;h@C6U+D>+B%Q!d=M-oC8Q zD&Ezzh94)<_47(Smio9U( z;K6mw9%=fmHsdIY86<1XA4dxU%72Jz2z8Gv@jfTK~ z)N!hvDURsexELKt6hbOIWX($2;Yo-=oY*Dh$@)$Cjdq8YT@JA7o4cwhacY9G(sMFV zg$2L-084rvfD;_R;ER=A+%`2ER`b9k*#{9Q_uqfN6ZewhhEWzT1lD}4?Ql2@#|DHi ziHj&WzVSHB&5&xRpL*)4IVAF1bYGy$J8Y z?Gu9-G1Wx_2gRp|i-z|2?(hK;R5@kJl(>nyrbOX!61|{hn{2X)21&w&L~+qJF*k}E zTSyUk;#G)?>ZEtuZMWb{q!8|mn-2F9uCW-z>8;^Hgz(_QWbXJPV}PS~@7~=_pFZ7* z1>cEb*opIAIs7xvJQJ$IRdJ0G8iebOv1)a%h0YR*RJ#O^ex5+c3f6MLE%k%j29StV z?E}LuVBt7%-?)YV#w9JstA5)b!e+#OSAxsaPd}~2csK~pNdn(HcEh8sQZ^8gManvSp%JfalR?_Wbi%{u}Ysd`4gs4#e$}6u_e26VewwK)+aQ*JP z?>zp)lTSWbeSgG-8JM4v_QYNR5G00UacpaB7k)tl2r)U9eLwctV^&T5oPGNA2`(Y4 z!yDxVU#7u1=bWP($HIcBLs$}k!a!Uc{!NJ2AoiU~aDZkrPu2o)0+Uhy{{0nK2oIMZ z>xURbC=($+_)CHF&p*H3ImLL_lg>tDIK=aYx8Hu-OY~>WlOpI2h-EMd#}4R8m~=^> z#CI7GpcuQdh#RwA&5vn|2PZKg{>$=tDU&r-c7T%w7o772k#}n9P&kAmRvjRY9R-31A(z-Fz)TzZk@!L zceEC!2aKkGEV#ZAtdsF_5@8zz`bw8eh+#v(=HiP5Q=WbH*{WFR02TgNoWJ21SI2Zi zEFEBX98iV~P+DR@2{2$@C_?tc7kw~tr-e*Giv+?+=&s{}NM69iu>RKqT+ooP6>UPW zAWstTP!J(&!HRKtl3*wk4i>5;%Z=DVg?|#(rdpd8mtVNTM}#igEgRvbmtIPCTj!fi z1&9D&r;H3aDmCAT%id%Px79NHgGOn9MxLCjl@TbJ7BUeTgI;&tb?(R`k5sidEfR4% zkqcDSj`J#|F}MN}cvt5hBqj$_!}$>j$xZ_1j3gL0Vk3!`T2fpt!W52&0TmD}uB3iL zA4JF!QVmxlB)b}*f6NkwW88+2ZsR&c1XltJ-KL%>95vxysqeVF(ZidzMSiTk8Ih4s_%ezQ<`NVKBlP-A7+kYMW91eUF>`33+@LaI<~m#) ziHaG)fK5P{I5>klTB>Qkm?XHZL>}SX5FWtQJez;4T_%Z)I{o_fv!VQuAw$$|$Q3_q zp$8v)aLF22pEbPmBQgeMCnSL#1t;MS9~z)7PF#-#CIGSq#6w-~TLKMfq^Rr$W*dr$ zZ20iuC3ixp3qdATdLuFjqnx7~Q-~-D0k?QQ7(VL*?2YBzY8ZE8h>fS1XJUI^T#xz0 zA>-ni2*u@y3_Q_@>kE$;8M*A7;`ud@PVZKdPV0cMYA1Fj4Q1il7BZ4prClsEBD-)i z2RTZP0Vg|A<+`+5DmQqzz9oj-I`~)yvWb`^^a`5XH?ZvR=C(N+E$$rLO5E7tc9k5J zp-!AYj-u}I#~<%dD7bBfJLkq5Z&b}Ju4`%jZw7+?cH3>IG7|v?xUX<`F*X`q68Qff z+@umt<-}Iy0Fl0~fe7$+-dpQ@&PGp&=&PL`Fri}uZ91u_|9o5vCr zv&^~zneAj*5%{m#izKYK*BQS)17s36jGUsqIc#SIRKEiF8<0f`C|01cR$wy6Vd}*k zn_>mV${=0gWYgs7CQrf9WDyF;Wd%?shso1Ro>~7!v(4$7Sd%XD-U|N%-&FVw!KnL!00000NkvXXu0mjfVQU1@ literal 0 HcmV?d00001 diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/app-store-badge@2x.png b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/app-store-badge@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..84b34068fc22aa74f388f6db1a583ac6592f5420 GIT binary patch literal 8819 zcmXY11yoeu^CtwPMd=g?0YMs(F3AO?JC{_tq(d5(&K2nvBp0L?cIoa;>8_>gzkYxJ zGv~bb&O2xBotgXIy)&QBM1EG0!^fe-K|w*mSCE%cM?pd5K|UKk$3$KaRX-XaZ>X;7 za#AQ2!_>PdC~r6vWF$2`Q4ce*@2xd%dg2O=qTeV`=6+I(Q8!DDBsD1OSS^$(`V{?H z);45(OUs5$sX#XICB?ubAi2nr{Zne*=aa>hf_7l#>#5h-p#Xji|8&fSNm+~dB+kMtJ3J2N!;+SG~2W{F42 zs2UEtR@@EI}$!1_PufBa|7i_fN%AiIm#JQ%MqULuA06^3?rLSxE6-{i^U z^nY%n$_1sES`g}cjwfXyat?j=JoDN$^V<70N_ksvYyL*P`(giQX}aa&wwIRm_`=Y>G0XImejb7B#9$55#2 zgV5gy2D^m{=;Q5hoqZnUY5A(n`tEY7(%+r!!u~Wlt(W#RLN0whPJH>G?e3^hwMYE% zG)~>nfT*mzCh8+%RQl`K)5cqIZo2zbtf5dcW8Dl+Cb0(Ac0jOmz;@<0F`MVyh3*z{ z{)qgco9%2mOLLL6>_o7N`&)fi8pVw&@nNCq1 z*y&;BaxJfl|s7{g91MAjw5kTRLJ@BVJ(sos)6XyLO9^jw-$!;F8y1}It}R)@)NQmW!E+J zKMAJWaKCa59ye-Iu3ZbG((k$>(J?gJzuPzYy`8GAW#G_QIOl(NIHZw%tJxeMEOl3q zq{1^ElX}(^!BIa8Q*7O@gtj$a&VL=UEzY#MTOGf9F!4F88!FeUwR-|Dk8RZs3k~?E z!vI$JDm@GuuiN|x@bML zcO0l){IJDmb5e{X}oXTN?s;Cma^gd_V8O5Eh%A0u?f?`dv4zFWn=YfHj?*;D?NJ zozXhRM(8)e-8h7eK#U~Yd6?Z0{|p3ga7?PHPDFgO?QZFKzJSyJG}^0$5hqPF7`y7n zp3_gH^8$w_aKe#w`J@ft`f=;kGGJV%9!?-^A$-&TWXA64MlNu`Fzr=C4@v(dcg@4) z!bs}6<(zf4ACCffuA9p7r;*2;rI%l4qsM7wsYg+0yxly+Hq}hYySELw&&}O)g`{Zf zm&Rvn*fCXY2S;iV#oTtbf3TjZu_J3$Wmk-B9oj~(dd;`Otr zOkh}nsl{#-r)Za)3D8wc_mc7i`NxV)xUs1Qa|=EnlKVvtKDgzXbDT48nH9_8pVo!* z=)4qv*i|JPzxO?&Rp>zFY>M7~B7T<*07n zZom1g|J}K#6Ks}Ro#ZhofCD#@mJrOo(?>y1PiV$4P54ICklx#mS%itn=Pc6l)8 zC2}2ah&sQqzODCk=onCIn_*wCM?W<3A?&V8LuC$nvz0;R$05@!xPxnrz=(aT@?F=B z3q=Tj#n)nM5G+8Onas%GbL>9~McEM?#rPN>V(F+y^XU&}4sd+Hl&`LK?XdptX`N~m zZ1yH^H`F```SQUBv7`Yun(+h}rtGz}YZvtrv{pfPY zdQ|(5nJDylQ(vhFcI>4aqTPyOfd~;A5;h=Q<*}p-bn`Rq5gBljs@TV3EHfKv>Z&nW zDm}{iK!56`=lOEy9luLH6lR#z_dR?fGqM;p6B;GvCcFcNxRtWo3G9qqJCR`ynMVlV z`x$0%Z6-gk_yXH=ZhGa!%qw+oEh2rod9%zi*jkgv5aY||=0ccc8g@^Yf1pFnJ<&nx zRIiUK10KExr-;&_`2CJye0#o5_cY74V-~@(fZD?XCmUvdJjPP;q|5mTLS?=wkrVA# z{nZj)ipI`Z)lT$%-{ksxaBzJ!5FO>%|Qi+jQB zjz-_)eXN4C{@SZN=!oID6b;lFk=Rx_ewkQ3&J6e{+l`BI^5(3DcgkGh<4=b=1%#w? zE%gW)rNV)0_MM?Iz8?^q&Ne1(PMOIlEUjfDXr0`2PprKcnLJ$S$!@ki&Qn^}a>WEE zbcmFa)ne@i-v5<`ejCqAKDW9>>@w97&5%Lq093YgfeMjHo~9w(5>it7GHk&?@O$6q z#oGS*2gXg3Uq2Bhb@54h|B({F1EaDZf`7!lTy(4ZbsW691(p}LElyaQr7UPuOWr-6 z;Ef{XD^J1-J}Q`*d3nce_rsI5juJR5xDG;l1w5&-CCwxZR>4`*&(w!+#qd#eSK6KU z!Ks!_PmviwHkXc(yB2Ek#J;I?Sjgt;Xex4V@@@uaR8@*k;N%XN+gBN)_y}S-uqlw2 z5>kC!MW?$C9E+-K-Nq6UEW0)a4v~EK@?ED|sgktY@vUT&uN7oPk$M2fP@lz3_*C;+ z=&lx=_+2f{90^irx56umho-_57jK&^kA1g=4_z9PK{ru2N{i)>)b5jN9({(LCFSr! zvuFl}F2J}R^O*5^#q)HY9gLbX-f~Ez%liG54oCHILe0Dbr8UVo$Nm%2+J1zK+(Hjd zB6;8;dA-F(Qh}v?TZBcITGLM(J?^`ouV)=^9z5I=B|(t*t+P{+z*)sNWk3{r=bM{K z{W?ZvT)dles}$wIj%g0og=r>CgA%1dArm!{;1MpO>+2qI2c1fOjv7l?eeK!aIO5E} zJKLq7by`+&Jd5KzT>L&au*WgLbL1R8_-qy2icA(pbR&~rE_FX3qd%yda52#Om!z`F z_Fm+sPxXC4bsGLg@iW`k9u>O9wLpMYRmhS_)c-XH64R0jf!2duP}>FoOXM8rk0jok7h63<-*+W4w>tQ&OLGg26QaW zkDO4#Q8c*fN=RoN7EqJC72VhZppg3B=u7_cS?ZtU`PiFaAf$qNi#$CF<=djOTqy`n zcGnZqvF3Vl8fRARxVPFL`#r&yOvXVB&B5-5TI>EpR^=6k)wDfL|T79yrX zfw7#=5c=1&KzahoH81;I(>U~W3j_vJQ6)J9^<$^Z_}KfPFfjEzkj^^d=^ za_k+x;6LB)Bhvvbgf9jxnsE?Yc#jzrC&rlBqkr_OVn)Mh`F z4-5h9m54n*YrJ;g7GzGeQM4tg21?C*piIskuK#rmE0xHT$ZMZv8J+*dL}gQFCte?W z8U4H`S~o#>ebj%T`2Jtf3e0a$oMyjUc{utO_d6~4wYjUExq0yC_bCd*A%WX6+6#LJr*C#W?Y~;~>~ju@rFceNGmdUx z_%iOi!@JZ|-JI}1Cc&nbXG1I~G|nXv{;5Lef0 zRq8QYuX5k)ZZ45p^h9F;fo->ywY~i>j)k%#Ea|3tf6KFH8MX#0@-V4%(Z)0LguVe; zH}UP@Anhbb+#z|V3%QIAY8;i3PdfFE8U_#HuAxt}l=z{~AVfz%JU%}v%uEDx^wI0N z(XQ$jxlJr6O|Y&n^c%@f@!|@IDlMnW)ljv-u6(twThuFzDvji~B+b|@bl+D+#v6Y) zs1IMcPcsJe^ZMdI@))8U$!Ps&Fw4fSM!9tH;T)k!P$8@UL8?wo8TBqFBGt2bMm?%b zcfCCfp)R_I9l2>QhGnjk*dV#*)I@(VNStV0ltNpdBfe7i=jIKHZA zpkZ{2@jF`|hraP6gI(9XR2Ft^ME9bxR}sC?{Fd?L$_z}KU-U3YCv5`uyS&-OTye`q zm!8r7iRBW{DYqTTIyL?(z-wp1_j%l^>qXI1b&JyBPA_8ftVg2wh*0FDeO^*zIH(Vo zVqCGz;bty2)+twR#JRpYx@-GW_NM~<1tm;>miLek4$gCOXfmVdO z-=E9gIlMFwix;)tJ@oA~qp02~YgM24v&J=*iQ{+{4VJ}z(n7UtM&5+&;Iw(6%t@KO zqd(=scAY8BCotSY4y=Uh_BBRNMj8wW+}K&FLMfkFK|VkB1emx%P4aB+bCIg1iE`N~ z_Pyh89rz>Fo}q_-7E5klOfN*$KnFm0-})N*2*97@8`Q$N1O2ATjI|`-UP&mJ&Ho~d zYb$Trpyhz}^F5Q1X;wu89525l1$aj9>RghqZA~W{1siqKPGo|h(&YYGI0X2b6 zQotgws>P!7eU@+x&4<7At9dk6J7Uy62i2EVK=Jo2+b9+`OivG~YVBMoc&^SGLkYg) z(WHx7;qDD5N6p6$^>bEKWRQmKk!(k}FQ`DE`mOoebOzxofJXTE#tocGY)|+Ql0*|; z_Pbs`3qaAGM;$w_(a$$DJTc!=`r}(H`y;Z_A=JXl#Br4frj;+7i4{K5&5P8K%HJR3 ztBv1IK3t4EXEuLzL;89cRds5y!uJX=W}_W?@Ldh!u-7m-l=v0;_}BwZB1o_ z&I{;F$%$aKBX9-rfB#CFXmZQ*$!Dwn3XkT2l>LhHQ~{i=4f2jaZrmNDY+K^vCc4Zo zb|X5=hdsu6B*h4fBByw}8$6O9ZogbZb~gML%F-HUE+xmc&8j+$wb^Gg@MyhgPs{2- zk?R|a2_~VPQ7GH*oB#$SZB8H1ib;aj&jvUvORA}taOFrGc1Z_PSY^i*n0ISxhO{n- z!~wG1V{S(_%{J2S-cX?Pkd@kr%Rz3cY{v2ciJC>|cK18?V%@!h%$yz;=Ef{8(hov8 zMKwn5ZZzup!XQ9#%Z4?M?9O;3i?N7TmHpBnOR#Kol`5WnclNB`!AfiHm!~rH5F85uw}qgz!jvXzUeYQvVD2XEGPBzC_jX}vMh9&^AuJ>=pM z>c$;+A3e1OgP3|A1IhX5O+D5KpEKfqdtE*dEwi~@+O!SoVQYU>#Hdr{Hvn^;B$ z@b_?Oy2xlW!f8Bo={ZrwD!9F4=qp5JyGtjNP-oMB^P=_K2C4|{7NFS*h6oCf!+eQd zydk>&WPcVMno0J)p{g)ge_1;VeJXi2Iur6j_+C3|n=1o97>G=xQv|sb-QSkoksLH` zXQf!eJes($R=dfAOgIx?j61MoHVBzN1@rI})zklUpVq5;km@2rOXTt{ud>f2K1c)3 zM~*q_c86LI{n)hrbJcoz>T*&`NbPX2M|B?H0|JES-SX`qL^-F`9>j zO;xvO0t<5J%>JTz0fgg!U{Bc$P4-hmt-Op#J>w>E_#SNQ_FVqER#Wb;`X5xt+mM6G0^Z1QEn;f?c?QlF4|GCAwt zLl~9Nqrc{w7z9#8AYv{k-7B^ABM{-lU)sgU8l!AO97XTUxkHAvZ0Hwnv4(Zm z7M|PZoY(5MTJv!yCs+|tq%LA@gJTcz9RCpe3$2>0W!C{6l)w~3p}c@I1)TjA8ZQ!S zO$WP}F`<)9fzfC71#%y~4qUUR8f9Z>-b^*XGht$lUfA(55xl86O`&9RN|j_$UNhc` zV2Itp8bIZ^|= zwa=>8D~C8I@Aj;VB|!bfxI{98beNOrJ_;NKnuH?v_lQnC03Kr*Us-qj^jm^o*9XO%+_oUwxO#s?`Bu|@1#dXDOT_8L ztA8BGm^N4bZxzvjB-G;<%7JnCJ*7A8X$C$l4<$Q(8q@%|#g{;pHb6{8OzM*Mas zKm787N;}Ey#rkN>*m8Wr>EAOgJ2YQ4Fy&1Shpcx0#rob6kW+~rdQe?{MPe-K`MefZS{+Q*!cT%*O>5A=RZ5Lt@8{k?C50eu?Q)1!KRtoI4u3<>I+ zO}3k*+m<-QJ0sdJ>a?ng*D@#tQbo>&=g$v1Mo}C!&G5LK>v&?@YL^(F;orA8h2I^N z951XqdO%{+CE0IIOVnmeK*m7X!n>np$5KNQ0z4I;wbA6TE#jQv30Yk_ZA7B!m(y!Y zu1CBe0eM*DG||FRU=KcY_=Gm!@DdajXmG?;NoU3I%~K4;y%SXMv7al1xtYJcIL=C! z510X7NhMhM^L37n0Wd||`Z7h1x}$qu_fD25d?xC}iNz@4`}(GkcH9@WVU^}Qp6>BO z`ja(A$OPh3+>6j96{fiS!usj8)$%^_q!L(%zq}y|e<4=J@+s{bTcNTA9(cE>NKhxi zQRW9nVbtSh^A{Po_j=lNkyacF=T0W|U8iVhV)JT;)vn_j6IHBTmWePCJ9G-XC z^1R#X)%^Ks$^Ko$L{m@i4p+D>1Y4e`wZ0VZyu;9Yx3KW2-_Lyoonh-1gAm8epe!Bq z_1WE#sX)U|$?n=)$lOIU8H6Oh`S00-ViL{Nykn^-fUBFrIt*2}<4(J_D8 z75P_7tlMes6>yj!O=Me0o#gR!=ew))PFI+J+R6iOk*O5@YA#wBeQ2BI2^ZHb`;=@t zKio9}&rHcZn1MOvgQZ2X_*Obl@j606Xfr<$!BU%yR}`+wU++f~aDO_z0(Skmdn>f{ zRu8y4^kGa(%K02jV-)6JU z1L6HqTssX8#Y8;st*TFTaOcZ3)o=FUn7U?(FrJ<_iM`I-HDmN?+aT!bJr7=Tfkn|g zb~AmUYVD0l>7-t4LPGp$mvy1nVH5-@_mfK-fwQ_)RpB_2v^*f=60RoVZZdJ)_sT&e zTj?*GD()$)f0`ktDhJf%fn5zI6KU=;-T9<*sJ zZuT!%qULr6b(BVRw|(zXF27D^GI8(xD*VbQ%t_99@MV?efNXYqff>^EiE8ar5QVT^ zN*sEH(dDwwFF8LQC^t2rktIAWOo)0X^q0uUB}_@kThfWoxojwpz#oD@ zjov%lJFzX~ZAKDeerL#VvZ-lh*)r2|?-lT}0i7`vn)}%4-8fZl{EJfk4NhIY^U+Pv zsaK-6{Qav=W&0Tun(}b5PuuZe?g9SZG7)H$V2tNeE@~p#_)fq(my+t$Z6+|ELqL%{ z`wOKxv`xs)qFgb4u*)|dpSi^QSs%$SWyOSQ+;VZz50~ahug0K-`&)Q)SEK0uA^)0&uGcd zw(h}ChG63-5C%Xahi+k6(3)i3_+YkS7Ch03C?dTgt-N( zq&n9>O8!jkHFr(l)u4LxKVBUThf$XF1>=7lJ2M@|ONI>J5%xO4e`+}rZ|@T@>=iqR zG*HMSbF*vG-)%2A$ulx2Q{8G9}sQ*Z^o8%f+ZW+uu1seE8<@9Wwg=j-Wh5I30l z(Imhe|39UieBuVx!yozk&t}B36P7A_UEPd|aQp1=jj;c9BD};%jk7ezCDqAR#NViv&gC MlZs4*lPCscyWU2PMP1t zz5I@yb@e?jt|hLv6AkqOJ%D6kS$^Qb3O^_g6pEDBO9&%d5`BbJYkj|(Fp$d47=faSw3D?uRPHLR$0DAYPEHzzmt|2?1=fR_WD0*gq5 z1YqGsAbAl`6%d0-q7YvOSRDu!7$X}y$2v48{6YSDz=A*`Sy++FsNt_K!SjHX7qwx_ zE?u^b7RT5nys*13$E0#d?tN0hXW2@X+H>4HWF4AcKu~DY)@|FRWn>kVlvPyK)b;l1 z8{iF%jI9nHvbH&FYj@)0sngCbu4jCF{RsX6=P!i*9u^+)$Cb#~xa&9K6B2JGrKM+N zX5GDa|H0E|dHDr}e-{fZT27f-2BId zPm9aE5CFMC3x2N<`-vAX%!`GU70JrJ%nQNd4-1l)6}4p-+Xh_=_G4ZfC3aut!0wGn zeNwSba*rjI@3?m>nqNwhyp^_0?F+O2j9AEj#q2AwZ@hW{7ZL$G56KH~U z^q{Z*Owx@TZ@iAl~1j2~U5YRRChXA_(j^Q9i&7Fe4m`n}?1}X0$a5d*nBpAh!o!&yA#mWH! z71hlU5Wq9!KI0bAZsiNAMG&A&-c1WuBQ4m>6Y1D4BGt-B(Pe zfvYa?{oV$v>VI*7gSHD6(eShVesV#VnSsl9K3?14|L}2C3%g|CpvmF0cVmrnfIzn+1kV|Z76;vE_!5C0%Ml1e`4WL3EmC?_GS6psyMBz1 zPf$5m;X^R)t(FXKi|LS_c47IzcVNcu@#C_*XGJC9!X;1jOL+!0GyHlqC^>#9ERoW% z$VocVJg$*_@o(}q+~EDrnTm4_=you%h+O?sF50rK3=2-9j0x+H6Ul+K(Yu`PP2e`Y znOj{for0vL{n=rT(8qq09#}8BCz%lnhuCBs1SD-8VZAXMD~a>m1rTU8u`5nsgnIm& zNgcj2F$mOZ9D=~(=MZ3C*YcfPq5s1H{6c+vd0YF4Y7E+llFWtcZfdlvs2+(*fAISD z<%K~~m5q~Or7Zql3Wlw<)J-|nXL}XrlG?Pwhzs3az?3_rEqU(Rowvs;wQushvt5{} zQdcg?><)N{&wCbnFs`nk`0?%9`#Vma!&^QHjilz zm3B2ktsc|vF^8`FvrkVvd4HFN56#DlKZw^&o_9yC-)GmYCcX(CHRc>bxXLCYt;=bX zFGS^@l+om~NP$^dq@2dBRk8LDZw@-!tD38-&1uPwhEWI1+h#6uDi-qR6mw@&?O9LP zKg(*d8X2Ff2L2cJC&anN=ibxXEYP^=X4;iPS#34&k#EFl9i0;++`kZ7t=?B^7oWBm zRq$l%>xd%(?ZO9T21SX@N>hBJ2?H30J~?;2(?l6phy0dMbE5j>{tj$n)L(t**>w=m zdW>jy>|P+g;J3^DL$dwRRDo_W#l$7#*@O2;WK=BihPNfdm}VW9SxFJGsU)-n5KN;e z!m(ZE2376^`=fK4(Qopocdsx^GTf}Sca%SIJF=je_#toXPjTG9yLWN7&-t`iD|KDI z=$Yg4B*6Jl2R$|Qp5bU|A^!7znv9^m*!7K<;}~Ns(|2i@DwR9Zor+F8WApx5F9khN zjSVB%^pvwld5oIaTSlKsF4W~Vl6##tVlYQ)$ip#PN}P+d2_MKp(I3$+sHsvCWE2GhZ7i}+zy0p{uDDh=(M>*N7j*QFex%50kVcWZYYc8g< zL(zE6fjk7UimBO|&2VLpP&Ad`-b8U89g48b%1AzYbZr<+6{A< zDnMfBk*&zReI^D+RQH`JL!PPAr({Vo&pxkIa_K~?FE?vRiYMzk#S z6swQj5!*+Nef>kTdy@N7L^FKo*0{9SWg?e|yYumZjdOP;9P`ymaT>5I2<)bUIjzKN5$=p@DQ7>18llI-R9ivT*))S$M4v0BL{H zzhypsmd6Y)$;!b#uc6cUBQiH_4{&H;#9P=#_!=0ylT1hvcQ(h{ZZZ;mCDHU=>aX-z zQ)f3P0bd6(tKugnm++Rc4U`E}?T&hpqG^$59f7BVH7;7%XFa58=(I6#C$cZypZ<`0 z>r@8eo}+E==LgTdHQo!}yQoDoF{Fv+^Tc3PI+Jd_YRk_bDY`PmNqQbPpm{B*>nBA?i6-=`7xweRpC&ngMm z2deDqbF#BjjHm9L5Lzl3QgW^$V(AzzlhX-4CR<7iRFp^iwJ3*bfr5Hm%w-*sOMI`+ z5cw3JD<76`YqlycjqOvo)AqWfPKx(&?QSme1$v{ewg`=z6zQ9&B(LtN-g$N~CWJ#( zR(DKy2#fGoeAR22AKNqCukr9ao2ZQW?!pey{M`@I!VaMy>;z*dc`UHdhh+iol(7D3 zk>JsNxE3kTFpF@rN;d|P5WsE^Uw}ZOdm%H@?o9_=sfGO@V4wVHQyrC!NM@xDEQPw4 z(=A(2#0Ut?^1LBV?IJ=T6XT%eBeq=Fg}*QC7vMmR{305yaMc9ao{Tw~6 zBhPMZP!#&DngdujVi6+=FOR(<1y zj6GG)=-uiY%K9Ln-cs19py@!1*q>y&ZBjqdRDvR1)}87h=!}XCAq1OkUhKNJK-w!R z+16i|>#0a>$lm@Wv066TrxIO5Ev&pH#&ss{%;|Xu9O@V*)qQqMKX=NPq}Edws)(p? zxe#75IDo1j9M{}JBnDlPFBMR(edMZMq)PA(a(Z4XIh%`LAd){ZC9I7rP&5WgBlDAOv2g2p&OgDYjr77IkeD=Dt%{AfA0)Oe@p&&ul z$ek9EIZ)Hdeu$zZp3SP4IEM}&tjMs)JRU!Avd zC)5d960t&goZ&Y3Lp_%I){a`RgB?q9!+KQaRl=ygMf8Zj@0f(=7ZvTPRS^|Rq)P$A zxty{Uhc7#R&uZ6%ayMb>7COz;a7UwR7&A{4HC+~jk)K=O(=@dA^1yfjJUUixn|qGMMAwegzS|~Lp&gPAPJaupsTp z#Np@hSBYaM+smou1B@W}05NN69>n33?GX6#59ud`aJRS=Lm5~UQiK2ls{#SBl<}1< z%>MH&>S!*i5coZAZ3*tF<`D?!ZA*raRyYKP=oUKcKj2zM@t$d5s_~8K##J5zUuc-X zpqgP&Gb@;2XTUn`h@;=}Ao3GoyAZ#aPp>8KgQD?i ZenM;Sr^Md!<6%u2&LYxj!8qvczW`OzPx|7fD1xRCodHT?cqnbrPQ>OEw9;1woJ^0xG?T^dePy5kV0Y&_hs9@#Nq{@dRw2 z;;En?AVsA2E?t3y5IUg*2%S)ap_@iBH@`{V-rLO*vP<+5ee?0(*XI4pym`}KAaVv@ zIebdmdTDGmiv}L@z)HbyEbXrFs9aem&0;Q#2KUPY%Y~218Jy;mwgU!RE$t!Wg0;0M zaGw;2lKWdpJLM-oHfgh^RhMRgMS-lMKw;?!(rg|iSu<%HrCDH6Agd{mEFIQ`B>P^P zLw{!VC{}-eX$ruRjDsYDk(ccufByXR{PWLK`SRuI+_`f!XU-hm7AjPTx_9qR0RaKz z8;6s}{w_$5XCcx#-TFJ2Z3VOuBjVCgshWml`!{q zTeN5qMMp2-|t{`>FiwY1x8NfW2@OO`C*0Rskbn>KBD>(;Ft78b_EiWOsFT;8%}3k!2Q;hV?(3-2HO z->WNB$c_LtSgBGa8aZ;LP7nJvYu2RXjg&)f+Z6ATJ~ zO8)xmuL(>Ibqo8?0{0Zi_DqI{w{PD*Wu~{@dW+VrTc-`S6eJO@M@2=^mtTJAeuZ9~ z-M@c7!L}2%sJ0-wfK(J!Nwa6qRz?F8f}!7g?>(9_WeQ!objiVhUJUuCz9ri;8K{p3 z3C|8~`}Xbh$Rm%aK@Vdbo?YF#b!ptVaVp79oH(IQ0q%nubd^Yuc6PfRmldEc!9ZrX zb?cU@KuD^VEnCus3m2$$>(;8CXUv$P-Yo6|K$5LrznJ>iy^wSR83+Gm>SfNX7*sviTJ$h8}j5R|-i8DYOHf$iM#p>0o z)9u^0RT>&N#m}~AS%Z&nf1VOECr%GR+qkhHmcC$Z&a*OUW%L}(j@X&j$OSq@jr$FFh)M`WT;&E z3R20=Lnwd6Dpa>mV=DAu5xRQ(EXCirTHyB$41rK zRHUjM8jDLGKrvBgC@DVS4~DYJgbDY7c9bczgo-< zr)=Z~Q`U36$s4%qveo>_v4#Af=*2wl!gBuCnz3A`LqnGEL6)XjB$K8>-WT$WIbbUl0{(2!+K4V4jnpZKj=$5V@DJ3n8o|$zJ2>T^)2BR#b35; znbY~-bFFUrKI&D1+$Wb0`S|;guQXeL4_&-rr@bfgkWJoH|CBf?U$YFoK6MBUUpSJg zG_ES+-aqu~*N-F@sS*KUim$%e-tU%d9(YZ|LUyi4+sgtSn00>tJpH**5soB0|2 zpf6O9AP|iPNr|eHX_EFb(r@S=ct-PPysWy%WABng!TS39Duc-$`3Rf($+>ek0%-dw zqUIH@lbsS(KGtqgnQAqzMBA5#(}J;!=~%=`ujY-i8U$OR8WHgyIB;M(@jrh2c#X(| z_=tgJM-cg&CDTGF6J9Qu2>?mbYZV9r#>n9!PPl8=E=O=UtH$+q@}4u9j06ehCyd6F zB1|S6Cjb0od-`S|g`D=Gw&i2VZc8CbP9Q%CjJJNi9yM)Woz~9YLi4^@M$xA(WqQ7N z`=tUybA?DRAwiAgwLAF!d(>b4`2n^aQfb$(U)RMRKYpBEc;N+-$`N|-!3Wh|1(Rh2 z$cDhaMPI-E`l|+}Gs3^0Yo0S1B$=p7U%Tu;lBI4mrQ;`3?ZoZev?1DuI+u$fdulZe z`6eZhe?c3)A|a0?siTH7iX?%Hd)z_s;>D>!g9eH#HX}(1kk-86L4pA?k|a=b zQ18G2lSD*BxEmtfIak#S>4vHhFj>)}MbqIMCy?o4lLZxltHa~}O zn@u6yc5^7V4Ux7rlv{>wpea`ZZHpO zSBHb_{uz${=9_N{{h7skV$^xb0-T!I94u;-h3HNV=fs9_;7W3x&!0c9eHlMu+p!cp zIyor97+Sj~s>ndoEynNPzrUkDV;--*`YKDB%L#Ym#*HjxNGuP5CC|$8K=itJfeypJ zh|p20d(|*EZWgbTMeVbcC#4$)<8|!VQBkoDsX}qWsa&}-8*_g9?YH%s6j>_1s82l> z@02CaY7CcdD>j|h+10LH+i^|oU8ixRvY5}FJ*(FxjpnG!Gw9)F>v=tynEa_WnO&rq z^hly6VV8+eOOZ7DCr_TN*I#+%75etuZ*?D127|!Qyi=tYY`UdOmud+U&V$BA*aZax zs8q%}KL7l4ovYD*Mq4LN6~qjW1Bw>qR%_RA`yJb)g>i>n(sqY&$GzLQQ^Ypzd?1`V z9}4F#k=waV)E@rq;4;25=UwJ$Lz!ob6k8zMrSCBRByGL4ZNr(j595lZ3%eZ`m8*d8 z@Nl=+r7A00=cme9TFbL4vhv)k?2pUQL@eb*yW|2$A$@AZp!l z-gqX4Br|Yaw~&;*di8SL=PJpJejr(;gq+*9ZOg(mx^~bPfVBV*b2P#v&6_uO^eGIi zc&ILhwlMn4VC%UggZP3y<|mSj(hPq{GIan{nx#s%WPcl#`1Jf#8BzMNi42?iZImYN%tvS~tnKEfAf7&dH}+E}u3$7xin zqV^v(UP2)K5ajgf)9Qi2`veFBsHDS3D5$o@MEUc%ms~*%4EV|vY%}Cqe541QLnMoY%hG{cPU6Syc)ak1vN1sxSi3E=ER@8}^ zAu%ygBk*7{M8~0S04Q2?1u!fOYs>@c!l+4u(Ht8a>x2$msCRg8u7C$yqC^QjjRy@! z0nCcIO`kqp3m`*6LNZiCa6s_Il`$?M~@R-TKLF{^7IT}re!7W@M_r*ryVTJ8 z+@V{$V=2&{M1kE(($<4#XpAt|s*ro9I#3UWuZDW}?oFajlrRSl9JuTH5GMj7fT_SN z@RR`XC?Opn1_3wJ8z}QVr)QpN$G$i>D5w!>HJiSW5DTUKG_T zUO}MUpLT6JO)m^yK+Oiu%@l(fLt~)`BOn9;BN=a&t3eIb^zp|ZlXzBo8;nxCjgSgZ zjWG24OUbqw@JSntdOS3|)ld-t`ASKRa5F9paxfo^W~dRdVN^vTe+qSC28;t~=gQE) z!Mu%NG5P}Tr=Nc6U@$l-VtZw%F42#n>ad?#C|tO(qC(P|8LUf}E)Gd%?hA~JECK-Y zf|&q`3#Y{s@K}_-<4_ z@6(qGFCRQeWK-M$m`uV*`t2&NL){v7vOD~{orA@k=@wKxn0ubx!Y{_{mlnY~0MBzGWhD9Z=E zPH`{vC+dsw?WQ{rHN_$Y9rJ@Xx^m^pbg1wY#ny9pr|1{oSqd|!!$nL@-gxy=F=r|9 zRvdV)@&}O+Ip=t^nH&QU#tVqUZ2TSFKv*_@2`hAN|7f1TMTq%mWSy>@pbDP&-h! zFwP+fjd&mII@|{%9)CUoP5>m#p+kpUhtOk4ahM8FS+L;@kJc@+oCJ;F)S%1<^9Mj$ z!=pw_4u5_DV?rXs?m~dp+%&fWibUg{%E#=T><@_>{>+>Z~6 z1l!9~`z+!$wWji#2H*0S$NF*Qe5r4%jOi)Y=NNpki8TI&i~%C)=Cz8dQz?e1zt}-e z*UWf1VPEV}7Dq>=oct{kZ`R^PoJ=SKND%|pekqA+4ZTc74kXdOq+_(;CE3kz zek~@FC-n{CFDs7Yrom0v=9AurkO_IzcTU5X(i%pT9e}ME#4IXIkCD$5b)KWwFX0(S zRzpHV-mc{+7}KMhZFvH@`>NUeLGNYUzEF1#vSp1?@98|U3%&$Y8Hr*T>;MUnGX5|N z(l*&;j^54#e_RGd1QM%cs7){X@!as2fhfp7ANeLS-J+W~v_L3;xEPFg82Jcx{uuz- z6NEMpZ}c?qYg+#?kG)IN&DO3(fy_`qYy4Av+svR_I2Hvwr@#_OG9>pxq+#Czivn3m zfh6gywy*qzOZzD+d$#(rD3C^hg|gjmNUw5ofd4Gwk+h4}#-hOeQecmC&`#O~qcRTP zR;`d$S{fJ)63zmP0^U#ng>Cbsy(mrHY(tXCu>z>*?w4l+bkvvYiHeZ^%MHN=BKrYQ zH9>X&0I+n(OTE|dL^#PpgKG3Y4hDFj$*M{82SvPo^#=ddoA<9~5Xm5AmKN;BW=Kp(6z^iHdVGW#!XAWJgPSoyI-jw(! z@GXg2Ej0Z{VI_{0vX-(PU2o@x4*aG-q<^B6jzrq{dC(?9f}AbhZRYVH<6IT>e_AcR z7Ci6Na*i+3jIf@XjmJ$ZpX*HfF=65Xol6dLWhtfF z3Il!b)zlKa=_3}>D9Rqc1XnGj9Q6nERfFXR^CX)FByk*N@$Psg)gC5eGFw6@DE}h@6p;@>qg18n{jS&|NmD!^sle<2t*CTriP$ zv+L^WhK^4CkkD{>z20cdT%I<-m3NmHYt7(QEf$N9!FXbVT1G|``fcv^$9)7UG3|T5 z;VJ?P3l+Kq>Hw8pH7fqZg0fVZ4-XR_ok{I7cXH+*{jN2SuNOYz0d>P}KW|7b7BxiQ z+DTMgf>iwk9Y>goBgz7}O@1H?9aYpzX%;kW)wnsG6sAE2+UT#SW49IL1XS%$BbiC{ zi9@!v2`UL7~M{=GYKGCwZ-pRz0SQPZwR<+2~ zY`p9#B^+po@pEax-r{9MfY4f_6T_hC4t9-&`@_qM)>U}13Z>9_HiAcdi)f6f&kb+3v_MXoW8Q$%tw#RIS>u9{jC1ePo1GL_mZAwPub-iW1r8gX zKm1M|B>qZ5M4tZq+QAF>6KuTaQr)%_^4J|{AczlTC1jtA51&E;=Hl6iD-2hJ9KEyCZ%BqOYB@m#>XNcq0(LbS-|oF?<4NN~42BB9{CHDYP{ppw$0i?0FH!BVT5R5%G$2F%x^2>*-$(0JF z&-XvWDKmu09lH^P=3?Us_J75Re;JEYI``f$qjlaVaBTk`PL2upRrc4ajhcVP{xAeCv3V6!Bi zsK(8j$3}%pHxsA%5I({~U4H?B(Za`ojss-&u7}HSMwUA^-_s+J5Qey&ic~b zs{fhGh999D>dF82e&hKw;Ow}5@+~>BT0SkczV6TE<|L%|jbm^h*-*Nz$J}rVZW-TM z4iXW5c00omD*S`0p1eBO1IS%Jhkt@AHdW*Mm%TRKdPr+-o9wppVt`a>pd8IOpP5Gi zp_;DNIEh{fNS+9KnGB6&UfT)I!=SYE1SBZ2drgMb&Pa+(|HEX!Q<6r#Z7YKT9@)82 zJkYR`u-8e{Q^K`VBvq|2o#@qRs)lGZ(@^2L4hZNY#) z`3u3Z^RHF%M)cXJ7h8>Cb z?WxlJpc(spr@B!SKZ~^>ugfQb$)Pgo1D-;DL;lc=e<+970+-Wc^gOI;v&rXoT2-+D z`?$wGYa98Jwl{^Cl%Cc3ew5Hvf$5__uNO%xMef5tS3jPJq=FJVo$L$~BAD@MR0u)gzLm*FT(-DUODTY~FSXvcEO9 zGfF9G0go)aDOJ#=J6X|IsMQ!s75U845%*4~^|&#-;>owP;$draJm>l+;XlB#9gT#7 zSV!R_-zIu9t)MNh=9Cbmo4}r^#!C8ntZAc3A>)mvEvJ5C!`Za_jj&~e>;AHQ>bNfB zQKw!?HRUqhD0M_~;4X3pH;(GJf1?+6GPX8pPbG2JFW3ZeZ8`jc&(}1&>P9B}LYO;z zJ}1urQR-t!3rchoev97WAMjOljd@z-fr&+xwb+d;PgjzkIV}@m5Vszj`aB>~`AUPe z*#LxF=c_z=WY{MeY#BfeuH}CntqKCNc|FaaCuFnOv$_I0``y9-foIoN{=u`Z}VK0X6{hYB~Hc zW;lQiWVQOS`WRT}0)+|ae1d}pIu1YlI4uo2IieZdeVp431S3o^>pwr;c8$}p!A>o( zIe_n=mXS+xI>$Tua-qa|$d0*sB=_kGdeY1(u!3))7hSL_yCy4LEU!Jd7IRI%#(0eU zm1!cox|Sg*g>=+na9w0rsQE#U-RpdEW^dD9>B*3*hbG!}_D$cPK-QFjI-3gN5M~la z5wyJH7%`~_q~#h9`kwH<c-X8x375V73NI2-CLvp@z7>Q_#Qn`vqlI7J4{bIVT*-FMa2*j}by z^^EvtZXm2JNICr!Pyf@lTm>6>l=>NN!?IrDZ3h5B{?9abV-7;+@}~r*4O7 zqmezC>1Xx=t{ecnWk?pcMN|OOPC5(%yQd6hyLnRtwbTT8Z*TU4P3Gvm0MOca9$TXC z-%#RB8a|ODuZtwMC@wyw>!uf8AxgV^qmr=fR?N|`(@>mZ#08@!xOVB_Shh}Qd4e*J za40!!E5rN~g4?PSffKY1#Q4!j#COq}+Lc-&Jz6Wxsr6Owbi=aTYu@qOdH|YD^jaTlC;v`iiQV-&S z53WgW2&1@0&gw?lnd069MRtQ8v!_-kw6pk% z!1lU9VJ_2}02lGt`t52IpRkx#t&um*J}WIni%yl_rSpM@#3X9KlE_H`#hlB8ycaG% z*DP{TBJOKJRZ?8ele?Gcp6QGQkTcK|LvMWR!%9u&+PPv^ucUktd*|scnUYY3#y6#2 zA@%a>dIkZR(*nPk=@)Q7RsGjsQ9wyU*cq#XSyOLoMTBk6g`&JBd~t%2-^mDRoUVw` zW1m`d=j$ch!eFv_`;4GyL1m^X@vgn z=bz**Z6%n4E(Yji@bR0tT=!M;Qx|0<9IDG-!wOe*w0W3snDsmE(uplYJ>F;*YnE%# zLt!cN*64i`7Ig>~ENQ5Gj++ufTM@J|wV8WU5;}!sduWlr{BD*QmWZt6465U16@4it zx0ggtzvo*oo<~S)WP9xrd)=Qj*K4-*R9)Qrm7TQJ-Cljsc_0c`Uum*GIoMA9ruPB* zf~m!M5JNpYUyjwVGdh^OhfdP<4=fHaaq0OGZQM{l;m2dk=+!}%QO4+O(XQ!u&pmBJ zH_gi6uzU(td@7`zC@%>27gnP;zglWN3t^_rFqq^MokT2-zv3M4&iIZEhkCql9o!ko z)PTz(AZe|nqVS`(!foW0d2~Ms&ISala-H!+@6GU89641n&M7FLzLVNR*;`Vpk|j>N zfFgkF(yYr7V}+=+c7M? zBywC6Y~a-Y#?o(saf*uZIxgTLpR1DqqP{Q4-sMv8)Pikz8Nl$%OHKWvWKW?TZGAY- z|95_J0uXSY^Yoj6@2+H=;eB80<1fnRk_7RJ(2>?kb}qe8KDDd&TBW11y2PV3WfrT8 zajr#13Q4Y%Ol%1?`JmftvK#K>PxD-=We=I1d0AkCRihJA5}*79g=<3I1vYnXiK^?r zQGyYE2>>oYvJ_Zv4)tKQQ=>|>4P0d8()3lhAt#xezKkLyHrMa|h6x1DPJ8}Tv=rNZGzM2 z;g;{1ob=LRH+tktOa@#dJD;}i32>l`VZ^WB$wz&~9vA|VlN7R0ieR#i-|R@jJ~fyCSN2>lwt9K37Mf zL?TWc<)wm6hJv!|nPNr#mgl>3k52z8*qS~hDz>bf}N;K-k zzTbGCrt@VP>Z#U@Jl5P~eye1UnV_BDkA8eIjp+bnsPO)-H5)9tF7g+9PS54%MK&!! zCyk&n%~$R5dy?MSA!C6pqzStpGnPog0IRC6~h?k3-mDqOf)T|Z_w>I zexMat3uDi|PooE?Q&m`gBt2ZH&Y4pC!yEAAYlbChFJrhMouMRK_xyBUY`#NI!(@iE zdmkduI#h=s)A?Reu74J0yutXv{<8(t??VMNtemy!{e zQe+Ufu^TuwCV9H~rQqH%-6KnN;7M~;;zk-C~9E0?qJY>CUd()bb z!_j)i%-W)BY7$Z>Kla+c!Z?pF@iCQbRH*~HbQuh!7EpFvGI8T&+jx@w=-IArBS;w5 z3f}8$tNQ}fFtf{#!HuZ9rDmd;hQBh|Zw~3h-C&Ks=%7jYNmSF<94yL)IrROlh3Te9 zscpD%&e3Na*6$1?rj%qK8vE8QB$Vd5|M)+A#Yj|I>@#R1sx^0NBe^~5tcCTTu}wc( zvPGF^l)-jxIg;lUfmEox0t@C%m`0Wxp9%I_ER#B_)UmJE3u7A`79bqE%D${(KOaX@ z40^4rZsR9W6iFD2cY%~6g=t0^$e>#i^?pwA3=Y4a*&dnz%k%T2!E_ZmCc-|urA3kW z5nmNbNxS_FhFiD(X&It=z}O&j$GQ zD6|-VyRv)`+|zFP10?O#y3Y9#ORhl$^{;4Uh|aqcx_t_G%!tV7QH~A9_6B~x_ZJMY zWyq&kWcK4r<8E_1O4U+2?e{qa_MT>YA2Qu)blh4`;HY4x%}+VdvGp+(FdJ*!A_&(f zK{c;(9oe16DOkw*uMWMA?W3ZdE0&v=Ma328$=Vwm4%TEisJyK6Sh)+187A%)&WRdW z6P`QIbA4;US;&o4MvU;%?-yK8(UV$aqFFu;8b)-)$GnTItV?&p`xiCk-=*S6`5f2A zk?^PGR7nko(W%<@vVFku+f%ucYx*(5kqexp2#LJd1uTcCxn<|M`H2#PlmWg90QxTp z{{X-4oUyOQ}wXx zebk4sallj0@%}{Evr>ixBQ?I|i~B44ion~H`7DPb4q@s;i74Q zA1~F%cJz>EOW}naHh(r8=UJYCx=@R8k|Y%NM-yfmVwZOQBoT?|_h35m;~0ErPxC-A*yX6c)KY>x7b@}Cc)|Ks;4O`H3$jZ5G3=B~pMD0Dxl?>2-ABd#Mr}cD zC*O2v)j8ta1LS<0(S;ZPc$wD4>n`Af^HPzPUlbjWUt$+X72%!j@N#NriulGo0N{SI zb?#yIXGi$FtM?ErAU;1{&QPYN(g^JxY^OmQ?4o^BIIgi@#>-_h%1};N-=NpDs2_|` zo-p7l;?0Px7#B0giv8+%pPAGS0G6wB^E(3 zje;_Q975&&K|62D!2XztmyB=-AVVibBI?^D)%$5a%pgK0@?^M@XTT`tnXW5*aClST zv}7+ny!6`MFbj}ap-GAXy9n2uruS{+rF3IKk0+jjoHIhG^6k^ptNm8ax_QWl6Rs0+f zMMLzsEJe97SW$nEdzi+k+p+VVXZX!hNx?OWl)jddJ|Jg`B*!z(lk$RuyM^H_EK(G9 zk8Mw*PXbrLGQ)T22V8 zEFSt3t9l~kl}9HH2RO&Uq4G8rDqn!94UxbpXs#YE(t!8gm8AdZFBEdwr7NVBfa1Y5 zNsk@rZnMGn{zkLJF&&+H!E`%lPnOI{S5+i~T+~beM9L0_;8LZQPW9kA7iv2X_B-Pd zzJi#0w@bwjTorvs>q&8bUBN@LFxZIT^TU<;?r#Q46V8xBDMIMZVT8;S|_4ya@dfN~> z?mHTg8a7?3k=Hi1^nEj@lOMSeOFSD0R%Q%SY^O!Ey3n{Mf9>T`Tid#` z)B2H!N?k4LJhGu+Q;JBs7IhR+52`tW4?3N$l`TLz^H;g?`y*LuDyK%)Jmw%p&*KbR znihv<@~dtcvb-MKeJ8HM-g$#U?7Xf+e19BXSDQNUU_dNS_J&J@of^c|fTp5mh;GJ= zGYX0+{655nV8uT$n4Pap=lhMGhSF@)V2c*bad#q%*3sSi&D2)7DKd z?~^-5CQbHOM#QGF#b#Zah8e$K3pgg_)drF8t6ki2k&D@%Ki!}VJ)+DkLfv2CEPC!Db zmnQ0UAL^HE(7ouN1Pzu=6LFrzw5Q8I^9p7)AI_!&*cvyhd8e)&C?`{U(nQ&5=hC}u zPQw0PG9NvbD0zmbqx=AAG{1PXRpiW8cXoleuDI}6K~BWie)oj0)}b+qPxw^F;w26K zyp298&7ar6cU68!fLuGyyx(OPIVsSNbc6r`XpHo9w()a1#Z z-P{UH1YD@FPfywE?L@)E07fLN)SQ`^)Jpfe2*SC_S;7_%7=5X)c=btXVt$aD{OEAy zuY!fTY?sEeCHvS&q9AZLbPHNp&n0da#+v~Yt8;~E{G7(#cGD7R1y(%o<5`@ciK+Ga zM+OniHFg*37t}~KAOq$<(AqAP_dlOb?u~FcbkftJ$4>PtU`j9Q5P8V-x?ynASYla+ z6O+XUo%15nKoQ+J+byM331Z`lV~oZbpcdOh2~XB=xKo^Bh#>xGsPO)BuqVYKI}V%@ zT`4BDtqNd#816)sg5cgMfQg1My*4|23jkK{lqH=Hd-Ryy|G<)wbneM)MWQz-FXy$q z`@u?FH5gMDIhW^h{+?2kkd&ae4bc8C31+0xD}JMpmeX`x)P&Oaup}EH+5VC^ffUW; zuFLg-E0sT)+RZmUaLLtox(u=f*~To`%RzLkJ-G+`Q5Z#PX~wwI`|{t!jdA@+USv>? z!H@KB4xsTn%dAY)i6r@Zp)3p`LL)m89e>kZ=Jq)HDUB^Lb8kFRKzmMfg2BjU?K$tm zDzR5{H-kOE$Z1D2);xZbC^AoIxT`Zpt*!vX_2p{kox+&j9z!l-x>)v zn>W5i#W5t4;gvXzKN?M@_Djpp)+BKXObG6!$;e|V?jgxi(#c(vbQl~F+_Hr(XSweY zLPFxcvD5B2larc=#cV&wAch)ZAo}wl2K|&Js!k|DF!kIE<^$rm_2@S<;gf$6=Rq-f z@5w?u-kq+}DI%jc`$_o@EfR>n%;;?>>iTlAsV`SGpXeF-q5ZfN=wuR#)~ zso&=uTAx@L?cCy!6pj&wd<><-z(j_fC%5A3@2Nv4SL>;JX>1w@Y=MsEc65lY@!mwV z5oJ3BkXJ^c8})m8^@GSJG#KWjF}OMjX!kJN$)CD%-UZ;0jPR9rHXmNx`Gs)_IXiWs z@zl7CoDnv{B}n7+?sAl4r=os>8d>~8A7b7ts%XfFOn+2oD+a69|z-qn8NwWWMFH>9ASfD)>#`@ zTMY>LyH6MMG#1}O_u#WGr1E$5LU)GVQi7HJ3$a_BRDTQP8h4ESBa^o8JLw5upLVcb z(>Hl&x}Qmi8D}{PlH<`bDfJ0e==5fNV7ecDU?%p&jlI>4_w3v2V5pARUvQrTfUdq2 z@2LYSq>PJb#`7xdQ#a>=F21UdAE|j!U452p7IL~R4;Z!d^#Og7B-No;QLsC^d16x* zYvc0u=v7>T)dgf%cqq#u#sn-^#eTQbx^OJkI~mb&h2ge}t8`VpbM>85qDY0Q$EDO* z6EVUBO|by@<|JB;kB>U`y4^PLcdL@&bxGa>#Ll=(ysp~gKq_k7+`3ZqKzt_uT*6Z*cT#JPlnS7)}{uFvfo8kWjxnX}z5H2DdiOlV&UPSLJHjH&ON^Ql(`e7RJhQ1GZmXU#ZOqJLscF zj`$0Pe4O9o)n0K{zjbFm=2$eS;kf9*#|mQ}KntZyjl-jeW2#rihljF-;6=p|x4kLl z2S$!EV*eV;imL}8af^yOeS!je)ANo!Pak17YF;%9_@~ege5%@CoRJZO?|<;r@ag3x zaQmYFXzD+6BgKtnDGOY=U&`CMG6-W;L(5iVfL2Zjq_^G9HNj7m@F$c63&=*)tS62j->fIJjwQ|k3IV2 zwLd@SzwDZ!e<1evLx}y?Be*}_z+an`KJOS^){f6c-xBo-N!k%=JrTRh%DPfZM>i7C z-YO@=&Cffu>+7NXh?Lm_Y^o6~s>-7dBAL&l%0(a`bhMNe#Xd<2{KDKEA4oj{>Y*F` zL7b`xBDz1p<0{J&HO>Uop5C&itU2h}wP*B2I_1KayQ4I!ea&{zF1v&Fw#QR)zI%i{ zjzf{;P{(+*iVoSDI_z$E{n@i2Sf*rV^^#FIv){?63{V*&6y?I)bYBm!<@4X8pwuNt zfg~zcI#|q`NjrHVFbudVz_tju%wQ{?GWb?0d3ba^afHZdR3Z}#P1OsAin@}1?aU>K zWE|%GTH2EzHrxX`c6vHzz4cz?z(zyQzv#FMG5Et3fuo!GqCDJR0?-hZ8xkbePB zC`+7#pmbqUyTDw5C)d5x>#&#c#1prrX^A74W(`y&oziL_cqbRuQ8(!ovEJppyS@|D z)#!1=f<+(oLPJu*a6INUj(spZ4d)>&G0AsP?c7$&&Wl5#$y(9C?2WYKRsL5j{2hJ{P+%6}`CIuOS(Z&X6_bEHmP(N3<_`*p( zzJ<%9%owFAZ@`Jp_C!;nNyMnMa;Vq-QZja=-6Z#yTaJp98>Pn1UE^UEtV(3!p$U7O z+M(JK;73Q5R`$ivbgzFfwx#Yc&cxFu-Ayyz{-gy&Z1qw>o&Xw;(xJ4(AP>1zViMqI z?kR+C{bM{Lq8Z?hF-OFX`I#=_{YTjx68Og>%FNGg|CiAJ;L;6tDCsc>{9k2$UEHzv zG+1h(naB57Z~lFtiu(>Heyy767NZ(*J7UH$1r@43MLn4!Zi#u@YHs!B(SKurry zI)e6`0t_a$7jDu&QQz&hsa!41*j1OuGCvNeh$O~V-`n0)_>UaW9az+husbHM0+-SU z5e^9oXcElm!swqfvN2x^;=jmL37G`2O#+VenJusT&|>^NwWx#7L + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/calendar.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/calendar.svg new file mode 100644 index 00000000..4f6b9bb7 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/calendar.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/chevron-down-grey.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/chevron-down-grey.svg new file mode 100644 index 00000000..6753becb --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/chevron-down-grey.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/document.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/document.svg new file mode 100644 index 00000000..4c41271e --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/document.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/email.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/email.svg new file mode 100644 index 00000000..c4582d6e --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/email.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/gender.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/gender.svg new file mode 100644 index 00000000..af5c5772 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/gender.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/nationality.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/nationality.svg new file mode 100644 index 00000000..e57d7522 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/nationality.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/phone.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/phone.svg new file mode 100644 index 00000000..b19cce04 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/profile.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/profile.svg new file mode 100644 index 00000000..5c514fc1 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/profile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/verified.svg b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/verified.svg new file mode 100644 index 00000000..7ca4dbb3 --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/icons/verified.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/logo.png b/src/Examples/DigitalIdentity/DigitalIdentity/wwwroot/static/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c60227fabf339e9540e5daac4d2d25e121137752 GIT binary patch literal 2988 zcmV;d3sdxoP)Px=W=TXrRCodHTYGR+)fxZo?%mzIkYEDgl?2c#&jJBdpehy$GAM{5Z>ZDhIR0T< zrqk);pUyZ_ZKvZnw&RQ)|DY&n)lw083ql|vQW+vbK|*+g3C}zrktF-L{eI`>ZtmV} z$nIuCHZwUhH@o-lIp6ut_dDP7+&Csoou;FwC4~f>Nx?-A6G{R-U?kB-(CobEdU9GV zhrICZDzqkf|atnLVsfw< zJE-K})_NScO(0!)+XF^dO5ZkjD>G&LJ>sny*@SF(#9pl*#xss%=(NqTA*$j_Eao=! zxXmv#&57E2G>z7v(@vYe#bG{U27^NJ2mA>5gGlju5R5X!B)@@R0DfNpDJkB_en9$I zo2F^XX;)QMqp7K>1rXuEQTrYA%)x*+RS3%{t8lDD_+2J40>=4bxc9#axP-R95y4^8 z;G6YFz!%#jQG-E&a(8arvK2-9OVp0_ie}88`!viQ+}6|tv9PEZ+ji_!AinoO16D3w zDuDE91qf+XR90f+=B+3@S*}2FIwcGgfLfYp#_ei2>aPKpkHS^H9f1euATWM8^pswa z0SSs^eDxwge+!v-zKM1tV3V@sJ@9=m^U9}yp{_V+N2Rj_!Y3NBe#2+jSF~RV-|cpz z_{#(MRD{M*SS4c-7|=8q4t#YGo40O<-|vUV*5byEs<3hFd!pa;!Fi7q$Lcnhw>@58v8RR6$kxjrnwD3UE<^` zOQC)73j8x)MX>k4a1HTfK<}Mrm?<)^97*%12;M=PZ#o`_q+=W}JerTli)zwWPt7#% z68aex7!(N2$NafZ$p&zssJKM!R%(pP<-o4OLiK#klP!R-|2IdD;-mHdQRNI12>OEi zh7H9F%a@=}AHz(M&h6U`0@`O%@@N5qAW-^k-qm0;7h zZJ>jvro!cg<60S9#cv?^lUD$Dx*<$ah~Uu25F9v8geL%mz~C)S-c7hSzGRpg3R@ho z@A2OQ_Y7zah78d?LRV-exQhy1IIG&wdo{u%Y=_v2;-g2tFrpyY>_+^TqFMX5ZiadKDg?G*LaX{>jT7 zj0xk%;mMiP@#7WltMoiYE2?Zgc z5)cBj{qtQ|y>=aHYiq+aVn|*dRxDl|283cjz&LmQ0xB0nu|HIPgwH8ZUTl7U0R3dwE?cq? zIeoJ&W<>q0{*cb4?y@5v@Ii1JYT;la)=gT6z~CAw^z@8$JUwSNva(uA927GBO1}6CnyR)M%^OXd zLPNeY+fJ1dOFWG=FQ=KQ3%HJem@MI=yR;62!G#hKuQ+v&TQXuxqsicJcWN|f42eyl z@ldO(Mhb6nw3?b)16Ym~5OjB%pc^S2kAwJK7?Kb$jJ3<+ZM)EZA89>w^qHBx)mYm7 z#>OT|7LP^h+U_%!P-<`9G=c|$k%821euqOyBx60`iW@^UGoY={L5Y}vjOhrT|nav){$ z+)~;fD4DyIYr0G8axmyq@^f=VJ0#+2cJ$PiHS0c*y3>xR&fl?xXyDS;9U9$vjBHK)^O&SKf(=h0V6DE3w- zukftjuo0`@U5A^uZW*}=3w=_b@)xX-f}R8hca9(IB)jy!%faC4sS(Umj-Mz~r+aQm z{8&<_GhegzeeBx32S1uJ8DmC`L}u^aAP7A7;Cafa(`QszY$S=|93-y@7W@>!Jjvj@ z5fGF^Qh=ct5#h5$Un}A1DJhSz{zVPpRZ)2v|N3}6)-g<05u5Rnf=kXYLMMQt5s*{3 z;OGSij9W^Q-L56nXV3v#uUMoJ5JC6J%#_l}B8(g{Tt!7@jzU1_*jW$bnLCp^kH_5% zglGekJ8{_lhhBtl^2?H6FmH)vcJ}1}>vgxsCs;GMn<+46!9gj1m^G?sm&Ni*KdE8; zY~^z7lM}=eF+&V-36v%@!{{+|WuT-7bwqDLp4GX}x_a^+1ykoklrN*=lV6~(Ng5%z+jCfe0pylj_%`67Z* zV3Vw0z>y%L%_gim&;M7>?0*|JM?!suSG2;~2yQ&hG*6jgwq`u>I3_64>5LEz9eAvcZJXBC+WsuM8C-H(z6GQ zBtoi{&tMY8Y}Vn3J(}u_buqFs_^}oI=rnm$VSC&eJS3bZRe=24TG$hYjeCpsfs($l-MB=CRu-jS!@!@-~c0000Px~qe(O+IO{fBm{`nU}JlXu>r@}X6&&uGc~CxPbCji z$vpTa?|IK#UQ)@!B$Jv{C85e=Yz78q@G=-1n?VQxS`b>%u5N9ued)gW{v#w>;-1?r z^`h;ZsxDpK( ze1&Nh73GJsM%##D5|^J*2N9-#Cx&!>2N0;tic%iTsH3j!SPCd$?ATYY25v?H1q?Il zsB1fx0ty&A_SLI_n^8ak!;CuW+K#1w0>+Mg^=jZ|6i~o0qmH_^V=173v14Do8n_t+ z6fn%Fqps~(3MgRg*jKLxZbkv~kPx#c*LZDcWSAzWCTU_~ns%3$AzsB#=)@Z9H@f|C zcMlB=4$|JL-4q`ehbRE^FaV=E{GFSgnW6EC3F_|d6#;}jJ?61e)`m|>@4HKSYAJcs z%ZL&(iLBB7nhE&2#obL>&mGdx#-=JMMWkm|lE?9aVYe(3{iKa{lGc3H@H(H=QHSU7 zhtlhzybuv!jJe0@!M%EN4G+=m{5;u{5=F#rOf*8U!&F+^I}qjCLOs2GG&wm%$BrH$ z8)BI>EqEsBMOgXp=m>Q_?xK;gQF6Q8G&(XyE|-fYCMQitqzyHbHrY=!+)9@II{-!w z>GA30O#?_$9Hd)XTIF*)lV)KmY!Al7#1l$V=_FSw2DcB}uOJ3mdVzN{nOeg0T zZEd5z{sD42hpD8vka9A!C?*Eru&j@B@LG%cxjAsYY3k^BOt)^=kkd5;jxoNv8`A$R zZg3R-Jt;g{bbB6A@hhZ*bLh4da1eYj__vOtdl5=KJ4V_#z_*Etjt>CM$v+ypcV1jK z?RR2!#6}cWU@$1UAkLis_;*5#@_H9jSY5tyg>Q6|+1W)l|K>hniYi z=-TIB(eUsv&CJd$RU5j$ys~V1m@E&@6UAo`6+BP+{-2UJ&W?TtFaCwDqdTLfumEFt zbd*}#+NtSbGr7mcu-x-0D3-`NIW+~*YJh6)+@*M1Jf$Wl2esy-8{*odM=b&vOPpe< zE&j{PO^1d@i5E8BskuW(o;yqlHk)5SG6(AE>7|;QTETf{X6DGN%a^YDwz=kG)T_-- z5P28K(su{z1`JqPyc0(z@ zTlat-cXiVgQ($e>ZFYVmy9Q27+Y6dVmIv-1KWiG-Ba!uV`nwppt>$9ad z0*!(5H8eF--TenNH9ZqPQ22IaeugYVEo5o>jI0CoWSJO%NhVBS^leuiFH;~az`$oY zprV75OifSHC!bstrcM@j)>`J~=Bf7HJ^JFS>%^8Qe}yGF4|A{p`q+m0YHI5s_TBJT zZRoGFXf@>`OUJ1ZM<{Z&IzYPm<4ptCU5UHjro zp%}mUS7#_aB{d++(V){w?XV7A{^Oqju<7M0Wd}BhZ25V)boPzYl%A0$wTQ9xiAA$7 zzrGGJs!vv(;rVEopcA3Ll$VxJD#j5PA4k#AQ8YO*MGX9o&MtC~PrxwXzrWmoHa#kQ z68iOjCjIq)B0ZLu#mcQ}S}d$uS=Hcd!2YuJjqk@dQ22597(YJdL*3`RXP&Grm+|F* zg~+H_tmG+rnaGxgXV>P3(v$PyyD2fMbyJ=T3otlwLV7wAPp1Rb)pWnUUWiouwKgiO zn6s}#>+Pl6kmX-|{wO6TCP4m|6W;|TxCP=`L*qmEDPRVa)VEr$*>t{R90l6v(qxK;eMRdzvgG9i%`0hCC%Fh@#~Bh7M)jlT}4p zLI&x}!_$C+#eZ1GS~^}FIiFv=ra^?$+pZ!>fH5$1ybo`7HBo92aJDw5Bm-KHg&|>! zl&}DU#~vRaPwc>Z?#N-GLyWn{Xko!v-{AXM7a4_aQd4`EN{R}=JsctlgJt=v$9JIs zL<Y1Jj&;P_Zhu+?k!>kzrDHSmH#ff*Uv@JfbKNN^c6$BQ6LjYF*Xhs! zd`SZ+%w3Z0b~<|GkoYw;J*0bZe*Wig{~M-YSj}W?72vRReNWc*>*UQljBt|j09sSG ztd{~|1;$dRD$C1>eF5zqotShtO?3{Q7vtk@y85SU0vK<+afXt>eYlLl^vkmUh0iVu zIbAx5o-`Z<5TvH0(EI1!rX1)y{!-hp)oEbRNwu}L@Yu__8;gqU5Bca4HbQv$K=By1Hp#!08thtnB9HW+8)O0TmzwgyW+Y zEiwijTRx>Drpif!gD%v+d~(GB<0>;FT} zT<81m{g6sw>TN~{$_y-7Mx09)HQfC{c3DoxCM=#UBMC3JmUy6)$pM70ijS zC9)FDI)_Md-R^q@BE}#Zn8^Gta3L z0aGAiqSSJaAday3QC3z$hY#(i`Gbs)8=SX4-HSuA9xhZ@qbjqQRk_xENM8#~%o!vDaAFkoX){ zKA`?vD+R*$hW+#;0hXo=_!de^iYW_nJ1gkxE$r*afhpGEa8Ln$v9YlM=oC*|V{SAG zi`TqNOaqt`;LT4RZ9ibMY$;7Um_Gg~Df)O7eZ#{0l|<)Ubqy0;^$UH@zh z0eRTJaA4manukL9_18DVq8~Gzej&mb zJ@{3UB!omIE6s@BydLT#93?hrWS4v!TG? z4qBlXJa=$EVc#a9bKI(_38dfR9xF`0NlA7n!|%YKP`qe;3i#=#H!{Z}1Hn}uT1u8aX%!@vNHX)HeCwv7rq)L2yGHX~KI&FqW}j7#FFN1w$~ zQU0q+$SJU4I>zdeBtooWAA#^Br>8>aFrS31pt7H$5IO~KY_o1qpd&(;g(+BAzE*b( z{{y>1$KddiNEL1=9(oO1@r(<4Ew;*1z%ZsyaA!B3WBBx+?f8ce9VGY66n+2QEgBga z^|`w8@Z^bC5SHPf^dQ19mTSb^nn89ADaQaHSY(UjCY=oQMEGN*7CYt?3sXR~0><)t z4B^41;TTI}Vsm8)ywzqAuzYV3?ny%&R7eUw&(T`6lZg{mvSt&#Mok`{s{)e2;#Hklhn7i z&>VA{qgbONGYBw&^wIYm3d!KGjCFia+HvlC(ZvL&!OOx2#)B&^a?uP_Yc z=Y_zkFsI1ClGJF4Y1D(2hqrFmiggl^(lh3f=F!{2U?e(ax((0R!)x{SzEY5{*y{Sz%e9^H%Yijc^)Bx$X(9Lutg4S56INXpLok zo1KmJToraMdtpJISHJ)P1;@w*$3S8OGb_)PYoAkHeFH+%XM!ZV{P7tih3i7Ll#743 zD%PJE-l+i;F$q}ry$b+Q9K(=CL7tR}WD?QFSMtX88jd_!vTtMC&WDD6s>1cu`OoS^?z<5G% zj?(3ob37G!9}lC#YtcDf59mcou*8b;e=_w{h$BC zE=q2C`S>x!cO5`l&V{LMTdRS~|V@$`9zmrAy|M6r#?>%a`ddcWxs!P&xhW&;N#Y zSL_NH9PGerZfT|SpIpFp36I3?Pd;6F_7HlINWY0aGZeRYmOP<8qkyrBqP&E4@182U zhkUz_kp|SC1~m9{qcmXt6C>RQOjB`t8p)zd-?G)eGj$D>)x+b@e`>Wb+<- ztOLjjrxo>hWu^MNRYr>A&^iIr^^XoI1OqH z;#9Pa^d#s$j+e*_Gp#C-p@7`{5}EclXDg8B?NFxAy!INMK6w%Wh8rikc*;(br~0Sl z*?o3%(rTObN&&;<#U>{wiJZG1y#KDqZWytptwPaGBF~{;khl6rZH z$MEy^IlWIB0t{aSFj#r!jWjusa29)rb0+qX6mSU6L90h0{wbxH^o$D9E6MWlnMK?3>hwEtorCa=r2GO>B=m92#)I(&R;2e|`5mu3*{WBbneEPc&KQzrP#oK#Dx^S>zHul!z%p`kZwPFWdPyc|}ube|V zX0TshAl566h}CWB;0(LOo_6f8(=&H3?&U3(t8NS^^q6>>|IvSdtj58MB2EjS4M#+; z&YUtSpXQ2RmcP~rMiOs2V6f!CSxml_YJzu;TtSN;hYhC#=HMpi z!`AEqxJM=j9pblC>KmFwCJ{4W=p`pf&pkk1TZmHsEH$qFhLi#d7$GEQVqyZq(9QS7 zV?gK%6d|N~c&geMVKzKtQMD=xgp2|T7$GC2s%Se=KmlVry-hWikWoMZBV?ph6>TR9 zC}3=-x2eVwG72bQgp8D`qU}Th1&r85 zGE%CFwi5+RLqd3=zH4ZhVxptvd%eJ?CnTjg2+SbsWY~Y^|zik&xM6WfW*xV5=0&B&sM1C<^#eAj+fDZ+uUvV?_Z)0iyp0%kz - - - + + + - + diff --git a/src/Yoti.Auth.sln b/src/Yoti.Auth.sln index f2630d1d..7368b448 100644 --- a/src/Yoti.Auth.sln +++ b/src/Yoti.Auth.sln @@ -28,6 +28,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DocScanExample", "Examples\ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DocScan", "DocScan", "{106324DB-4181-443F-85BA-6C3D3BD7E8DF}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalIdentityExample", "Examples\DigitalIdentity\DigitalIdentity\DigitalIdentityExample.csproj", "{5FC08A25-9A60-483B-9957-73D61AA09B93}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -58,6 +60,10 @@ Global {FFA5585A-C7BA-4F34-96F1-8E2312E8758F}.Debug|Any CPU.Build.0 = Debug|Any CPU {FFA5585A-C7BA-4F34-96F1-8E2312E8758F}.Release|Any CPU.ActiveCfg = Release|Any CPU {FFA5585A-C7BA-4F34-96F1-8E2312E8758F}.Release|Any CPU.Build.0 = Release|Any CPU + {5FC08A25-9A60-483B-9957-73D61AA09B93}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5FC08A25-9A60-483B-9957-73D61AA09B93}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5FC08A25-9A60-483B-9957-73D61AA09B93}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5FC08A25-9A60-483B-9957-73D61AA09B93}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -69,6 +75,7 @@ Global {34AC42F8-1D13-4D12-9C77-DB7A42494918} = {C3CAC5F0-C455-4634-A989-7443EBDC09E3} {FFA5585A-C7BA-4F34-96F1-8E2312E8758F} = {106324DB-4181-443F-85BA-6C3D3BD7E8DF} {106324DB-4181-443F-85BA-6C3D3BD7E8DF} = {F3EB26B1-6385-4A89-A8F9-8BAFFEC581F9} + {5FC08A25-9A60-483B-9957-73D61AA09B93} = {F3EB26B1-6385-4A89-A8F9-8BAFFEC581F9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {6A3AE710-68BB-4034-921C-EBAE5186F5DF} diff --git a/src/Yoti.Auth/Constants/Api.cs b/src/Yoti.Auth/Constants/Api.cs index 4cc0cfaf..08bc4b75 100644 --- a/src/Yoti.Auth/Constants/Api.cs +++ b/src/Yoti.Auth/Constants/Api.cs @@ -7,8 +7,11 @@ public static class Api public const string DefaultYotiHost = @"https://api.yoti.com"; public const string YotiApiPathPrefix = "api/v1"; + public const string YotiApiSharePathPrefix = "share"; public readonly static string DefaultYotiApiUrl = string.Join("/", DefaultYotiHost, YotiApiPathPrefix); + public readonly static string DefaultYotiShareApiUrl = string.Join("/", DefaultYotiHost, YotiApiSharePathPrefix); + public const string YotiDocsPathPrefix = "idverify/v1/"; public readonly static Uri DefaultYotiDocsUrl = new Uri(string.Join("/", DefaultYotiHost, YotiDocsPathPrefix)); diff --git a/src/Yoti.Auth/Conversion.cs b/src/Yoti.Auth/Conversion.cs index 717727db..44928f57 100644 --- a/src/Yoti.Auth/Conversion.cs +++ b/src/Yoti.Auth/Conversion.cs @@ -31,7 +31,7 @@ public static byte[] Base64ToBytes(string base64) ///
public static byte[] UrlSafeBase64ToBytes(string urlSafeBase64) { -#if NETCOREAPP2_2 || NETCOREAPP3_1 || NETSTANDARD2_1 +#if NETCOREAPP2_2 || NETCOREAPP3_1 || NETSTANDARD2_1 || NET5_0 string base64 = urlSafeBase64.Replace("-", "+", StringComparison.Ordinal).Replace("_", "/", StringComparison.Ordinal); #else string base64 = urlSafeBase64.Replace("-", "+").Replace("_", "/"); diff --git a/src/Yoti.Auth/CryptoEngine.cs b/src/Yoti.Auth/CryptoEngine.cs index d275c21c..6951da93 100644 --- a/src/Yoti.Auth/CryptoEngine.cs +++ b/src/Yoti.Auth/CryptoEngine.cs @@ -1,5 +1,7 @@ using System; using System.IO; +using System.Security.Cryptography; +using Google.Protobuf; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Encodings; using Org.BouncyCastle.Crypto.Engines; @@ -41,10 +43,10 @@ internal static byte[] DecipherAes(byte[] key, byte[] iv, byte[] cipherBytes) var result = new byte[numOutputBytes]; Array.Copy(outputBuffer, result, numOutputBytes); - + return result; } - + internal static byte[] DecryptRsa(byte[] cipherBytes, AsymmetricCipherKeyPair keypair) { // decrypt using rsa with private key and PKCS 1 v1.5 padding @@ -82,7 +84,6 @@ internal static string GenerateNonce() internal static string DecryptToken(string encryptedConnectToken, AsymmetricCipherKeyPair keyPair) { Validation.NotNullOrEmpty(encryptedConnectToken, "one time use token"); - // token was encoded as a URL-safe base64 so it can be transferred in a URL byte[] cipherBytes = Conversion.UrlSafeBase64ToBytes(encryptedConnectToken); @@ -132,5 +133,62 @@ internal static string GetAuthKey(AsymmetricCipherKeyPair keyPair) return Conversion.BytesToBase64(publicKey); } + + public static byte[] DecryptAesGcm(byte[] cipherText, byte[] iv, byte[] secret) + { + try + { + GcmBlockCipher cipher = new GcmBlockCipher(new Org.BouncyCastle.Crypto.Engines.AesEngine()); + ParametersWithIV parameters = new ParametersWithIV(new KeyParameter(secret), iv); + + cipher.Init(false, parameters); + + byte[] plainText = new byte[cipher.GetOutputSize(cipherText.Length)]; + int length = cipher.ProcessBytes(cipherText, 0, cipherText.Length, plainText, 0); + cipher.DoFinal(plainText, length); + + return plainText; + } + catch (Exception ex) + { + throw new Exception($"Failed to decrypt receipt key: {ex.Message}", ex); + } + } + + public static byte[] UnwrapReceiptKey(byte[] wrappedReceiptKey, byte[] encryptedItemKey, byte[] itemKeyIv, AsymmetricCipherKeyPair key) + { + try + { + byte[] decryptedItemKey = DecryptRsa(encryptedItemKey, key); + + byte[] plainText = DecryptAesGcm(wrappedReceiptKey, itemKeyIv, decryptedItemKey); + + return plainText; + } + catch (Exception ex) + { + throw new Exception($"Failed to unwrap receipt key: {ex.Message}", ex); + } + } + + public static byte[] DecryptReceiptContent(byte[] content, byte[] receiptContentKey) + { + try + { + if (content == null) + { + throw new ArgumentNullException("content", "Failed to decrypt receipt content: content is null"); + } + + var decodedData = new EncryptedData(); + decodedData.MergeFrom(content); + + return DecipherAes(receiptContentKey, decodedData.Iv.ToByteArray(), decodedData.CipherText.ToByteArray()); + } + catch(Exception ex) + { + throw new Exception($"Failed to decrypt receipt content: {ex.Message}", ex); + } + } } -} \ No newline at end of file +} diff --git a/src/Yoti.Auth/DigitalIdentity/CreateQrResult.cs b/src/Yoti.Auth/DigitalIdentity/CreateQrResult.cs new file mode 100644 index 00000000..d06d380d --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/CreateQrResult.cs @@ -0,0 +1,18 @@ +using Newtonsoft.Json; + + +namespace Yoti.Auth.DigitalIdentity +{ + public class CreateQrResult + { +#pragma warning disable 0649 + // These fields are assigned to by JSON deserialization + [JsonProperty("id")] + public string Id { get; set; } + + [JsonProperty("uri")] + public string Uri { get; set; } +#pragma warning restore 0649 + + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs new file mode 100644 index 00000000..fa6fc0f4 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -0,0 +1,371 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; +using Google.Protobuf; +using Newtonsoft.Json; +using Org.BouncyCastle.Crypto; +using Yoti.Auth.Attribute; +using Yoti.Auth.Exceptions; +using Yoti.Auth.Profile; +using Yoti.Auth.Web; +using Yoti.Auth.ProtoBuf.Attribute; +using Yoti.Auth.Share; +using ApplicationProfile = Yoti.Auth.Profile.ApplicationProfile; + +namespace Yoti.Auth.DigitalIdentity +{ + public static class DigitalIdentityService + { + private const string receiptRetrieval = "/v2/receipts/{0}"; + private const string receiptKeyRetrieval = "/v2/wrapped-item-keys/{0}"; + private const string sessionCreation = "/v2/sessions"; + private const string yotiAuthId = "X-Yoti-Auth-Id"; + + internal static async Task CreateShareSession(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, ShareSessionRequest shareSessionRequestPayload) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + Validation.NotNull(shareSessionRequestPayload, nameof(shareSessionRequestPayload)); + + string serializedScenario = JsonConvert.SerializeObject( + shareSessionRequestPayload, + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }); + byte[] body = Encoding.UTF8.GetBytes(serializedScenario); + + Request shareSessionRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(sessionCreation) + .WithQueryParam("sdkID", sdkId) + .WithHttpMethod(HttpMethod.Post) + .WithContent(body) + .Build(); + + using (HttpResponseMessage response = await shareSessionRequest.Execute(httpClient).ConfigureAwait(false)) + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + } + } + + internal static async Task GetSession(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + Validation.NotNull(sessionId, nameof(sessionId)); + + + Request getSessionRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(string.Format("{0}/{1}", sessionCreation, sessionId)) + .WithQueryParam("appId", sdkId) + .WithHttpMethod(HttpMethod.Get) + .Build(); + + using (HttpResponseMessage response = await getSessionRequest.Execute(httpClient).ConfigureAwait(false)) + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + } + } + + internal static async Task CreateQrCode(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId,QrRequest qrRequestPayload) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + + string serializedQrCode = JsonConvert.SerializeObject( + qrRequestPayload, + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }); + byte[] body = Encoding.UTF8.GetBytes(serializedQrCode); + + + Request createQrRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(string.Format($"/v2/sessions/{0}/qr-codes", sessionId)) + .WithQueryParam("appId", sdkId) + .WithHttpMethod(HttpMethod.Post) + .WithContent(body) + .Build(); + + using (HttpResponseMessage response = await createQrRequest.Execute(httpClient).ConfigureAwait(false)) + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + } + } + + internal static async Task GetQrCode(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string qrCodeId) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + Validation.NotNull(qrCodeId, nameof(qrCodeId)); + + Request QrCodeRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(string.Format($"/v2/qr-codes/{0}", qrCodeId)) + .WithQueryParam("appId", sdkId) + .WithHttpMethod(HttpMethod.Get) + .Build(); + + using (HttpResponseMessage response = await QrCodeRequest.Execute(httpClient).ConfigureAwait(false)) + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + } + } + + private static async Task GetReceipt(HttpClient httpClient, string receiptId, string sdkId,Uri apiUrl, AsymmetricCipherKeyPair keyPair) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + + string receiptUrl = Base64ToBase64URL(receiptId); + string endpoint = string.Format(receiptRetrieval, receiptUrl); + + Request ReceiptRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(endpoint) + .WithQueryParam("sdkID", sdkId) + .WithHttpMethod(HttpMethod.Get) + .Build(); + + using (HttpResponseMessage response = await ReceiptRequest.Execute(httpClient).ConfigureAwait(false)) + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + } + } + + + public static string Base64ToBase64URL(string base64Str) + { + try + { + byte[] decodedBytes = Convert.FromBase64String(base64Str); + string base64URL = Convert.ToBase64String(decodedBytes) + .Replace('+', '-') + .Replace('/', '_') + .TrimEnd('='); + return base64URL; + } + catch (FormatException) + { + return ""; + } + } + + public static async Task GetShareReceipt(HttpClient httpClient, string clientSdkId, Uri apiUrl, AsymmetricCipherKeyPair key, string receiptId) + { + Validation.NotNullOrEmpty(receiptId, nameof(receiptId)); + try + { + var receiptResponse = await GetReceipt(httpClient, receiptId, clientSdkId, apiUrl, key); + var itemKeyId = receiptResponse.WrappedItemKeyId; + + var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); + + var receiptContentKey = CryptoEngine.UnwrapReceiptKey(receiptResponse.WrappedKey, encryptedItemKeyResponse.Value, encryptedItemKeyResponse.Iv, key); + + var (attrData, aextra, decryptAttrDataError) = DecryptReceiptContent(receiptResponse.Content, receiptContentKey); + if (decryptAttrDataError != null) + { + throw new Exception($"An unexpected error occurred: {decryptAttrDataError.Message}"); + } + + var parsedAttributesApp = AttributeConverter.ConvertToBaseAttributes(attrData); + var appProfile = new ApplicationProfile(parsedAttributesApp + ); + + var (attrOtherData, aOtherExtra, decryptOtherAttrDataError) = DecryptReceiptContent(receiptResponse.OtherPartyContent, receiptContentKey); + if (decryptAttrDataError != null) + { + throw new Exception($"An unexpected error occurred: {decryptAttrDataError.Message}"); + } + + var userProfile = new YotiProfile(); + if (attrOtherData != null) + { + var parsedAttributesUser = AttributeConverter.ConvertToBaseAttributes(attrOtherData); + userProfile = new YotiProfile(parsedAttributesUser); + } + + + ExtraData userExtraData = new ExtraData(); + if (aOtherExtra != null) + { + userExtraData = ExtraDataConverter.ParseExtraDataProto(aOtherExtra); + } + ExtraData appExtraData = new ExtraData(); + if (aextra != null) + { + + appExtraData = ExtraDataConverter.ParseExtraDataProto(aextra); + } + + var sharedReceiptResponse = new SharedReceiptResponse + { + ID = receiptResponse.ID, + SessionID = receiptResponse.SessionID, + RememberMeID = receiptResponse.RememberMeID, + ParentRememberMeID = receiptResponse.ParentRememberMeID, + Timestamp = receiptResponse.Timestamp, + UserContent = new UserContent + { + UserProfile = userProfile, + ExtraData = userExtraData + }, + ApplicationContent = new ApplicationContent + { + ApplicationProfile = appProfile, + ExtraData = appExtraData + }, + Error = receiptResponse.Error + }; + + return sharedReceiptResponse; + } + catch (Exception ex) + { + throw new Exception($"An unexpected error occurred: {ex.Message}"); + + } + } + + private static async Task GetReceiptItemKey(HttpClient httpClient, string receiptItemKeyId, string sdkId, Uri apiUrl, AsymmetricCipherKeyPair keyPair) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + string endpoint = string.Format(receiptKeyRetrieval, receiptItemKeyId); + + Request ReceiptItemKeyRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(endpoint) + .WithQueryParam("appId", sdkId) + .WithHttpMethod(HttpMethod.Get) + .Build(); + + using (HttpResponseMessage response = await ReceiptItemKeyRequest.Execute(httpClient).ConfigureAwait(false)) + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + } + } + + public static (AttributeList attrData, byte[] aextra, Exception error) DecryptReceiptContent(Content content, byte[] key) + { + AttributeList attrData = null; + byte[] aextra = null; + Exception error = null; + + if (content != null) + { + if (content.Profile != null && content.Profile.Length > 0) + { + try + { + byte[] aattr = CryptoEngine.DecryptReceiptContent(content.Profile, key); + attrData = new AttributeList(); + attrData.MergeFrom(aattr); + } + catch (Exception ex) + { + error = new Exception($"failed to decrypt content profile: {ex.Message}", ex); + return (null, null, error); + } + } + + if (content.ExtraData != null && content.ExtraData.Length > 0) + { + try + { + aextra = CryptoEngine.DecryptReceiptContent(content.ExtraData, key); + } + catch (Exception ex) + { + error = new Exception($"failed to decrypt receipt content extra data: {ex.Message}", ex); + return (null, null, error); + } + } + } + + return (attrData, aextra, null); + } + } + + +} diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/BaseExtension.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/BaseExtension.cs new file mode 100644 index 00000000..71f96b96 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/BaseExtension.cs @@ -0,0 +1,27 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public abstract class BaseExtension + { + [JsonProperty(PropertyName = "type")] + private readonly string _type; + + private protected BaseExtension(string type) + { + _type = type; + } + + /// + /// Get the feature's type + /// + [JsonIgnore] + public string ExtensionType + { + get + { + return _type; + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/DeviceLocation.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/DeviceLocation.cs new file mode 100644 index 00000000..fac07057 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/DeviceLocation.cs @@ -0,0 +1,63 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public class DeviceLocation + { + [JsonProperty(PropertyName = "latitude")] + private readonly double _latitude; + + [JsonProperty(PropertyName = "longitude")] + private readonly double _longitude; + + [JsonProperty(PropertyName = "radius")] + private readonly double _radius; + + [JsonProperty(PropertyName = "max_uncertainty_radius")] + private readonly double _maxUncertainty; + + public DeviceLocation(double latitude, double longitude, double radius, double maxUncertainty) + { + _latitude = latitude; + _longitude = longitude; + _radius = radius; + _maxUncertainty = maxUncertainty; + } + + [JsonIgnore] + public double Latitude + { + get + { + return _latitude; + } + } + + [JsonIgnore] + public double Longitude + { + get + { + return _longitude; + } + } + + [JsonIgnore] + public double Radius + { + get + { + return _radius; + } + } + + [JsonIgnore] + public double MaxUncertainty + { + get + { + return _maxUncertainty; + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/Extension.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/Extension.cs new file mode 100644 index 00000000..da0243e8 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/Extension.cs @@ -0,0 +1,33 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + /// + /// Type and content of a feature for an application. Implemented , + /// and adds generic content on top + /// + /// Type of the extension's content + public class Extension : BaseExtension + { + [JsonProperty(PropertyName = "content")] + private readonly T _content; + + public Extension(string type, T content) : base(type) + { + _content = content; + } + + /// + /// Get the feature's details + /// + /// The payload of the operation + [JsonIgnore] + public T Content + { + get + { + return _content; + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/ExtensionBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/ExtensionBuilder.cs new file mode 100644 index 00000000..c5aea619 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/ExtensionBuilder.cs @@ -0,0 +1,25 @@ +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public class ExtensionBuilder + { + private string _type; + private T _content; + + public ExtensionBuilder WithType(string type) + { + _type = type; + return this; + } + + public ExtensionBuilder WithContent(T content) + { + _content = content; + return this; + } + + public Extension Build() + { + return new Extension(_type, _content); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintContent.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintContent.cs new file mode 100644 index 00000000..15e0cb32 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintContent.cs @@ -0,0 +1,24 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public class LocationConstraintContent + { + [JsonProperty(PropertyName = "expected_device_location")] + private readonly DeviceLocation _expectedDeviceLocation; + + public LocationConstraintContent(double latitude, double longitude, double radius, double maxUncertainty) + { + _expectedDeviceLocation = new DeviceLocation(latitude, longitude, radius, maxUncertainty); + } + + [JsonIgnore] + public DeviceLocation ExpectedDeviceLocation + { + get + { + return _expectedDeviceLocation; + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintExtensionBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintExtensionBuilder.cs new file mode 100644 index 00000000..0a633c91 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/LocationConstraintExtensionBuilder.cs @@ -0,0 +1,66 @@ +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public class LocationConstraintExtensionBuilder + { + private double _latitude; + private double _longitude; + private double _radius = 150d; + private double _maxUncertainty = 150d; + + /// + /// Allows you to specify the Latitude of the user's expected location. + /// + /// + /// This LocationConstraintExtensionBuilder + public LocationConstraintExtensionBuilder WithLatitude(double latitude) + { + Validation.WithinRange(latitude, -90d, 90d, nameof(latitude)); + _latitude = latitude; + return this; + } + + /// + /// Allows you to specify the Longitude of the user's expected location. + /// + /// + /// This LocationConstraintExtensionBuilder + public LocationConstraintExtensionBuilder WithLongitude(double longitude) + { + Validation.WithinRange(longitude, -180d, 180d, nameof(longitude)); + _longitude = longitude; + return this; + } + + /// + /// Radius of the circle, centred on the specified location coordinates, where the device is + /// allowed to perform the share. If not provided, a default value of 150m will be used. + /// + /// The allowable distance, in metres, from the given lat/long location + /// This LocationConstraintExtensionBuilder + public LocationConstraintExtensionBuilder WithRadius(double radius) + { + Validation.NotLessThan(radius, 0d, nameof(radius)); + _radius = radius; + return this; + } + + /// + /// Maximum acceptable distance, in metres, of the area of uncertainty associated with the + /// device location coordinates. If not provided, a default value of 150m will be used. + /// + /// Maximum allowed measurement uncertainty, in metres + /// This LocationConstraintExtensionBuilder + public LocationConstraintExtensionBuilder WithMaxUncertainty(double maxUncertainty) + { + Validation.NotLessThan(maxUncertainty, 0d, nameof(maxUncertainty)); + _maxUncertainty = maxUncertainty; + return this; + } + + public Extension Build() + { + LocationConstraintContent content = new LocationConstraintContent(_latitude, _longitude, _radius, _maxUncertainty); + return new Extension(Constants.Extension.LocationConstraint, content); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeContent.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeContent.cs new file mode 100644 index 00000000..7aa92fb8 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeContent.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using Newtonsoft.Json; +using Yoti.Auth.Share.ThirdParty; + +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public class ThirdPartyAttributeContent + { + private readonly DateTime _expiryDate; + + public ThirdPartyAttributeContent(DateTime expiryDate, List definitions) + { + _expiryDate = expiryDate; + Definitions = definitions; + } + + [JsonProperty(PropertyName = "definitions")] + public List Definitions { get; private set; } + + [JsonProperty(PropertyName = "expiry_date")] + public string ExpiryDate + { + get + { + return _expiryDate.ToString(Constants.Format.RFC3339PatternMilli, DateTimeFormatInfo.InvariantInfo); + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilder.cs new file mode 100644 index 00000000..92df28e6 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilder.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using Yoti.Auth.Share.ThirdParty; + +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + public class ThirdPartyAttributeExtensionBuilder : ExtensionBuilder + { + private DateTime _expiryDate; + private List _definitions; + + public ThirdPartyAttributeExtensionBuilder() + { + _definitions = new List(); + } + + /// + /// Allows you to specify the expiry date of the third party attribute + /// + /// + public ThirdPartyAttributeExtensionBuilder WithExpiryDate(DateTime expiryDate) + { + _expiryDate = expiryDate; + return this; + } + + /// + /// Add a definition to the list of specified third party attribute definitions + /// + /// + public ThirdPartyAttributeExtensionBuilder WithDefinition(string definition) + { + Validation.NotNullOrEmpty(definition, nameof(definition)); + + _definitions.Add(new AttributeDefinition(definition)); + return this; + } + + /// + /// Set the list of third party attribute definitions (will override any previously set definitions) + /// + /// + public ThirdPartyAttributeExtensionBuilder WithDefinitions(List definitions) + { + Validation.NotNull(definitions, nameof(definitions)); + + var attributeDefinitions = new List(); + + foreach (string definition in definitions) + { + attributeDefinitions.Add(new AttributeDefinition(definition)); + } + + _definitions = attributeDefinitions; + return this; + } + + public new Extension Build() + { + var thirdPartyAttributeContent = new ThirdPartyAttributeContent(_expiryDate, _definitions); + + return new Extension( + Constants.Extension.ThirdPartyAttribute, + thirdPartyAttributeContent); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilder.cs new file mode 100644 index 00000000..05ac8fc8 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilder.cs @@ -0,0 +1,25 @@ +namespace Yoti.Auth.DigitalIdentity.Extensions +{ + /// + /// Allows you to provide a non-null object representing the content to be submitted in the + /// TRANSACTIONAL_FLOW extension. + /// + /// The type of the content + public class TransactionalFlowExtensionBuilder + { + private T _content; + + public TransactionalFlowExtensionBuilder WithContent(T content) + { + Validation.NotNull(content, nameof(content)); + + _content = content; + return this; + } + + public Extension Build() + { + return new Extension(Constants.Extension.TransactionalFlow, _content); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/GetQrCodeResult.cs b/src/Yoti.Auth/DigitalIdentity/GetQrCodeResult.cs new file mode 100644 index 00000000..63ca5e45 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/GetQrCodeResult.cs @@ -0,0 +1,32 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity.Extensions; + +namespace Yoti.Auth.DigitalIdentity +{ + public class GetQrCodeResult + { +#pragma warning disable 0649 + // These fields are assigned to by JSON deserialization + [JsonProperty("id")] + public string Id { get; set; } + + [JsonProperty("expiry")] + public string Expiry { get; set; } + + [JsonProperty("policy")] + public string Policy { get; set; } + + [JsonProperty("extensions")] + private List Extensions { get; set; } + + [JsonProperty("session")] + public ShareSessionResult Session { get; set; } + + [JsonProperty("redirectUri")] + public string RedirectUri { get; set; } + +#pragma warning restore 0649 + + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs new file mode 100644 index 00000000..d1821a8f --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs @@ -0,0 +1,46 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity +{ + public class Content + { + [JsonProperty("profile")] + public byte[] Profile { get; set; } + + [JsonProperty("extraData")] + public byte[] ExtraData { get; set; } + } + + public class ReceiptResponse + { + [JsonProperty("id")] + public string ID { get; set; } + + [JsonProperty("sessionId")] + public string SessionID { get; set; } + + [JsonProperty("timestamp")] + public string Timestamp { get; set; } + + [JsonProperty("rememberMeId")] + public string RememberMeID { get; set; } + + [JsonProperty("parentRememberMeId")] + public string ParentRememberMeID { get; set; } + + [JsonProperty("content")] + public Content Content { get; set; } + + [JsonProperty("otherPartyContent")] + public Content OtherPartyContent { get; set; } + + [JsonProperty("wrappedItemKeyId")] + public string WrappedItemKeyId { get; set; } + + [JsonProperty("wrappedKey")] + public byte[] WrappedKey { get; set; } + + [JsonProperty("error")] + public string Error { get; set; } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/GetSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/GetSessionResult.cs new file mode 100644 index 00000000..f5084f6b --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/GetSessionResult.cs @@ -0,0 +1,48 @@ +using Newtonsoft.Json; + + +namespace Yoti.Auth.DigitalIdentity +{ + public class GetSessionResult + { +#pragma warning disable 0649 + // These fields are assigned to by JSON deserialization + [JsonProperty("id")] + public string Id { get; set; } + + [JsonProperty("status")] + public string Status { get; set; } + + [JsonProperty("expiry")] + public string Expiry { get; set; } + + [JsonProperty("created")] + public string Created { get; set; } + + [JsonProperty("updated")] + public string Updated { get; set; } + + [JsonProperty("qrCode")] + public qrCode QrCode { get; set; } + + [JsonProperty("receipt")] + public receipt Receipt { get; set; } + +#pragma warning restore 0649 + + } + + public class qrCode + { + [JsonProperty("id")] + public string Id { get; set; } + } + + public class receipt + { + [JsonProperty("id")] + public string Id { get; set; } + } + + +} diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/AdvancedIdentityProfile.cs b/src/Yoti.Auth/DigitalIdentity/Policy/AdvancedIdentityProfile.cs new file mode 100644 index 00000000..40896fdd --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/AdvancedIdentityProfile.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class AdvancedIdentityProfile + { + [JsonProperty(PropertyName = "profiles")] + public List Profiles { get; set; } + } + + public class Profile + { + [JsonProperty(PropertyName = "trust_framework")] + public string TrustFramework { get; set; } + [JsonProperty(PropertyName = "schemes")] + public List Schemes { get; set; } + } + + public class Scheme + { + [JsonProperty(PropertyName = "label")] + public string Label { get; set; } + [JsonProperty(PropertyName = "objective")] + public string Objective { get; set; } + [JsonProperty(PropertyName = "type")] + public string Type { get; set; } + } + +} diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/Constraint.cs b/src/Yoti.Auth/DigitalIdentity/Policy/Constraint.cs new file mode 100644 index 00000000..df5fc9e4 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/Constraint.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class Constraint + { + [JsonRequired] + [JsonProperty(PropertyName = "type")] + public string ConstraintType { get; private set; } + + public Constraint(string constraintType) + { + ConstraintType = constraintType; + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs b/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs new file mode 100644 index 00000000..a0e60b5c --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class Notification + { + [JsonProperty(PropertyName = "url")] + public string Url { get; set; } // Required if 'notification' is defined + [JsonProperty(PropertyName = "method")] + public string Method { get; set; } = "POST"; // Optional, defaults to 'POST' + [JsonProperty(PropertyName = "headers")] + public Dictionary Headers { get; set; } // Optional + [JsonProperty(PropertyName = "verifyTls")] + public bool VerifyTls { get; set; } = true; // Optional, defaults to 'true' if URL is HTTPS + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/Policy.cs b/src/Yoti.Auth/DigitalIdentity/Policy/Policy.cs new file mode 100644 index 00000000..9bd799ec --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/Policy.cs @@ -0,0 +1,113 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + /// + /// Set of data required to request a sharing transaction + /// + public class Policy + { + internal const int SelfieAuthType = 1; + internal const int PinAuthType = 2; + + [JsonProperty(PropertyName = "wanted")] + private readonly ICollection _wantedAttributes; + + [JsonProperty(PropertyName = "wanted_auth_types")] + private readonly HashSet _wantedAuthTypes; + + [JsonProperty(PropertyName = "wanted_remember_me")] + private readonly bool _wantedRememberMeId; + +#pragma warning disable 0414 //"Value never used" warning: the JsonProperty is used when creating the DynamicPolicy JSON + + [JsonProperty(PropertyName = "wanted_remember_me_optional")] + private readonly bool _isWantedRememberMeIdOptional; + +#pragma warning restore 0414 + + [JsonProperty(PropertyName = "identity_profile_requirements")] + private readonly object _identityProfileRequirements; + + [JsonProperty(PropertyName = "advanced_identity_profile_requirements")] + private readonly object _advancedIdentityProfileRequirements; + + public Policy( + ICollection wantedAttributes, + HashSet wantedAuthTypes, + bool wantedRememberMeId, + object identityProfileRequirements = null, + object advancedIdentityProfileRequirements = null + ) + { + _wantedAttributes = wantedAttributes; + _wantedAuthTypes = wantedAuthTypes; + _wantedRememberMeId = wantedRememberMeId; + _isWantedRememberMeIdOptional = false; + _identityProfileRequirements = identityProfileRequirements; + _advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + + } + + /// + /// Set of required + /// + [JsonIgnore] + public ICollection WantedAttributes + { + get + { + return _wantedAttributes; + } + } + + /// + /// Type of authentications + /// + [JsonIgnore] + public HashSet WantedAuthTypes + { + get + { + return _wantedAuthTypes; + } + } + + /// + /// Is RememberMeId wanted in the policy + /// + [JsonIgnore] + public bool WantedRememberMeId + { + get + { + return _wantedRememberMeId; + } + } + + /// + /// IdentityProfileRequirements requested in the policy + /// + [JsonIgnore] + public object IdentityProfileRequirements + { + get + { + return _identityProfileRequirements; + } + } + + /// + /// AdvancedIdentityProfileRequirements requested in the policy + /// + [JsonIgnore] + public object AdvancedIdentityProfileRequirements + { + get + { + return _advancedIdentityProfileRequirements; + } + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/PolicyBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/PolicyBuilder.cs new file mode 100644 index 00000000..d85c9694 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/PolicyBuilder.cs @@ -0,0 +1,178 @@ +using System.Collections.Generic; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class PolicyBuilder + { + private readonly Dictionary _wantedAttributes = new Dictionary(); + private readonly HashSet _wantedAuthTypes = new HashSet(); + private bool _wantedRememberMeId; + private object _identityProfileRequirements; + private AdvancedIdentityProfile _advancedIdentityProfileRequirements; + + public PolicyBuilder WithWantedAttribute(WantedAttribute wantedAttribute) + { + Validation.NotNull(wantedAttribute, nameof(wantedAttribute)); + + string key = wantedAttribute.Derivation ?? wantedAttribute.Name; + + if (wantedAttribute.Constraints?.Count > 0) + { + key += "-" + wantedAttribute.Constraints.GetHashCode(); + } + + _wantedAttributes[key] = wantedAttribute; + return this; + } + + public PolicyBuilder WithWantedAttribute(string name, List constraints = null) + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName(name) + .WithConstraints(constraints) + .Build(); + return WithWantedAttribute(wantedAttribute); + } + + public PolicyBuilder WithFamilyName(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.FamilyNameAttribute, constraints); + } + + public PolicyBuilder WithGivenNames(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.GivenNamesAttribute, constraints); + } + + public PolicyBuilder WithFullName(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.FullNameAttribute, constraints); + } + + public PolicyBuilder WithDateOfBirth(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DateOfBirthAttribute, constraints); + } + + public PolicyBuilder WithAgeOver(int age, List constraints = null) + { + return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeOverAttribute}:{age}", constraints); + } + + public PolicyBuilder WithAgeUnder(int age, List constraints = null) + { + return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeUnderAttribute}:{age}", constraints); + } + + private PolicyBuilder WithAgeDerivedAttribute(string derivation, List constraints) + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName(Constants.UserProfile.DateOfBirthAttribute) + .WithDerivation(derivation) + .WithConstraints(constraints) + .Build(); + return WithWantedAttribute(wantedAttribute); + } + + public PolicyBuilder WithGender(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.GenderAttribute, constraints); + } + + public PolicyBuilder WithPostalAddress(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.PostalAddressAttribute, constraints); + } + + public PolicyBuilder WithStructuredPostalAddress(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.StructuredPostalAddressAttribute, constraints); + } + + public PolicyBuilder WithNationality(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.NationalityAttribute, constraints); + } + + public PolicyBuilder WithPhoneNumber(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.PhoneNumberAttribute, constraints); + } + + public PolicyBuilder WithSelfie(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.SelfieAttribute, constraints); + } + + public PolicyBuilder WithEmail(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.EmailAddressAttribute, constraints); + } + + public PolicyBuilder WithDocumentDetails(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DocumentDetailsAttribute, constraints); + } + + public PolicyBuilder WithDocumentImages(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DocumentImagesAttribute, constraints); + } + + public PolicyBuilder WithSelfieAuthentication(bool enabled) + { + return WithAuthType(Policy.SelfieAuthType, enabled); + } + + public PolicyBuilder WithPinAuthentication(bool enabled) + { + return WithAuthType(Policy.PinAuthType, enabled); + } + + public PolicyBuilder WithAuthType(int authType, bool enabled) + { + if (enabled) + { + _wantedAuthTypes.Add(authType); + return this; + } + + _wantedAuthTypes.Remove(authType); + return this; + } + + public PolicyBuilder WithRememberMeId(bool required) + { + _wantedRememberMeId = required; + return this; + } + + /// + /// Use an Identity Profile Requirement object for the share + /// + /// object describing the identity profile requirements to use + /// with the identity profile requirements + public PolicyBuilder WithIdentityProfileRequirements(object identityProfileRequirements) + { + _identityProfileRequirements = identityProfileRequirements; + return this; + } + + /// + /// Use an Advanced Identity Profile Requirement object for the share + /// + /// object describing the advanced identity profile requirements to use + /// with the advanced identity profile requirements + public PolicyBuilder WithAdvancedIdentityProfileRequirements(AdvancedIdentityProfile advancedIdentityProfileRequirements) + { + _advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + return this; + } + + public Policy Build() + { + return new Policy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements, _advancedIdentityProfileRequirements); + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/PreferredSources.cs b/src/Yoti.Auth/DigitalIdentity/Policy/PreferredSources.cs new file mode 100644 index 00000000..b315166b --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/PreferredSources.cs @@ -0,0 +1,20 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class PreferredSources + { + [JsonProperty(PropertyName = "anchors")] + public List WantedAnchors { get; private set; } + + [JsonProperty(PropertyName = "soft_preference")] + public bool SoftPreference { get; private set; } + + public PreferredSources(List wantedAnchors, bool softPreference = false) + { + WantedAnchors = wantedAnchors; + SoftPreference = softPreference; + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraint.cs b/src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraint.cs new file mode 100644 index 00000000..1430c5b6 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraint.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class SourceConstraint : Constraint + { + private const string _constraintTypeSource = "SOURCE"; + + [JsonProperty(PropertyName = "preferred_sources")] + public PreferredSources PreferredSources { get; private set; } + + public SourceConstraint(List wantedAnchors, bool softPreference) : base(constraintType: _constraintTypeSource) + { + PreferredSources = new PreferredSources(wantedAnchors, softPreference); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraintBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraintBuilder.cs new file mode 100644 index 00000000..f11dbf7f --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/SourceConstraintBuilder.cs @@ -0,0 +1,72 @@ +using System.Collections.Generic; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class SourceConstraintBuilder + { + private readonly List _wantedAnchors = new List(); + private bool _softPreference; + + /// + /// Add an anchor to the source constraints list. + /// This is ordered, from the most preferred one (first in the list) + /// to the least preferred one (last in the list). + /// + /// + public SourceConstraintBuilder WithAnchor(WantedAnchor anchor) + { + _wantedAnchors.Add(anchor); + return this; + } + + /// + /// If set to false, it means that only anchors in the list are + /// accepted, in order of preference. + /// If set to true, it instead means that if none of the anchors + /// in the list can be satisfied, then any other anchor that is + /// not in the list is accepted. + /// + /// + public SourceConstraintBuilder WithSoftPreference(bool softPreference) + { + _softPreference = softPreference; + return this; + } + + public SourceConstraintBuilder WithAnchorByValue(string value, string subType) + { + _wantedAnchors.Add( + new WantedAnchorBuilder() + .WithValue(value) + .WithSubType(subType) + .Build()); + + return this; + } + + public SourceConstraintBuilder WithPassport(string subType = "") + { + return WithAnchorByValue(Constants.DocumentDetails.DocumentTypePassport, subType); + } + + public SourceConstraintBuilder WithDrivingLicense(string subType = "") + { + return WithAnchorByValue(Constants.DocumentDetails.DocumentTypeDrivingLicense, subType); + } + + public SourceConstraintBuilder WithNationalId(string subType = "") + { + return WithAnchorByValue(Constants.DocumentDetails.DocumentTypeNationalId, subType); + } + + public SourceConstraintBuilder WithPasscard(string subType = "") + { + return WithAnchorByValue(Constants.DocumentDetails.DocumentTypePassCard, subType); + } + + public SourceConstraint Build() + { + return new SourceConstraint(_wantedAnchors, _softPreference); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchor.cs b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchor.cs new file mode 100644 index 00000000..7cf4e9da --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchor.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class WantedAnchor + { + [JsonProperty(PropertyName = "name")] + public string Name { get; private set; } + + [JsonProperty(PropertyName = "sub_type")] + public string SubType { get; private set; } + + public WantedAnchor(string name, string subType) + { + Name = name; + SubType = subType; + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchorBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchorBuilder.cs new file mode 100644 index 00000000..de66c6b7 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAnchorBuilder.cs @@ -0,0 +1,37 @@ +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class WantedAnchorBuilder + { + private string _name; + private string _subType; + + /// + /// WithValue sets the anchor's name + /// + /// Anchor name + public WantedAnchorBuilder WithValue(string name) + { + _name = name; + return this; + } + + /// + /// WithSubType sets the anchor's sub-type + /// + /// Anchor sub-type + public WantedAnchorBuilder WithSubType(string subType) + { + _subType = subType; + return this; + } + + /// + /// Builds the WantedAnchor + /// + /// + public WantedAnchor Build() + { + return new WantedAnchor(_name, _subType); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/WantedAttribute.cs b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAttribute.cs new file mode 100644 index 00000000..a5319938 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAttribute.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class WantedAttribute + { + [JsonRequired] + [JsonProperty(PropertyName = "name")] + public string Name { get; private set; } + + [JsonProperty(PropertyName = "derivation")] + public string Derivation { get; private set; } + + [JsonRequired] + [JsonProperty(PropertyName = "optional")] + public bool? Optional { get; private set; } + + [JsonProperty(PropertyName = "accept_self_asserted")] + public bool? AcceptSelfAsserted { get; private set; } + + [JsonProperty(PropertyName = "constraints")] + public List Constraints { get; private set; } + + public WantedAttribute(string name, string derivation, List constraints, bool? acceptSelfAsserted = null, bool? optional = false) + { + Name = name; + Derivation = derivation; + Optional = optional; + AcceptSelfAsserted = acceptSelfAsserted; + Constraints = constraints; + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/WantedAttributeBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAttributeBuilder.cs new file mode 100644 index 00000000..34bfc1fa --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/WantedAttributeBuilder.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class WantedAttributeBuilder + { + private string _name; + private string _derivation; + private List _constraints = new List(); + private bool? _acceptSelfAsserted; + private bool? _optional; + + public WantedAttributeBuilder WithName(string name) + { + _name = name; + return this; + } + + public WantedAttributeBuilder WithOptional(bool optional) + { + _optional = optional; + return this; + } + + public WantedAttributeBuilder WithDerivation(string derivation) + { + _derivation = derivation; + return this; + } + + /// + /// Adds a constraint to the wanted attribute. + /// + /// + public WantedAttributeBuilder WithConstraint(Constraint constraint) + { + _constraints.Add(constraint); + return this; + } + + /// + /// Add constraints to the wanted attribute. + /// Calling this will override any previously set constraints for this attribute. + /// + /// Constraints + public WantedAttributeBuilder WithConstraints(List constraints) + { + _constraints = constraints; + return this; + } + + /// + /// Allow or deny the acceptance of self asserted attributes + /// + /// + public WantedAttributeBuilder WithAcceptSelfAsserted(bool acceptSelfAsserted) + { + _acceptSelfAsserted = acceptSelfAsserted; + return this; + } + + public WantedAttribute Build() + { + Validation.NotNullOrEmpty(_name, nameof(_name)); + + return new WantedAttribute(_name, _derivation, _constraints, _acceptSelfAsserted, _optional); + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/QrRequest.cs b/src/Yoti.Auth/DigitalIdentity/QrRequest.cs new file mode 100644 index 00000000..70ccd7c0 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/QrRequest.cs @@ -0,0 +1,40 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.DigitalIdentity +{ + public class QrRequest + { + [JsonProperty(PropertyName = "transport")] + private readonly string _transport; + + [JsonProperty(PropertyName = "displayMode")] + private readonly string _displayMode; + + [JsonIgnore] + public string DisplayMode + { + get + { + return _displayMode; + } + } + + [JsonIgnore] + public string Transport + { + get + { + return _transport; + } + } + + public QrRequest(string transport = null, string displayMode = null) + { + _transport = transport; + _displayMode = displayMode; + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/QrRequestBuilder.cs b/src/Yoti.Auth/DigitalIdentity/QrRequestBuilder.cs new file mode 100644 index 00000000..2e066d3d --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/QrRequestBuilder.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.DigitalIdentity +{ + public class QrRequestBuilder + { + private string _transport = ""; + private string _displayMode = ""; + + /// + /// Transport property. Optional - default is 'INLINE' + /// + /// + /// with a Transport added + public QrRequestBuilder WithTransport(string transport) + { + _transport = transport; + return this; + } + + /// + /// DisplayMode property. Optional - default is 'QR_CODE' + /// + /// + /// with a Display Mode added + public QrRequestBuilder WithDisplayMode(string displayMode) + { + _displayMode = displayMode ; + return this; + } + + public QrRequest Build() + { + return new QrRequest(_transport,_displayMode); + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/ReceiptItemKeyResponse.cs b/src/Yoti.Auth/DigitalIdentity/ReceiptItemKeyResponse.cs new file mode 100644 index 00000000..da03a5ba --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ReceiptItemKeyResponse.cs @@ -0,0 +1,16 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ReceiptItemKeyResponse + { + [JsonProperty("id")] + public string ID { get; set; } + + [JsonProperty("iv")] + public byte[] Iv { get; set; } + + [JsonProperty("value")] + public byte[] Value { get; set; } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionRequest.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionRequest.cs new file mode 100644 index 00000000..c1d24ddc --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionRequest.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ShareSessionRequest + { + + [JsonProperty(PropertyName = "policy")] + private readonly Policy.Policy _dynamicPolicy; + + [JsonProperty(PropertyName = "extensions")] + private readonly List _extensions; + + [JsonProperty(PropertyName = "subject")] + private readonly object _subject; + + [JsonProperty(PropertyName = "redirectUri")] + public string _redirectUri { get; set; } + + [JsonProperty(PropertyName = "notification")] + public Notification _notification { get; set; } + + + + [JsonIgnore] + public Policy.Policy DynamicPolicy + { + get + { + return _dynamicPolicy; + } + } + + [JsonIgnore] + public List Extensions + { + get + { + return _extensions; + } + } + + + [JsonIgnore] + public object Subject + { + get + { + return _subject; + } + } + + [JsonIgnore] + public string RedirectUri + { + get + { + return _redirectUri; + } + } + + [JsonIgnore] + public Notification Notification + { + get + { + return _notification; + } + } + + public ShareSessionRequest(Policy.Policy dynamicPolicy, string redirectUri, Notification notification = null, List extensions = null, object subject = null) + { + _redirectUri = redirectUri; + _notification = notification; + _dynamicPolicy = dynamicPolicy; + _extensions = extensions ?? new List(); + _subject = subject; + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs new file mode 100644 index 00000000..1b9a8353 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs @@ -0,0 +1,77 @@ +using System.Collections.Generic; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ShareSessionRequestBuilder + { + private string _redirectUri; + private Policy.Policy _dynamicPolicy; + private Notification _notification; + private readonly List _extensions = new List(); + private object _subject; + + /// + /// The device's redirect url. Must be a URL relative to the Application Domain + /// specified in Yoti Hub + /// + /// + /// with a Redirect Uri added + public ShareSessionRequestBuilder WithRedirectUri(string redirectUri) + { + _redirectUri = redirectUri; + return this; + } + + /// + /// The customisable to use in the share + /// + /// + /// with a Dynamic Policy added + public ShareSessionRequestBuilder WithPolicy(Policy.Policy dynamicPolicy) + { + _dynamicPolicy = dynamicPolicy; + return this; + } + + /// + /// The customisable to use in the ShareSession + /// + /// + /// with a Notification added + public ShareSessionRequestBuilder WithNotification(Notification notification) + { + + _notification = notification; + return this; + } + + /// + /// to be activated for the application + /// + /// to add + /// with an extension added + public ShareSessionRequestBuilder WithExtension(BaseExtension extension) + { + _extensions.Add(extension); + return this; + } + + /// + /// The subject object + /// + /// The object describing the subject + /// with the subject details provided + public ShareSessionRequestBuilder WithSubject(object subject) + { + _subject = subject; + return this; + } + + public ShareSessionRequest Build() + { + return new ShareSessionRequest(_dynamicPolicy, _redirectUri, _notification, _extensions, _subject); + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs new file mode 100644 index 00000000..eb04f88d --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -0,0 +1,24 @@ +using Newtonsoft.Json; + + +namespace Yoti.Auth.DigitalIdentity +{ + public class ShareSessionResult + { +#pragma warning disable 0649 + // These fields are assigned to by JSON deserialization + [JsonProperty("id")] + public string Id { get; set; } + + [JsonProperty("status")] + public string Status { get; set; } + + [JsonProperty("expiry")] + public string Expiry { get; set; } + +#pragma warning restore 0649 + + } + + +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs new file mode 100644 index 00000000..bc2e649a --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs @@ -0,0 +1,29 @@ +using Yoti.Auth.Profile; +using Yoti.Auth.Share; + +namespace Yoti.Auth.DigitalIdentity +{ + public class SharedReceiptResponse + { + public string ID { get; set; } + public string SessionID { get; set; } + public string RememberMeID { get; set; } + public string ParentRememberMeID { get; set; } + public string Timestamp { get; set; } + public string Error { get; set; } + public UserContent UserContent { get; set; } + public ApplicationContent ApplicationContent { get; set; } + } + + public class ApplicationContent + { + public ApplicationProfile ApplicationProfile { get; set; } + public ExtraData ExtraData { get; set; } + } + + public class UserContent + { + public YotiProfile UserProfile { get; set; } + public ExtraData ExtraData { get; set; } + } +} diff --git a/src/Yoti.Auth/DigitalIdentityClient.cs b/src/Yoti.Auth/DigitalIdentityClient.cs new file mode 100644 index 00000000..e17070ca --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentityClient.cs @@ -0,0 +1,114 @@ +using System; +using System.IO; +using System.Net.Http; +using System.Threading.Tasks; +using Org.BouncyCastle.Crypto; +using Yoti.Auth.DigitalIdentity; + +namespace Yoti.Auth +{ + public class DigitalIdentityClient + { + private readonly string _sdkId; + private readonly AsymmetricCipherKeyPair _keyPair; + private readonly DigitalIdentityClientEngine _yotiDigitalClientEngine; + internal Uri ApiUri { get; private set; } + + /// + /// Create a + /// + /// The client SDK ID provided on the Yoti Hub. + /// + /// The private key file provided on the Yoti Hub as a . + /// + public DigitalIdentityClient(string sdkId, StreamReader privateKeyStream) + : this(new HttpClient(), sdkId, CryptoEngine.LoadRsaKey(privateKeyStream)) + { + } + + /// + /// Create a with a specified + /// + /// Allows the specification of a HttpClient + /// The client SDK ID provided on the Yoti Hub. + /// + /// The private key file provided on the Yoti Hub as a . + /// + public DigitalIdentityClient(HttpClient httpClient, string sdkId, StreamReader privateKeyStream) + : this(httpClient, sdkId, CryptoEngine.LoadRsaKey(privateKeyStream)) + { + } + + /// + /// Create a with a specified + /// + /// Allows the specification of a HttpClient + /// The client SDK ID provided on the Yoti Hub. + /// The key pair from the Yoti Hub. + public DigitalIdentityClient(HttpClient httpClient, string sdkId, AsymmetricCipherKeyPair keyPair) + { + Validation.NotNullOrEmpty(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + + _sdkId = sdkId; + _keyPair = keyPair; + + SetYotiApiUri(); + + _yotiDigitalClientEngine = new DigitalIdentityClientEngine(httpClient); + } + + /// + /// Initiate a sharing process based on a . + /// + /// + /// Details of the device's callback endpoint, and extensions for the application + /// + /// + public ShareSessionResult CreateShareSession(ShareSessionRequest shareSessionRequest) + { + Task task = Task.Run(async () => await CreateShareSessionAsync(shareSessionRequest).ConfigureAwait(false)); + + return task.Result; + } + + /// + /// Asynchronously initiate a sharing process based on a . + /// + /// + /// Details of the device's callback endpoint, and extensions for the application + /// + /// + public async Task CreateShareSessionAsync(ShareSessionRequest shareSessionRequest) + { + return await _yotiDigitalClientEngine.CreateShareSessionAsync(_sdkId, _keyPair, ApiUri, shareSessionRequest).ConfigureAwait(false); + } + + public SharedReceiptResponse GetShareReceipt(string receiptId) + { + Task task = Task.Run(async () => await _yotiDigitalClientEngine.GetShareReceipt(_sdkId, _keyPair, ApiUri, receiptId).ConfigureAwait(false)); + return task.Result; + } + + internal void SetYotiApiUri() + { + if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("YOTI_API_URL"))) + { + ApiUri = new Uri(Environment.GetEnvironmentVariable("YOTI_API_URL")); + } + else + { + ApiUri = new Uri(Constants.Api.DefaultYotiShareApiUrl); + } + } + + public DigitalIdentityClient OverrideApiUri(Uri apiUri) + { + ApiUri = apiUri; + + return this; + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentityClientEngine.cs b/src/Yoti.Auth/DigitalIdentityClientEngine.cs new file mode 100644 index 00000000..2492e8c5 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentityClientEngine.cs @@ -0,0 +1,43 @@ +using System; +#pragma warning disable S1128 +using System.Net; +#pragma warning restore S1128 +using System.Net.Http; +using System.Threading.Tasks; +using Org.BouncyCastle.Crypto; +using Yoti.Auth.DigitalIdentity; + +namespace Yoti.Auth +{ + internal class DigitalIdentityClientEngine + { + private readonly HttpClient _httpClient; + + public DigitalIdentityClientEngine(HttpClient httpClient) + { + _httpClient = httpClient; + + #if NET452 || NET462 || NET472 || NET48 + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + #endif + } + + public async Task CreateShareSessionAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, ShareSessionRequest shareSessionRequest) + { + ShareSessionResult result = await Task.Run(async () => await DigitalIdentityService.CreateShareSession( + _httpClient, apiUrl, sdkId, keyPair, shareSessionRequest).ConfigureAwait(false)) + .ConfigureAwait(false); + + return result; + } + + public async Task GetShareReceipt(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string receiptId) + { + SharedReceiptResponse result = await Task.Run(async () => await DigitalIdentityService.GetShareReceipt( + _httpClient, sdkId, apiUrl, keyPair, receiptId).ConfigureAwait(false)) + .ConfigureAwait(false); + + return result; + } + } +} diff --git a/src/Yoti.Auth/DocScan/DocScanService.cs b/src/Yoti.Auth/DocScan/DocScanService.cs index 404c19e5..811b9f5f 100644 --- a/src/Yoti.Auth/DocScan/DocScanService.cs +++ b/src/Yoti.Auth/DocScan/DocScanService.cs @@ -156,6 +156,11 @@ public async Task GetMediaContent(string sdkId, AsymmetricCipherKeyP return null; } + if (response.Content.Headers.ContentType == null) + { + return null; + } + string contentType = response.Content.Headers.ContentType.MediaType; diff --git a/src/Yoti.Auth/Exceptions/DigitalIdentityException.cs b/src/Yoti.Auth/Exceptions/DigitalIdentityException.cs new file mode 100644 index 00000000..cfbe594f --- /dev/null +++ b/src/Yoti.Auth/Exceptions/DigitalIdentityException.cs @@ -0,0 +1,22 @@ +using System; + +namespace Yoti.Auth.Exceptions +{ + public class DigitalIdentityException : YotiException + { + public DigitalIdentityException() + : base() + { + } + + public DigitalIdentityException(string message) + : base(message) + { + } + + public DigitalIdentityException(string message, Exception innerException) + : base(message, innerException) + { + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs b/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs index 78ff280e..ee476783 100644 --- a/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs +++ b/src/Yoti.Auth/ShareUrl/Policy/DynamicPolicyBuilder.cs @@ -30,6 +30,7 @@ public DynamicPolicyBuilder WithWantedAttribute(string name, List co { WantedAttribute wantedAttribute = new WantedAttributeBuilder() .WithName(name) + .WithOptional(false) .WithConstraints(constraints) .Build(); return WithWantedAttribute(wantedAttribute); @@ -175,4 +176,4 @@ public DynamicPolicy Build() return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements, _advancedIdentityProfileRequirements); } } -} \ No newline at end of file +} diff --git a/src/Yoti.Auth/ShareUrl/Policy/WantedAttribute.cs b/src/Yoti.Auth/ShareUrl/Policy/WantedAttribute.cs index 99e7b663..fdacbcf5 100644 --- a/src/Yoti.Auth/ShareUrl/Policy/WantedAttribute.cs +++ b/src/Yoti.Auth/ShareUrl/Policy/WantedAttribute.cs @@ -14,7 +14,7 @@ public class WantedAttribute [JsonRequired] [JsonProperty(PropertyName = "optional")] - public bool Optional { get; private set; } + public bool? Optional { get; private set; } [JsonProperty(PropertyName = "accept_self_asserted")] public bool? AcceptSelfAsserted { get; private set; } @@ -22,13 +22,13 @@ public class WantedAttribute [JsonProperty(PropertyName = "constraints")] public List Constraints { get; private set; } - public WantedAttribute(string name, string derivation, List constraints, bool? acceptSelfAsserted = null) + public WantedAttribute(string name, string derivation, List constraints, bool? acceptSelfAsserted = null, bool? optional = false) { Name = name; Derivation = derivation; - Optional = false; + Optional = optional; AcceptSelfAsserted = acceptSelfAsserted; Constraints = constraints; } } -} \ No newline at end of file +} diff --git a/src/Yoti.Auth/ShareUrl/Policy/WantedAttributeBuilder.cs b/src/Yoti.Auth/ShareUrl/Policy/WantedAttributeBuilder.cs index 4bf1b273..f4f35cb4 100644 --- a/src/Yoti.Auth/ShareUrl/Policy/WantedAttributeBuilder.cs +++ b/src/Yoti.Auth/ShareUrl/Policy/WantedAttributeBuilder.cs @@ -8,6 +8,7 @@ public class WantedAttributeBuilder private string _derivation; private List _constraints = new List(); private bool? _acceptSelfAsserted; + private bool? _optional; public WantedAttributeBuilder WithName(string name) { @@ -15,6 +16,12 @@ public WantedAttributeBuilder WithName(string name) return this; } + public WantedAttributeBuilder WithOptional(bool optional) + { + _optional = optional; + return this; + } + public WantedAttributeBuilder WithDerivation(string derivation) { _derivation = derivation; @@ -56,7 +63,7 @@ public WantedAttribute Build() { Validation.NotNullOrEmpty(_name, nameof(_name)); - return new WantedAttribute(_name, _derivation, _constraints, _acceptSelfAsserted); + return new WantedAttribute(_name, _derivation, _constraints, _acceptSelfAsserted, _optional); } } -} \ No newline at end of file +} diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index 85bf58f8..e5374455 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -1,7 +1,7 @@  - netstandard1.6;netstandard2.1;netcoreapp1.1;netcoreapp2.2;netcoreapp3.1;net452;net462;net472;net48; + netstandard1.6;netstandard2.1;netcoreapp3.1;net6.0;net452;net462;net472;net48; Yoti.Auth Yoti $(PackageTargetFallback);dnxcore50 @@ -19,7 +19,7 @@ False latest true - 3.15.0 + 3.16.0 @@ -37,17 +37,18 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + + @@ -58,6 +59,9 @@ + + + @@ -68,4 +72,32 @@ Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj index 8832cfb2..fc020afc 100644 --- a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj +++ b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1 + net6.0 @@ -35,4 +35,4 @@ - \ No newline at end of file + diff --git a/test/Yoti.Auth.Tests/CryptoEngineTests.cs b/test/Yoti.Auth.Tests/CryptoEngineTests.cs index 2f2cf09b..134cdc95 100644 --- a/test/Yoti.Auth.Tests/CryptoEngineTests.cs +++ b/test/Yoti.Auth.Tests/CryptoEngineTests.cs @@ -1,5 +1,6 @@ using System; using Microsoft.VisualStudio.TestTools.UnitTesting; +using Org.BouncyCastle.Crypto; using Yoti.Auth.Tests.Common; namespace Yoti.Auth.Tests @@ -28,5 +29,65 @@ public void EmptyOneTimeUseTokenThrowsError() Assert.IsTrue(exception.Message.Contains("one time use token")); } + + [TestMethod] + public void DecryptAesGcm_EmptySecretsThrowsError() + { + byte[] iv = new byte[12]; + byte[] secret = new byte[16]; + byte[] cipherText = new byte[32]; + + var exception = Assert.ThrowsException(() => + { + CryptoEngine.DecryptAesGcm(cipherText, iv, secret); + }); + + Assert.IsTrue(exception.Message.Contains("Failed to decrypt receipt key")); + } + + [TestMethod] + public void UnwrapReceiptKey_EmptySecretsThrowsError() + { + byte[] wrappedReceiptKey = new byte[32]; + byte[] encryptedItemKey = new byte[32]; + byte[] itemKeyIv = new byte[12]; + AsymmetricCipherKeyPair key = null; + + var exception = Assert.ThrowsException(() => + { + byte[] unwrappedKey = CryptoEngine.UnwrapReceiptKey(wrappedReceiptKey, encryptedItemKey, itemKeyIv, key); + }); + + Assert.IsTrue(exception.Message.Contains("Failed to unwrap receipt key")); + } + + [TestMethod] + public void DecryptContent_EmptySecretsThrowsError() + { + byte[] content = new byte[] { 0x01, 0x02, 0x03 }; // Example content + byte[] receiptContentKey = new byte[16]; // Example receipt content key + + var exception = Assert.ThrowsException(() => + { + byte[] decryptedContent = CryptoEngine.DecryptReceiptContent(content, receiptContentKey); + + }); + + Assert.IsTrue(exception.Message.Contains("Failed to decrypt receipt content")); + } + + [TestMethod] + public void DecryptReceiptContent_NullContentThrowsError() + { + byte[] content = null; // Example content + byte[] receiptContentKey = new byte[] { 0x01, 0x02, 0x03 }; // Example receipt content key + + var exception = Assert.ThrowsException(() => + { + byte[] unwrappedKey = CryptoEngine.DecryptReceiptContent(content, receiptContentKey); + }); + + Assert.IsTrue(exception.Message.Contains("Failed to decrypt receipt content: Failed to decrypt receipt content: content is null ")); + } } -} \ No newline at end of file +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs new file mode 100644 index 00000000..0e43838f --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Org.BouncyCastle.Crypto; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.Tests.Common; +using static System.Net.Mime.MediaTypeNames; + +namespace Yoti.Auth.Tests.DigitalIdentity +{ + [TestClass] + public class DigitalIdentityServiceTests + { + private const string _sdkID = "sdkID"; + private readonly Uri _apiURL = new Uri("https://apiurl.com"); + private readonly Dictionary _someHeaders = new Dictionary(); + private readonly HttpClient _httpClient = new HttpClient(); + private readonly AsymmetricCipherKeyPair _keyPair = KeyPair.Get(); + private ShareSessionRequest _someShareSessionRequest; + private const string _sessionID = "someSessionID"; + private QrRequest _someCreateQrRequest; + + [TestInitialize] + public void Startup() + { + _someHeaders.Add("Key", "Value"); + _someCreateQrRequest = TestTools.CreateQr.CreateQrStandard(); + _someShareSessionRequest = TestTools.ShareSession.CreateStandardShareSessionRequest(); + } + + [TestMethod] + public void ShouldFailWithNullHttpClient() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateShareSession(null, _apiURL, _sdkID, _keyPair, _someShareSessionRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("httpClient")); + } + + [TestMethod] + public void ShouldFailWithNullApiUrl() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateShareSession(_httpClient, null, _sdkID, _keyPair, _someShareSessionRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("apiUrl")); + } + + [TestMethod] + public void ShouldFailWithNullSdkId() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateShareSession(_httpClient, _apiURL, null, _keyPair, _someShareSessionRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("sdkId")); + } + + [TestMethod] + public void ShouldFailWithNullKeyPair() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateShareSession(_httpClient, _apiURL, _sdkID, null, _someShareSessionRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("keyPair")); + } + + [TestMethod] + public void ShouldFailWithNullDynamicScenario() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateShareSession(_httpClient, _apiURL, _sdkID, _keyPair, null).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("shareSessionRequest")); + } + + [TestMethod] + public void RetrieveSessionShouldThrowExceptionForMissingSdkId() + { + var exception = Assert.ThrowsExceptionAsync(async () => + { + await DigitalIdentityService.GetSession(_httpClient, _apiURL, null, _keyPair, _sessionID); + }); + + Assert.IsTrue(exception.Exception.InnerException.Message.Contains("sdkId")); + } + + [TestMethod] + public void RetrieveSessionShouldThrowExceptionForMissingKeyPair() + { + var exception = Assert.ThrowsExceptionAsync(async () => + { + await DigitalIdentityService.GetSession(_httpClient, _apiURL, _sdkID, null, _sessionID); + }).Result; + + Assert.IsTrue(exception.Message.Contains("keyPair")); + } + + [TestMethod] + public void RetrieveSessionShouldThrowExceptionForMissingSessionId() + { + var exception = Assert.ThrowsExceptionAsync(async () => + { + await DigitalIdentityService.GetSession(_httpClient, _apiURL, _sdkID, _keyPair, null); + }).Result; + + Assert.IsTrue(exception.Message.Contains("sessionId")); + } + + [TestMethod] + public void CreateQrCodeShouldFailWithNullHttpClient() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateQrCode(null, _apiURL, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("httpClient")); + } + + [TestMethod] + public void CreateQrCodeShouldFailWithNullApiUrl() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateQrCode(_httpClient, null, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("apiUrl")); + } + + [TestMethod] + public void CreateQrCodeShouldFailWithNullSdkId() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID, _someCreateQrRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("sdkId")); + } + + [TestMethod] + public void CreateQrCodeShouldFailWithNullKeyPair() + { + var aggregateException = Assert.ThrowsException(() => + { + DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID, _someCreateQrRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(aggregateException.InnerException.Message.Contains("keyPair")); + } + + [TestMethod] + public void RetrieveQrShouldThrowExceptionForMissingSdkId() + { + var exception = Assert.ThrowsExceptionAsync(async () => + { + await DigitalIdentityService.GetQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID); + }); + + Assert.IsTrue(exception.Exception.InnerException.Message.Contains("sdkId")); + } + + [TestMethod] + public void RetrieveQrCodeShouldThrowExceptionForMissingKeyPair() + { + var exception = Assert.ThrowsExceptionAsync(async () => + { + await DigitalIdentityService.GetQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID); + }).Result; + + Assert.IsTrue(exception.Message.Contains("keyPair")); + } + + [TestMethod] + public void RetrieveQrCodeShouldThrowExceptionForMissingSessionId() + { + var exception = Assert.ThrowsExceptionAsync(async () => + { + await DigitalIdentityService.GetQrCode(_httpClient, _apiURL, _sdkID, _keyPair, null); + }).Result; + + Assert.IsTrue(exception.Message.Contains("qrCodeId")); + } + + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ExtensionBuilderTests.cs new file mode 100644 index 00000000..901fb515 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ExtensionBuilderTests.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.DigitalIdentity.Extensions; + +namespace Yoti.Auth.Tests.DigitalIdentity.Extensions +{ + [TestClass] + public class ExtensionBuilderTests + { + private const string _someType = "Some Type"; + private static readonly Dictionary _someContent = new Dictionary(); + + [TestMethod] + public void ShouldBuildWithTypeAndContent() + { + var extension = new ExtensionBuilder>() + .WithType(_someType) + .WithContent(_someContent) + .Build(); + + Assert.AreEqual(_someType, extension.ExtensionType); + Assert.AreEqual(_someContent, extension.Content); + } + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs new file mode 100644 index 00000000..eec03f9d --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs @@ -0,0 +1,100 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.ShareUrl.Extensions; +using Assert = Microsoft.VisualStudio.TestTools.UnitTesting.Assert; + +namespace Yoti.Auth.Tests.DigitalIdentity.Extensions +{ + [TestClass] + public class LocationConstraintExtensionBuilderTests + { + private const double _someLatitude = 1d; + private const double _someLongitude = 2d; + private const double _someRadius = 3d; + private const double _someUncertainty = 4d; + + [DataTestMethod] + [DataRow(-91)] + [DataRow(91)] + [TestMethod] + public void ShouldFailForLatitudesOutsideOfRange(double latitude) + { + Assert.ThrowsException(() => + { + new LocationConstraintExtensionBuilder() + .WithLatitude(latitude) + .Build(); + }); + } + + [DataTestMethod] + [DataRow(-181)] + [DataRow(181)] + [TestMethod] + public void ShouldFailForLongitudesOutsideOfRange(double longitude) + { + Assert.ThrowsException(() => + { + new LocationConstraintExtensionBuilder() + .WithLongitude(longitude) + .Build(); + }); + } + + [TestMethod] + public void ShouldFailForRadiusLessThanZero() + { + Assert.ThrowsException(() => + { + new LocationConstraintExtensionBuilder() + .WithRadius(-1) + .Build(); + }); + } + + [TestMethod] + public void ShouldFailForUncertaintyLessThanZero() + { + Assert.ThrowsException(() => + { + new LocationConstraintExtensionBuilder() + .WithMaxUncertainty(-1) + .Build(); + }); + } + + [TestMethod] + public void ShouldBuildLocationConstraintWithGivenValues() + { + Extension extension = new LocationConstraintExtensionBuilder() + .WithLatitude(_someLatitude) + .WithLongitude(_someLongitude) + .WithRadius(_someRadius) + .WithMaxUncertainty(_someUncertainty) + .Build(); + + Assert.AreEqual(Constants.Extension.LocationConstraint, extension.ExtensionType); + DeviceLocation deviceLocation = extension.Content.ExpectedDeviceLocation; + Assert.AreEqual(_someLatitude, deviceLocation.Latitude); + Assert.AreEqual(_someLongitude, deviceLocation.Longitude); + Assert.AreEqual(_someRadius, deviceLocation.Radius); + Assert.AreEqual(_someUncertainty, deviceLocation.MaxUncertainty); + } + + [TestMethod] + public void ShouldBuildLocationConstraintWithDefaultValues() + { + Extension extension = new LocationConstraintExtensionBuilder() + .WithLatitude(_someLatitude) + .WithLongitude(_someLongitude) + .Build(); + + Assert.AreEqual(Constants.Extension.LocationConstraint, extension.ExtensionType); + DeviceLocation deviceLocation = extension.Content.ExpectedDeviceLocation; + Assert.AreEqual(_someLatitude, deviceLocation.Latitude); + Assert.AreEqual(_someLongitude, deviceLocation.Longitude); + Assert.AreEqual(150d, deviceLocation.Radius); + Assert.AreEqual(150d, deviceLocation.MaxUncertainty); + } + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs new file mode 100644 index 00000000..c610e9b1 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.Share.ThirdParty; +using Yoti.Auth.DigitalIdentity.Extensions; + +namespace Yoti.Auth.Tests.DigitalIdentity.Extensions +{ + [TestClass] + public class ThirdPartyAttributeExtensionBuilderTests + { + private readonly DateTime _someDate = DateTime.Today.AddDays(1); + private const string _someDefinition = "com.thirdparty.id"; + + [TestMethod] + public void ShouldFailForNullDefinition() + { + var exception = Assert.ThrowsException(() => + { + new ThirdPartyAttributeExtensionBuilder() + .WithDefinition(null) + .Build(); + }); + + Assert.IsTrue(exception.Message.Contains("definition")); + } + + [DataTestMethod] + [DataRow(null)] + [DataRow("")] + public void ShouldFailForInvalidDefinitions(string definition) + { + var exception = Assert.ThrowsException(() => + { + new ThirdPartyAttributeExtensionBuilder() + .WithDefinition(definition) + .Build(); + }); + + Assert.IsTrue(exception.Message.Contains("definition")); + } + + [TestMethod] + public void ShouldBuildThirdPartyAttributeExtensionWithGivenValues() + { + Extension extension = + new ThirdPartyAttributeExtensionBuilder() + .WithDefinition(_someDefinition) + .WithExpiryDate(_someDate) + .Build(); + + Assert.AreEqual(Constants.Extension.ThirdPartyAttribute, extension.ExtensionType); + + string expectedDate = _someDate.ToString(Constants.Format.RFC3339PatternMilli, CultureInfo.InvariantCulture); + Assert.AreEqual(expectedDate, extension.Content.ExpiryDate); + + List definitions = extension.Content.Definitions; + Assert.AreEqual(1, definitions.Count); + Assert.AreEqual(_someDefinition, definitions[0].Name); + } + + [DataTestMethod] + [DataRow("2006-01-02T22:04:05Z", "2006-01-02T22:04:05.000Z")] + [DataRow("2006-01-02T22:04:05.1Z", "2006-01-02T22:04:05.100Z")] + [DataRow("2006-01-02T22:04:05.12Z", "2006-01-02T22:04:05.120Z")] + [DataRow("2006-01-02T22:04:05.123Z", "2006-01-02T22:04:05.123Z")] + [DataRow("2006-01-02T22:04:05.1234Z", "2006-01-02T22:04:05.123Z")] + [DataRow("2006-01-02T22:04:05.999999Z", "2006-01-02T22:04:05.999Z")] + [DataRow("2006-01-02T22:04:05.123456Z", "2006-01-02T22:04:05.123Z")] + [DataRow("2002-10-02T10:00:00.1-05:00", "2002-10-02T15:00:00.100Z")] + [DataRow("2002-10-02T10:00:00.12345+11:00", "2002-10-01T23:00:00.123Z")] + [TestMethod] + public void ShouldBuildThirdPartyAttributeExtensionWithExpiryDates(string expiryDateInputString, string expectedExpiryDate) + { + bool parseSuccess = DateTime.TryParse( + expiryDateInputString, + CultureInfo.InvariantCulture, + DateTimeStyles.AdjustToUniversal, + out DateTime expiryDate); + + Assert.IsTrue(parseSuccess); + + Extension extension = + new ThirdPartyAttributeExtensionBuilder() + .WithDefinition(_someDefinition) + .WithExpiryDate(expiryDate) + .Build(); + + Assert.AreEqual(expectedExpiryDate, extension.Content.ExpiryDate); + } + + [TestMethod] + public void ShouldBuildThirdPartyAttributeExtensionWithMultipleDefinitions() + { + var definitions = new List { "firstDefinition", "secondDefinition" }; + + Extension extension = + new ThirdPartyAttributeExtensionBuilder() + .WithDefinitions(definitions) + .WithExpiryDate(_someDate) + .Build(); + + Assert.AreEqual(Constants.Extension.ThirdPartyAttribute, extension.ExtensionType); + + List result = extension.Content.Definitions; + Assert.AreEqual(2, result.Count); + Assert.AreEqual("firstDefinition", result[0].Name); + Assert.AreEqual("secondDefinition", result[1].Name); + } + + [TestMethod] + public void ShouldOverwriteSingularlyAddedDefinition() + { + var definitions = new List { "firstDefinition", "secondDefinition" }; + + Extension extension = + new ThirdPartyAttributeExtensionBuilder() + .WithExpiryDate(_someDate) + .WithDefinition(_someDefinition) + .WithDefinitions(definitions) + .Build(); + + Assert.AreEqual(Constants.Extension.ThirdPartyAttribute, extension.ExtensionType); + + List result = extension.Content.Definitions; + Assert.AreEqual(2, result.Count); + Assert.AreEqual("firstDefinition", result[0].Name); + Assert.AreEqual("secondDefinition", result[1].Name); + } + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs new file mode 100644 index 00000000..878a818a --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs @@ -0,0 +1,44 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.ShareUrl.Extensions; + +namespace Yoti.Auth.Tests.DigitalIdentity.Extensions +{ + [TestClass] + public class TransactionalFlowExtensionBuilderTests + { + private readonly object _objectContent = new object(); + private readonly DateTime _dateTimeContent = new DateTime(1980, 1, 1); + + [TestMethod] + public void ShouldFailForNullContent() + { + Assert.ThrowsException(() => + { + new TransactionalFlowExtensionBuilder() + .WithContent(null) + .Build(); + }); + } + + [TestMethod] + public void ShouldBuildWithObjectContent() + { + Extension extension = new TransactionalFlowExtensionBuilder() + .WithContent(_objectContent) + .Build(); + + Assert.AreEqual(_objectContent, extension.Content); + } + + [TestMethod] + public void ShouldBuildWithDateTimeContent() + { + Extension extension = new TransactionalFlowExtensionBuilder() + .WithContent(_dateTimeContent) + .Build(); + + Assert.AreEqual(_dateTimeContent, extension.Content); + } + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs new file mode 100644 index 00000000..b1fec0d3 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs @@ -0,0 +1,345 @@ +using System.Collections.Generic; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.Constants; +using Yoti.Auth.DigitalIdentity.Policy; +using Yoti.Auth.Tests.TestData; + +namespace Yoti.Auth.Tests.DigitalIdentity.Policy +{ + + [TestClass] + public class DynamicPolicyBuilderTests + { + private readonly int _expectedSelfieAuthValue = 1; + private readonly int _expectedPinAuthValue = 2; + + [TestMethod] + public void AttributeShouldOnlyExistOnce() + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName("SomeAttributeName") + .Build(); + + Auth.DigitalIdentity.Policy.Policy result = new PolicyBuilder() + .WithWantedAttribute(wantedAttribute) + .WithWantedAttribute(wantedAttribute) + .Build(); + + Assert.AreEqual(1, result.WantedAttributes.Count); + Assert.IsTrue(result.WantedAttributes.Contains(wantedAttribute)); + } + + [TestMethod] + public void ShouldContainAllAddedAttributes() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithFamilyName() + .WithGivenNames() + .WithFullName() + .WithDateOfBirth() + .WithGender() + .WithPostalAddress() + .WithStructuredPostalAddress() + .WithNationality() + .WithPhoneNumber() + .WithSelfie() + .WithEmail() + .WithDocumentDetails() + .WithDocumentImages() + .WithAgeOver(55) + .WithAgeUnder(18) + .Build(); + + ICollection result = dynamicPolicy.WantedAttributes; + var attributeMatcher = new WantedAttributeMatcher(result); + + Assert.AreEqual(15, result.Count); + + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.FamilyNameAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.GivenNamesAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.FullNameAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.GenderAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.PostalAddressAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.StructuredPostalAddressAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.NationalityAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.PhoneNumberAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.SelfieAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.EmailAddressAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DocumentImagesAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DocumentDetailsAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute, derivation: $"{Constants.UserProfile.AgeOverAttribute}:55")); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute, derivation: $"{Constants.UserProfile.AgeUnderAttribute}:18")); + } + + [TestMethod] + public void ShouldBuildWithMultipleAgeDerivedAttributes() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithDateOfBirth() + .WithAgeOver(18) + .WithAgeUnder(30) + .WithAgeUnder(40) + .Build(); + + ICollection result = dynamicPolicy.WantedAttributes; + var attributeMatcher = new WantedAttributeMatcher(result); + + Assert.AreEqual(4, result.Count); + + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute)); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute, derivation: $"{UserProfile.AgeOverAttribute}:{18}")); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute, derivation: $"{UserProfile.AgeUnderAttribute}:{30}")); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute, derivation: $"{UserProfile.AgeUnderAttribute}:{40}")); + } + + [TestMethod] + public void ShouldOverwriteIdenticalAgeVerificationToEnsureItOnlyExistsOnce() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithAgeUnder(30) + .WithAgeUnder(30) + .Build(); + + ICollection result = dynamicPolicy.WantedAttributes; + var attributeMatcher = new WantedAttributeMatcher(result); + + Assert.AreEqual(1, result.Count); + + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DateOfBirthAttribute, derivation: $"{UserProfile.AgeUnderAttribute}:{30}")); + } + + [TestMethod] + public void ShouldAddMultipleAttributesWithSameNameAndDifferentConstraints() + { + var passportConstraint = new SourceConstraintBuilder() + .WithPassport() + .Build(); + + var docImage1 = new WantedAttributeBuilder() + .WithName(Yoti.Auth.Constants.UserProfile.DocumentImagesAttribute) + .WithConstraint(passportConstraint) + .Build(); + + var drivingLicenseConstraint = new SourceConstraintBuilder() + .WithDrivingLicense() + .Build(); + + var docImage2 = new WantedAttributeBuilder() + .WithName(Yoti.Auth.Constants.UserProfile.DocumentImagesAttribute) + .WithConstraints(new List { drivingLicenseConstraint }) + .Build(); + + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithWantedAttribute(docImage1) + .WithWantedAttribute(docImage2) + .Build(); + + ICollection result = dynamicPolicy.WantedAttributes; + var attributeMatcher = new WantedAttributeMatcher(result); + + Assert.AreEqual(2, result.Count); + + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DocumentImagesAttribute, null, new List { passportConstraint })); + Assert.IsTrue(attributeMatcher.ContainsAttribute(UserProfile.DocumentImagesAttribute, null, new List { drivingLicenseConstraint })); + } + + [TestMethod] + public void ShouldBuildWithAuthTypesTrue() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithSelfieAuthentication(enabled: true) + .WithPinAuthentication(enabled: true) + .WithAuthType(authType: 99, enabled: true) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(3, result.Count); + Assert.IsTrue(result.SetEquals(new HashSet { _expectedSelfieAuthValue, _expectedPinAuthValue, 99 })); + } + + [TestMethod] + public void ShouoldBuildWithAuthTypesFalse() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithSelfieAuthentication(enabled: false) + .WithPinAuthentication(enabled: false) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(0, result.Count); + } + + [TestMethod] + public void ShouldBuildWithAuthTypeEnabledThenDisabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithAuthType(24, enabled: true) + .WithAuthType(24, enabled: false) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(0, result.Count); + } + + [TestMethod] + public void ShouldBuildWithAuthTypeDisabledThenEnabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithAuthType(23, enabled: false) + .WithAuthType(23, enabled: true) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.SetEquals(new HashSet { 23 })); + } + + [TestMethod] + public void ShouldBuildWithSelfieAuthenticationEnabledThenDisabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithSelfieAuthentication(enabled: true) + .WithSelfieAuthentication(enabled: false) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(0, result.Count); + } + + [TestMethod] + public void ShouldBuildWithSelfieAuthenticationDisabledThenEnabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithSelfieAuthentication(enabled: false) + .WithSelfieAuthentication(enabled: true) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.SetEquals(new HashSet { _expectedSelfieAuthValue })); + } + + [TestMethod] + public void ShouldBuildWithSelfieAuthenticationDisabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithSelfieAuthentication(enabled: false) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(0, result.Count); + } + + [TestMethod] + public void ShouldFilterSelfieAuthenticationDuplicates() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithSelfieAuthentication(enabled: true) + .WithAuthType(Auth.DigitalIdentity.Policy.Policy.SelfieAuthType, enabled: true) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.SetEquals(new HashSet { _expectedSelfieAuthValue })); + } + + [TestMethod] + public void ShouldFilterPinAuthenticationDuplicates() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithPinAuthentication(enabled: true) + .WithAuthType(Auth.DigitalIdentity.Policy.Policy.PinAuthType, enabled: true) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.SetEquals(new HashSet { _expectedPinAuthValue })); + } + + [TestMethod] + public void ShouldBuildWithPinAuthenticationEnabledThenDisabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithPinAuthentication(enabled: true) + .WithPinAuthentication(enabled: false) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(0, result.Count); + } + + [TestMethod] + public void ShouldBuildWithPinAuthenticationDisabledThenEnabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithPinAuthentication(enabled: false) + .WithPinAuthentication(enabled: true) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(1, result.Count); + Assert.IsTrue(result.SetEquals(new HashSet { _expectedPinAuthValue })); + } + + [TestMethod] + public void ShouldBuildWithPinAuthenticationDisabled() + { + Auth.DigitalIdentity.Policy.Policy dynamicPolicy = new PolicyBuilder() + .WithPinAuthentication(enabled: false) + .Build(); + + HashSet result = dynamicPolicy.WantedAuthTypes; + + Assert.AreEqual(0, result.Count); + } + + [TestMethod] + public void ShouldBuildWithRememberMeFlag() + { + Auth.DigitalIdentity.Policy.Policy result = new PolicyBuilder() + .WithRememberMeId(true) + .Build(); + + Assert.IsTrue(result.WantedRememberMeId); + } + + [TestMethod] + public void ShouldBuildWithIdentityProfileRequirements() + { + object identityProfileRequirements = IdentityProfiles.CreateStandardIdentityProfileRequirements(); + + Auth.DigitalIdentity.Policy.Policy result = new PolicyBuilder() + .WithIdentityProfileRequirements(identityProfileRequirements) + .Build(); + + Assert.AreEqual(identityProfileRequirements, result.IdentityProfileRequirements); + } + + [TestMethod] + public void ShouldBuildWithAdvancedIdentityProfileRequirements() + { + var advancedIdentityProfileRequirements = IdentityProfiles.CreateAdvancedIdentityProfileRequirements(); + + Auth.DigitalIdentity.Policy.Policy result = new PolicyBuilder() + .WithAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements) + .Build(); + + Assert.AreEqual(advancedIdentityProfileRequirements, result.AdvancedIdentityProfileRequirements); + } + } + + +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeBuilderTests.cs new file mode 100644 index 00000000..a856536c --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeBuilderTests.cs @@ -0,0 +1,166 @@ +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.ShareUrl.Policy; + +namespace Yoti.Auth.Tests.DigitalIdentity.Policy +{ + [TestClass] + public class WantedAttributeBuilderTests + { + private const string _someName = "some name"; + private const string _someDerivation = "some derivation"; + + [TestMethod] + public void BuildsAnAttribute() + { + SourceConstraint sourceConstraint = new SourceConstraintBuilder() + .WithDrivingLicense() + .Build(); + + WantedAttribute result = new WantedAttributeBuilder() + .WithName(_someName) + .WithDerivation(_someDerivation) + .WithConstraint(sourceConstraint) + .Build(); + + Assert.AreEqual(1, result.Constraints.Count); + Assert.AreEqual(_someName, result.Name); + Assert.AreEqual(_someDerivation, result.Derivation); + } + + [TestMethod] + public void ShouldSetAcceptSelfAssertedToNullByDefault() + { + WantedAttribute result = new WantedAttributeBuilder() + .WithName("name") + .WithOptional(true) + .Build(); + + Assert.AreEqual(null, result.AcceptSelfAsserted); + Assert.AreEqual(true, result.Optional); + } + + [TestMethod] + public void ShouldRetainLatestAcceptSelfAsserted() + { + WantedAttribute result = new WantedAttributeBuilder() + .WithName("name") + .WithAcceptSelfAsserted(false) + .WithAcceptSelfAsserted(true) + .Build(); + + Assert.AreEqual(true, result.AcceptSelfAsserted); + } + + [TestMethod] + public void ShouldGenerateWithAnchor() + { + string wantedAnchorName = "name"; + string wantedAnchorSubType = "subType"; + Constraint sourceConstraint = new SourceConstraintBuilder() + .WithAnchor(new WantedAnchor(wantedAnchorName, wantedAnchorSubType)) + .Build(); + + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName("attribute_name") + .WithConstraint(sourceConstraint) + .Build(); + + var result = (SourceConstraint)wantedAttribute.Constraints.Single(); + + Assert.AreEqual(wantedAnchorName, result.PreferredSources.WantedAnchors.Single().Name); + Assert.AreEqual(wantedAnchorSubType, result.PreferredSources.WantedAnchors.Single().SubType); + } + + [TestMethod] + public void ShouldGenerateWithPasscard() + { + Constraint sourceConstraint = new SourceConstraintBuilder() + .WithPasscard() + .Build(); + + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName("attribute_name") + .WithConstraint(sourceConstraint) + .Build(); + + var result = (SourceConstraint)wantedAttribute.Constraints.Single(); + Assert.AreEqual("PASS_CARD", result.PreferredSources.WantedAnchors[0].Name); + Assert.AreEqual("", result.PreferredSources.WantedAnchors[0].SubType); + } + + [TestMethod] + public void ShouldGenerateTwoSourceConstraints() + { + Constraint sourceConstraint = new SourceConstraintBuilder() + .WithPassport() + .WithNationalId("AADHAR") + .WithSoftPreference(true) + .Build(); + + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName("attribute_name") + .WithConstraint(sourceConstraint) + .Build(); + + var result = (SourceConstraint)wantedAttribute.Constraints.Single(); + Assert.IsTrue(result.PreferredSources.SoftPreference); + Assert.AreEqual("SOURCE", result.ConstraintType); + + Assert.AreEqual("PASSPORT", result.PreferredSources.WantedAnchors[0].Name); + Assert.AreEqual("", result.PreferredSources.WantedAnchors[0].SubType); + + Assert.AreEqual("NATIONAL_ID", result.PreferredSources.WantedAnchors[1].Name); + Assert.AreEqual("AADHAR", result.PreferredSources.WantedAnchors[1].SubType); + } + + [TestMethod] + public void WithConstraintShouldAddToCurrentConstraints() + { + Constraint drivingLicenseConstraint = new SourceConstraintBuilder() + .WithDrivingLicense() + .Build(); + + Constraint passcardConstraint = new SourceConstraintBuilder() + .WithPasscard() + .Build(); + + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName("attribute_name") + .WithConstraints(new List { drivingLicenseConstraint }) + .WithConstraint(passcardConstraint) + .Build(); + + Assert.AreEqual(2, wantedAttribute.Constraints.Count); + + var sourceConstraint1 = (SourceConstraint)wantedAttribute.Constraints.First(); + Assert.AreEqual("DRIVING_LICENCE", sourceConstraint1.PreferredSources.WantedAnchors[0].Name); + + var sourceConstraint2 = (SourceConstraint)wantedAttribute.Constraints.Last(); + Assert.AreEqual("PASS_CARD", sourceConstraint2.PreferredSources.WantedAnchors[0].Name); + } + + [TestMethod] + public void WithConstraintsShouldOverrideCurrentConstraint() + { + Constraint drivingLicenseConstraint = new SourceConstraintBuilder() + .WithDrivingLicense() + .Build(); + + Constraint passcardConstraint = new SourceConstraintBuilder() + .WithPasscard() + .Build(); + + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName("attribute_name") + .WithConstraint(passcardConstraint) + .WithConstraints(new List { drivingLicenseConstraint }) + .Build(); + + var result = (SourceConstraint)wantedAttribute.Constraints.Single(); + Assert.AreEqual(1, result.PreferredSources.WantedAnchors.Count); + Assert.AreEqual("DRIVING_LICENCE", result.PreferredSources.WantedAnchors[0].Name); + } + } +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeMatcher.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeMatcher.cs new file mode 100644 index 00000000..e3497323 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/WantedAttributeMatcher.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Linq; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.Tests.DigitalIdentity.Policy +{ + internal class WantedAttributeMatcher + { + private readonly ICollection _attributes; + + public WantedAttributeMatcher(ICollection attributes) + { + _attributes = attributes; + } + + public bool ContainsAttribute(string name, string derivation = null, List constraints = null) + { + var expectedAttribute = new WantedAttribute(name, derivation, constraints); + + foreach (var attribute in _attributes) + { + if (attribute.Name == expectedAttribute.Name + && attribute.Derivation == expectedAttribute.Derivation + && ConstraintsMatch(expectedAttribute.Constraints, attribute.Constraints)) + { + return true; + } + } + + return false; + } + + private static bool ConstraintsMatch(List expectedConstraints, List attributeConstraint) + { + if (expectedConstraints == null && attributeConstraint == null) + return true; + + return Enumerable.SequenceEqual(expectedConstraints, attributeConstraint); + } + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/QrRequestBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/QrRequestBuilderTests.cs new file mode 100644 index 00000000..42295715 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/QrRequestBuilderTests.cs @@ -0,0 +1,30 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.Tests.TestData; + +namespace Yoti.Auth.Tests.DigitalIdentity +{ + [TestClass] + public class QrRequestBuilderTests + { + + private const string _someTransportString = "someTransport"; + private const string _someDisplayMode = "someDisplay"; + + + + [TestMethod] + public void ShouldBuildADynamicScenario() + { + QrRequest result = new QrRequestBuilder() + .WithDisplayMode(_someDisplayMode) + .WithTransport(_someTransportString) + .Build(); + + + Assert.AreEqual(_someDisplayMode, result.DisplayMode); + Assert.AreEqual(_someTransportString, result.Transport); + } + + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionRequestBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionRequestBuilderTests.cs new file mode 100644 index 00000000..bc52fe01 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionRequestBuilderTests.cs @@ -0,0 +1,72 @@ +using System.Collections.Generic; +using System.IO; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; +using Yoti.Auth.Tests.TestData; + +namespace Yoti.Auth.Tests.DigitalIdentity +{ + [TestClass] + public class ShareSessionRequestBuilderTests + { + private const string _someEndpoint = "someEndpoint"; + + private readonly BaseExtension extension1 = new ExtensionBuilder() + .WithContent("content") + .WithType("string type") + .Build(); + + private readonly BaseExtension extension2 = new LocationConstraintExtensionBuilder() + .WithLatitude(51.5044772) + .WithLongitude(-0.082161) + .WithMaxUncertainty(300) + .WithRadius(1500) + .Build(); + + + [TestMethod] + public void ShouldBuildADynamicScenario() + { + Auth.DigitalIdentity.Policy.Policy somePolicy = TestTools.ShareSession.CreateStandardPolicy(); + object someSubject = IdentityProfiles.CreateStandardSubject(); + + ShareSessionRequest result = new ShareSessionRequestBuilder() + .WithRedirectUri(_someEndpoint) + .WithPolicy(somePolicy) + .WithExtension(extension1) + .WithExtension(extension2) + .WithSubject(someSubject) + .Build(); + + var expectedExtensions = new List { extension1, extension2 }; + + Assert.AreEqual(_someEndpoint, result.RedirectUri); + Assert.AreEqual(somePolicy, result.DynamicPolicy); + CollectionAssert.AreEqual(expectedExtensions, result.Extensions); + Assert.AreEqual(someSubject, result.Subject); + + string serializedScenario = JsonConvert.SerializeObject( + result, + + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }); + + object deserializedObject; + using (StreamReader r = File.OpenText("TestData/DigitalIdentity.json")) + { + string json = r.ReadToEnd(); + deserializedObject = JsonConvert.DeserializeObject(json); + } + + string expectedJson = JsonConvert.SerializeObject(deserializedObject); + + Assert.AreEqual(expectedJson, serializedScenario); + } + + } +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs new file mode 100644 index 00000000..16b73230 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -0,0 +1,106 @@ +using System; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using Moq.Protected; +using Org.BouncyCastle.Crypto; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.Exceptions; +using Yoti.Auth.Tests.Common; + +namespace Yoti.Auth.Tests +{ + [TestClass] + public class DigitalIdentityClientEngineTests + { + private const string EncryptedToken = "b6H19bUCJhwh6WqQX/sEHWX9RP+A/ANr1fkApwA4Dp2nJQFAjrF9e6YCXhNBpAIhfHnN0iXubyXxXZMNwNMSQ5VOxkqiytrvPykfKQWHC6ypSbfy0ex8ihndaAXG5FUF+qcU8QaFPMy6iF3x0cxnY0Ij0kZj0Ng2t6oiNafb7AhT+VGXxbFbtZu1QF744PpWMuH0LVyBsAa5N5GJw2AyBrnOh67fWMFDKTJRziP5qCW2k4h5vJfiYr/EOiWKCB1d/zINmUm94ZffGXxcDAkq+KxhN1ZuNhGlJ2fKcFh7KxV0BqlUWPsIEiwS0r9CJ2o1VLbEs2U/hCEXaqseEV7L29EnNIinEPVbL4WR7vkF6zQCbK/cehlk2Qwda+VIATqupRO5grKZN78R9lBitvgilDaoE7JB/VFcPoljGQ48kX0wje1mviX4oJHhuO8GdFITS5LTbojGVQWT7LUNgAUe0W0j+FLHYYck3v84OhWTqads5/jmnnLkp9bdJSRuJF0e8pNdePnn2lgF+GIcyW/0kyGVqeXZrIoxnObLpF+YeUteRBKTkSGFcy7a/V/DLiJMPmH8UXDLOyv8TVt3ppzqpyUrLN2JVMbL5wZ4oriL2INEQKvw/boDJjZDGeRlu5m1y7vGDNBRDo64+uQM9fRUULPw+YkABNwC0DeShswzT00="; + private readonly AsymmetricCipherKeyPair _keyPair = KeyPair.Get(); + private static HttpRequestMessage _httpRequestMessage; + private const string SdkId = "fake-sdk-id"; + + [TestMethod] + public async Task CreateSessionAsyncShouldReturnCorrectValues() + { + string refId = "NpdmVVGC-28356678-c236-4518-9de4-7a93009ccaf0-c5f92f2a-5539-453e-babc-9b06e1d6b7de"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + refId + "\",\"status\":\"SOME_STATUS\",\"expiry\":\"SOME_EXPIRY\",\"created\":\"SOME_CREATED\",\"updated\":\"SOME_UPDATED\",\"qrCode\":{\"id\":\"SOME_QRCODE_ID\"},\"receipt\":{\"id\":\"SOME_RECEIPT_ID\"}}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + ShareSessionRequest shareSessionRequest = TestTools.ShareSession.CreateStandardShareSessionRequest(); + + ShareSessionResult shareSessionResult = await engine.CreateShareSessionAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), shareSessionRequest); + + Assert.IsNotNull(shareSessionResult); + Assert.AreEqual(refId, shareSessionResult.Id); + } + + [TestMethod] + public void TestGetShareReceipt() + { + Uri apiUrl = new Uri("https://example.com/api"); + string receiptId = "some_receiptid"; + string refId = "NpdmVVGC-28356678-c236-4518-9de4-7a93009ccaf0-c5f92f2a-5539-453e-babc-9b06e1d6b7de"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + refId + "\",\"status\":\"SOME_STATUS\",\"expiry\":\"SOME_EXPIRY\",\"created\":\"SOME_CREATED\",\"updated\":\"SOME_UPDATED\",\"qrCode\":{\"id\":\"SOME_QRCODE_ID\"},\"receipt\":{\"id\":\"SOME_RECEIPT_ID\"}}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + Assert.ThrowsException(() => + { + SharedReceiptResponse response = engine.GetShareReceipt(SdkId, _keyPair, apiUrl, receiptId).Result; + }); + } + + [DataTestMethod] + [DataRow(HttpStatusCode.BadRequest)] + [DataRow(HttpStatusCode.Unauthorized)] + [DataRow(HttpStatusCode.InternalServerError)] + [DataRow(HttpStatusCode.RequestTimeout)] + [DataRow(HttpStatusCode.NotFound)] + [DataRow(HttpStatusCode.Forbidden)] + public void CreateShareSessionNonSuccessStatusCodesShouldThrowException(HttpStatusCode httpStatusCode) + { + Mock handlerMock = SetupMockMessageHandler( + httpStatusCode, + "{\"status\":\"bad\""); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + ShareSessionRequest shareSessionRequest = TestTools.ShareSession.CreateStandardShareSessionRequest(); + + var aggregateException = Assert.ThrowsException(() => + { + engine.CreateShareSessionAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), shareSessionRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + } + + private static Mock SetupMockMessageHandler(HttpStatusCode httpStatusCode, string responseContent) + { + var handlerMock = new Mock(MockBehavior.Strict); + handlerMock + .Protected() + .Setup>( + "SendAsync", + ItExpr.IsAny(), + ItExpr.IsAny() + ) + .ReturnsAsync(new HttpResponseMessage() + { + StatusCode = httpStatusCode, + Content = new StringContent(responseContent) + }) + .Callback((http, token) => _httpRequestMessage = http) + .Verifiable(); + return handlerMock; + } + } +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs new file mode 100644 index 00000000..805165de --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs @@ -0,0 +1,158 @@ +using System; +using System.IO; +using System.Net.Http; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Org.BouncyCastle.Crypto; +using Yoti.Auth.Tests.Common; + +namespace Yoti.Auth.Tests +{ + [TestClass] + public class DigitalIdentityClientTests + { + private const string _someSdkId = "some-sdk-id"; + private readonly Uri _expectedDefaultUri = new Uri(Constants.Api.DefaultYotiShareApiUrl); + + [TestInitialize] + public void BeforeTests() + { + Environment.SetEnvironmentVariable("YOTI_API_URL", null); + } + + [TestMethod] + public void NullSdkIdShouldThrowException() + { + StreamReader keystream = KeyPair.GetValidKeyStream(); + string sdkId = null; + Assert.ThrowsException(() => + { + new DigitalIdentityClient(sdkId, keystream); + }); + } + + [TestMethod] + public void EmptySdkIdShouldThrowException() + { + StreamReader keystream = KeyPair.GetValidKeyStream(); + string sdkId = string.Empty; + Assert.ThrowsException(() => + { + new DigitalIdentityClient(sdkId, keystream); + }); + } + + [TestMethod] + public void NoKeyStreamShouldThrowException() + { + StreamReader keystream = null; + Assert.ThrowsException(() => + { + new DigitalIdentityClient(_someSdkId, keystream); + }); + } + + [TestMethod] + public void InvalidKeyStreamShouldThrowException() + { + StreamReader keystream = KeyPair.GetInvalidFormatKeyStream(); + Assert.ThrowsException(() => + { + new DigitalIdentityClient(_someSdkId, keystream); + }); + } + + [TestMethod] + public void NullDynamicScenarioShouldThrowException() + { + DigitalIdentityClient client = CreateDigitalIdentityClient(); + + var aggregateException = Assert.ThrowsException(() => + { + client.CreateShareSession(null); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + } + + [TestMethod] + public void EmptyReceiptShouldThrowException() + { + DigitalIdentityClient client = CreateDigitalIdentityClient(); + var aggregateException = Assert.ThrowsException(() => + { + client.GetShareReceipt(""); + }); + var status = + TestTools.Exceptions.IsExceptionInAggregateException(aggregateException); + Assert.IsTrue(!status); + } + + [DataTestMethod] + [DataRow("")] + [DataRow(null)] + public void ApiUriDefaultIsUsedForNullOrEmpty(string envVar) + { + Environment.SetEnvironmentVariable("YOTI_API_URL", envVar); + DigitalIdentityClient client = CreateDigitalIdentityClient(); + + Assert.AreEqual(_expectedDefaultUri, client.ApiUri); + } + + [TestMethod] + public void ApiUriOverriddenOverEnvVariable() + { + Uri overriddenApiUri = new Uri("https://overridden.com"); + Environment.SetEnvironmentVariable("YOTI_API_URL", "https://envapiuri.com"); + DigitalIdentityClient client = CreateDigitalIdentityClient(); + client.OverrideApiUri(overriddenApiUri); + + Assert.AreEqual(overriddenApiUri, client.ApiUri); + } + + [TestMethod] + public void ApiUriEnvVariableIsUsed() + { + Environment.SetEnvironmentVariable("YOTI_API_URL", "https://envapiuri.com"); + DigitalIdentityClient client = CreateDigitalIdentityClient(); + + Uri expectedApiUri = new Uri("https://envapiuri.com"); + Assert.AreEqual(expectedApiUri, client.ApiUri); + } + private static DigitalIdentityClient CreateDigitalIdentityClient() + { + StreamReader privateStreamKey = KeyPair.GetValidKeyStream(); + + return new DigitalIdentityClient(_someSdkId, privateStreamKey); + } + + [TestMethod] + public void ApiUriSetForPrivateKeyInitialisationHttpClient() + { + AsymmetricCipherKeyPair keyPair = KeyPair.Get(); + + DigitalIdentityClient yotiClient = new DigitalIdentityClient(new HttpClient(), _someSdkId, keyPair); + + Assert.AreEqual(_expectedDefaultUri, yotiClient.ApiUri); + } + + [TestMethod] + public void ApiUriSetForStreamInitialisation() + { + StreamReader privateStreamKey = KeyPair.GetValidKeyStream(); + + DigitalIdentityClient yotiClient = new DigitalIdentityClient(_someSdkId, privateStreamKey); + + Assert.AreEqual(_expectedDefaultUri, yotiClient.ApiUri); + } + + [TestMethod] + public void ApiUriSetForStreamInitialisationHttpClient() + { + StreamReader privateStreamKey = KeyPair.GetValidKeyStream(); + + DigitalIdentityClient yotiClient = new DigitalIdentityClient(new HttpClient(), _someSdkId, privateStreamKey); + + Assert.AreEqual(_expectedDefaultUri, yotiClient.ApiUri); + } + } +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentityExceptionTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityExceptionTests.cs new file mode 100644 index 00000000..c3bdf660 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentityExceptionTests.cs @@ -0,0 +1,36 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using Yoti.Auth.Exceptions; + +namespace Yoti.Auth.Tests +{ + [TestClass] + public class DigitalIdentityExceptionTests + { + [TestMethod] + public void DigitalIdentityException_NoParameters_ErrorMessageIsNull() + { + + var exception = new DigitalIdentityException(); + Assert.IsNotNull(exception.Message); + } + + [TestMethod] + public void DigitalIdentityException_WithMessage_MessageIsSet() + { + var message = "Test message"; + var exception = new DigitalIdentityException(message); + Assert.AreEqual(message, exception.Message); + } + + [TestMethod] + public void DigitalIdentityException_WithMessageAndInnerException_MessageAndInnerExceptionAreSet() + { + var message = "Test message"; + var innerException = new Exception("Inner exception message"); + var exception = new DigitalIdentityException(message, innerException); + Assert.AreEqual(message, exception.Message); + Assert.AreEqual(innerException, exception.InnerException); + } + } +} diff --git a/test/Yoti.Auth.Tests/ShareUrl/DynamicScenarioBuilderTests.cs b/test/Yoti.Auth.Tests/ShareUrl/DynamicScenarioBuilderTests.cs index 22781fb6..3bdb9fec 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/DynamicScenarioBuilderTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/DynamicScenarioBuilderTests.cs @@ -37,6 +37,7 @@ public void ShouldBuildADynamicScenario() .WithPolicy(somePolicy) .WithExtension(extension1) .WithExtension(extension2) + .WithSubject(someSubject) .Build(); @@ -67,4 +68,4 @@ public void ShouldBuildADynamicScenario() Assert.AreEqual(expectedJson, serializedScenario); } } -} \ No newline at end of file +} diff --git a/test/Yoti.Auth.Tests/ShareUrl/Policy/WantedAttributeBuilderTests.cs b/test/Yoti.Auth.Tests/ShareUrl/Policy/WantedAttributeBuilderTests.cs index b39fead0..733871f0 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/Policy/WantedAttributeBuilderTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/Policy/WantedAttributeBuilderTests.cs @@ -10,6 +10,7 @@ public class WantedAttributeBuilderTests { private const string _someName = "some name"; private const string _someDerivation = "some derivation"; + private const bool _someOptional = true; [TestMethod] public void BuildsAnAttribute() @@ -22,11 +23,13 @@ public void BuildsAnAttribute() .WithName(_someName) .WithDerivation(_someDerivation) .WithConstraint(sourceConstraint) + .WithOptional(_someOptional) .Build(); Assert.AreEqual(1, result.Constraints.Count); Assert.AreEqual(_someName, result.Name); Assert.AreEqual(_someDerivation, result.Derivation); + Assert.AreEqual(_someOptional, result.Optional); } [TestMethod] @@ -34,9 +37,11 @@ public void ShouldSetAcceptSelfAssertedToNullByDefault() { WantedAttribute result = new WantedAttributeBuilder() .WithName("name") + .WithOptional(true) .Build(); Assert.AreEqual(null, result.AcceptSelfAsserted); + Assert.AreEqual(true, result.Optional); } [TestMethod] @@ -161,4 +166,4 @@ public void WithConstraintsShouldOverrideCurrentConstraint() Assert.AreEqual("DRIVING_LICENCE", result.PreferredSources.WantedAnchors[0].Name); } } -} \ No newline at end of file +} diff --git a/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json b/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json new file mode 100644 index 00000000..1aa053d8 --- /dev/null +++ b/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json @@ -0,0 +1,52 @@ +{ + "policy": { + "wanted": [ + { + "name": "date_of_birth" + }, + { + "name": "date_of_birth", + "derivation": "age_over:18" + }, + { + "name": "date_of_birth", + "derivation": "age_under:30" + }, + { + "name": "date_of_birth", + "derivation": "age_under:40" + } + ], + "wanted_auth_types": [ 2 ], + "wanted_remember_me": false, + "wanted_remember_me_optional": false, + "identity_profile_requirements": { + "trust_framework": "UK_TFIDA", + "scheme": { + "type": "DBS", + "objective": "STANDARD" + } + } + }, + "extensions": [ + { + "content": "content", + "type": "string type" + }, + { + "content": { + "expected_device_location": { + "latitude": 51.5044772, + "longitude": -0.082161, + "radius": 1500.0, + "max_uncertainty_radius": 300.0 + } + }, + "type": "LOCATION_CONSTRAINT" + } + ], + "subject": { + "subject_id": "some_subject_id_string" + }, + "redirectUri": "someEndpoint" +} diff --git a/test/Yoti.Auth.Tests/TestData/DynamicPolicy.json b/test/Yoti.Auth.Tests/TestData/DynamicPolicy.json index 86b8ba46..e6592288 100644 --- a/test/Yoti.Auth.Tests/TestData/DynamicPolicy.json +++ b/test/Yoti.Auth.Tests/TestData/DynamicPolicy.json @@ -8,18 +8,15 @@ }, { "name": "date_of_birth", - "derivation": "age_over:18", - "optional": false + "derivation": "age_over:18" }, { "name": "date_of_birth", - "derivation": "age_under:30", - "optional": false + "derivation": "age_under:30" }, { "name": "date_of_birth", - "derivation": "age_under:40", - "optional": false + "derivation": "age_under:40" } ], "wanted_auth_types": [ 2 ], @@ -53,4 +50,4 @@ "subject": { "subject_id": "some_subject_id_string" } -} \ No newline at end of file +} diff --git a/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs b/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs index 033a042f..276149b2 100644 --- a/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs +++ b/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs @@ -1,5 +1,6 @@ -using System.Collections.Generic; -using Yoti.Auth.DocScan.Session.Create; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity.Policy; +using System.Collections.Generic; namespace Yoti.Auth.Tests.TestData { @@ -17,6 +18,42 @@ public static object CreateStandardIdentityProfileRequirements() } }; } + + public static AdvancedIdentityProfile CreateAdvancedIdentityProfileRequirements() + { + string advancedIdentityProfileJson = @" + { + ""profiles"": [ + { + ""trust_framework"": ""UK_TFIDA"", + ""schemes"": [ + { + ""label"": ""LB912"", + ""type"": ""RTW"" + }, + { + ""label"": ""LB777"", + ""type"": ""DBS"", + ""objective"": ""BASIC"" + } + ] + }, + { + ""trust_framework"": ""YOTI_GLOBAL"", + ""schemes"": [ + { + ""label"": ""LB321"", + ""type"": ""IDENTITY"", + ""objective"": ""AL_L1"", + ""config"": {} + } + ] + } + ] + }"; + var advancedIdentityProfile = JsonConvert.DeserializeObject(advancedIdentityProfileJson); + return advancedIdentityProfile; + } public static object CreateStandardSubject() { @@ -26,18 +63,18 @@ public static object CreateStandardSubject() }; } - public static AdvancedIdentityProfile CreateStandardAdvancedIdentityProfileRequirements() + public static Yoti.Auth.DocScan.Session.Create.AdvancedIdentityProfile CreateStandardAdvancedIdentityProfileRequirements() { - AdvancedIdentityProfile data = new AdvancedIdentityProfile + Yoti.Auth.DocScan.Session.Create.AdvancedIdentityProfile data = new Yoti.Auth.DocScan.Session.Create.AdvancedIdentityProfile { profiles = new List { new Yoti.Auth.DocScan.Session.Create.Profile { trust_framework = "UK_TFIDA", - schemes = new List + schemes = new List { - new Scheme + new Yoti.Auth.DocScan.Session.Create.Scheme { label = "LB912", type = "RTW" @@ -47,9 +84,9 @@ public static AdvancedIdentityProfile CreateStandardAdvancedIdentityProfileRequi new Yoti.Auth.DocScan.Session.Create.Profile { trust_framework = "YOTI_GLOBAL", - schemes = new List + schemes = new List { - new Scheme + new Yoti.Auth.DocScan.Session.Create.Scheme { label = "LB321", type = "IDENTITY", diff --git a/test/Yoti.Auth.Tests/TestTools/CreateQr.cs b/test/Yoti.Auth.Tests/TestTools/CreateQr.cs new file mode 100644 index 00000000..0474d430 --- /dev/null +++ b/test/Yoti.Auth.Tests/TestTools/CreateQr.cs @@ -0,0 +1,15 @@ +using Yoti.Auth.ShareUrl; +using Yoti.Auth.DigitalIdentity.Policy; +using Yoti.Auth.Tests.TestData; +using Yoti.Auth.DigitalIdentity; + +namespace Yoti.Auth.Tests.TestTools +{ + internal static class CreateQr + { + public static QrRequest CreateQrStandard() + { + return new QrRequest(); + } + } +} diff --git a/test/Yoti.Auth.Tests/TestTools/ShareSession.cs b/test/Yoti.Auth.Tests/TestTools/ShareSession.cs new file mode 100644 index 00000000..7be4792a --- /dev/null +++ b/test/Yoti.Auth.Tests/TestTools/ShareSession.cs @@ -0,0 +1,27 @@ +using Yoti.Auth.ShareUrl; +using Yoti.Auth.DigitalIdentity.Policy; +using Yoti.Auth.Tests.TestData; +using Yoti.Auth.DigitalIdentity; + +namespace Yoti.Auth.Tests.TestTools +{ + internal static class ShareSession + { + public static ShareSessionRequest CreateStandardShareSessionRequest() + { + return new ShareSessionRequest(CreateStandardPolicy(), "redirecturi"); + } + + public static Policy CreateStandardPolicy() + { + return new PolicyBuilder() + .WithDateOfBirth() + .WithAgeOver(18) + .WithAgeUnder(30) + .WithAgeUnder(40) + .WithPinAuthentication(true) + .WithIdentityProfileRequirements(IdentityProfiles.CreateStandardIdentityProfileRequirements()) + .Build(); + } + } +} diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index 828d95d6..145462c9 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -38,7 +38,6 @@ - PreserveNewest @@ -67,8 +66,14 @@ PreserveNewest + + PreserveNewest + + + + PreserveNewest - \ No newline at end of file + From a8bc9e7e1994feb675402f6adfd0de2641c422e8 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 29 Sep 2023 13:00:52 +0100 Subject: [PATCH 10/50] SDK-2238:added net-create-session work --- .../DigitalIdentity/Policy/DynamicPolicy.cs | 95 ++++++++++ .../Policy/DynamicPolicyBuilder.cs | 166 ++++++++++++++++++ src/Yoti.Auth/DigitalIdentity/ShareSession.cs | 67 +++++++ 3 files changed, 328 insertions(+) create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSession.cs diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs new file mode 100644 index 00000000..3f479a1b --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + /// + /// Set of data required to request a sharing transaction + /// + public class DynamicPolicy + { + internal const int SelfieAuthType = 1; + internal const int PinAuthType = 2; + + [JsonProperty(PropertyName = "wanted")] + private readonly ICollection _wantedAttributes; + + [JsonProperty(PropertyName = "wanted_auth_types")] + private readonly HashSet _wantedAuthTypes; + + [JsonProperty(PropertyName = "wanted_remember_me")] + private readonly bool _wantedRememberMeId; + +#pragma warning disable 0414 //"Value never used" warning: the JsonProperty is used when creating the DynamicPolicy JSON + + [JsonProperty(PropertyName = "wanted_remember_me_optional")] + private readonly bool _isWantedRememberMeIdOptional; + +#pragma warning restore 0414 + + [JsonProperty(PropertyName = "identity_profile_requirements")] + private readonly object _identityProfileRequirements; + + public DynamicPolicy( + ICollection wantedAttributes, + HashSet wantedAuthTypes, + bool wantedRememberMeId, + object identityProfileRequirements = null + ) + { + _wantedAttributes = wantedAttributes; + _wantedAuthTypes = wantedAuthTypes; + _wantedRememberMeId = wantedRememberMeId; + _isWantedRememberMeIdOptional = false; + _identityProfileRequirements = identityProfileRequirements; + } + + /// + /// Set of required + /// + [JsonIgnore] + public ICollection WantedAttributes + { + get + { + return _wantedAttributes; + } + } + + /// + /// Type of authentications + /// + [JsonIgnore] + public HashSet WantedAuthTypes + { + get + { + return _wantedAuthTypes; + } + } + + /// + /// Is RememberMeId wanted in the policy + /// + [JsonIgnore] + public bool WantedRememberMeId + { + get + { + return _wantedRememberMeId; + } + } + + /// + /// IdentityProfileRequirements requested in the policy + /// + [JsonIgnore] + public object IdentityProfileRequirements + { + get + { + return _identityProfileRequirements; + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs new file mode 100644 index 00000000..a8d3bcd1 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs @@ -0,0 +1,166 @@ +using System.Collections.Generic; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class DynamicPolicyBuilder + { + private readonly Dictionary _wantedAttributes = new Dictionary(); + private readonly HashSet _wantedAuthTypes = new HashSet(); + private bool _wantedRememberMeId; + private object _identityProfileRequirements; + + public DynamicPolicyBuilder WithWantedAttribute(WantedAttribute wantedAttribute) + { + Validation.NotNull(wantedAttribute, nameof(wantedAttribute)); + + string key = wantedAttribute.Derivation ?? wantedAttribute.Name; + + if (wantedAttribute.Constraints?.Count > 0) + { + key += "-" + wantedAttribute.Constraints.GetHashCode(); + } + + _wantedAttributes[key] = wantedAttribute; + return this; + } + + public DynamicPolicyBuilder WithWantedAttribute(string name, List constraints = null) + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName(name) + .WithConstraints(constraints) + .Build(); + return WithWantedAttribute(wantedAttribute); + } + + public DynamicPolicyBuilder WithFamilyName(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.FamilyNameAttribute, constraints); + } + + public DynamicPolicyBuilder WithGivenNames(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.GivenNamesAttribute, constraints); + } + + public DynamicPolicyBuilder WithFullName(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.FullNameAttribute, constraints); + } + + public DynamicPolicyBuilder WithDateOfBirth(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DateOfBirthAttribute, constraints); + } + + public DynamicPolicyBuilder WithAgeOver(int age, List constraints = null) + { + return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeOverAttribute}:{age}", constraints); + } + + public DynamicPolicyBuilder WithAgeUnder(int age, List constraints = null) + { + return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeUnderAttribute}:{age}", constraints); + } + + private DynamicPolicyBuilder WithAgeDerivedAttribute(string derivation, List constraints) + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName(Constants.UserProfile.DateOfBirthAttribute) + .WithDerivation(derivation) + .WithConstraints(constraints) + .Build(); + return WithWantedAttribute(wantedAttribute); + } + + public DynamicPolicyBuilder WithGender(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.GenderAttribute, constraints); + } + + public DynamicPolicyBuilder WithPostalAddress(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.PostalAddressAttribute, constraints); + } + + public DynamicPolicyBuilder WithStructuredPostalAddress(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.StructuredPostalAddressAttribute, constraints); + } + + public DynamicPolicyBuilder WithNationality(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.NationalityAttribute, constraints); + } + + public DynamicPolicyBuilder WithPhoneNumber(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.PhoneNumberAttribute, constraints); + } + + public DynamicPolicyBuilder WithSelfie(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.SelfieAttribute, constraints); + } + + public DynamicPolicyBuilder WithEmail(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.EmailAddressAttribute, constraints); + } + + public DynamicPolicyBuilder WithDocumentDetails(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DocumentDetailsAttribute, constraints); + } + + public DynamicPolicyBuilder WithDocumentImages(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DocumentImagesAttribute, constraints); + } + + public DynamicPolicyBuilder WithSelfieAuthentication(bool enabled) + { + return WithAuthType(DynamicPolicy.SelfieAuthType, enabled); + } + + public DynamicPolicyBuilder WithPinAuthentication(bool enabled) + { + return WithAuthType(DynamicPolicy.PinAuthType, enabled); + } + + public DynamicPolicyBuilder WithAuthType(int authType, bool enabled) + { + if (enabled) + { + _wantedAuthTypes.Add(authType); + return this; + } + + _wantedAuthTypes.Remove(authType); + return this; + } + + public DynamicPolicyBuilder WithRememberMeId(bool required) + { + _wantedRememberMeId = required; + return this; + } + + /// + /// Use an Identity Profile Requirement object for the share + /// + /// object describing the identity profile requirements to use + /// with the identity profile requirements + public DynamicPolicyBuilder WithIdentityProfileRequirements(object identityProfileRequirements) + { + _identityProfileRequirements = identityProfileRequirements; + return this; + } + + public DynamicPolicy Build() + { + return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSession.cs b/src/Yoti.Auth/DigitalIdentity/ShareSession.cs new file mode 100644 index 00000000..6f796235 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ShareSession.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ShareSessionRequest + { + [JsonProperty(PropertyName = "callback_endpoint")] + private readonly string _callbackEndpoint; + + [JsonProperty(PropertyName = "policy")] + private readonly DynamicPolicy _dynamicPolicy; + + [JsonProperty(PropertyName = "extensions")] + private readonly List _extensions; + + [JsonProperty(PropertyName = "subject")] + private readonly object _subject; + + [JsonIgnore] + public string CallbackEndpoint + { + get + { + return _callbackEndpoint; + } + } + + [JsonIgnore] + public DynamicPolicy DynamicPolicy + { + get + { + return _dynamicPolicy; + } + } + + [JsonIgnore] + public List Extensions + { + get + { + return _extensions; + } + } + + + [JsonIgnore] + public object Subject + { + get + { + return _subject; + } + } + + public ShareSessionRequest(string callbackEndpoint, DynamicPolicy dynamicPolicy, List extensions = null, object subject = null) + { + _callbackEndpoint = callbackEndpoint; + _dynamicPolicy = dynamicPolicy; + _extensions = extensions ?? new List(); + _subject = subject; + } + } +} \ No newline at end of file From 689416706f9b921eeb825f6e5e795823a0a35dfd Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 5 Oct 2023 14:02:20 +0100 Subject: [PATCH 11/50] SDK:2238 refatoring tests --- .../DigitalIdentity/Policy/DynamicPolicy.cs | 95 ---------- .../Policy/DynamicPolicyBuilder.cs | 166 ------------------ src/Yoti.Auth/DigitalIdentity/ShareSession.cs | 67 ------- 3 files changed, 328 deletions(-) delete mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs delete mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs delete mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSession.cs diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs deleted file mode 100644 index 3f479a1b..00000000 --- a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json; - -namespace Yoti.Auth.DigitalIdentity.Policy -{ - /// - /// Set of data required to request a sharing transaction - /// - public class DynamicPolicy - { - internal const int SelfieAuthType = 1; - internal const int PinAuthType = 2; - - [JsonProperty(PropertyName = "wanted")] - private readonly ICollection _wantedAttributes; - - [JsonProperty(PropertyName = "wanted_auth_types")] - private readonly HashSet _wantedAuthTypes; - - [JsonProperty(PropertyName = "wanted_remember_me")] - private readonly bool _wantedRememberMeId; - -#pragma warning disable 0414 //"Value never used" warning: the JsonProperty is used when creating the DynamicPolicy JSON - - [JsonProperty(PropertyName = "wanted_remember_me_optional")] - private readonly bool _isWantedRememberMeIdOptional; - -#pragma warning restore 0414 - - [JsonProperty(PropertyName = "identity_profile_requirements")] - private readonly object _identityProfileRequirements; - - public DynamicPolicy( - ICollection wantedAttributes, - HashSet wantedAuthTypes, - bool wantedRememberMeId, - object identityProfileRequirements = null - ) - { - _wantedAttributes = wantedAttributes; - _wantedAuthTypes = wantedAuthTypes; - _wantedRememberMeId = wantedRememberMeId; - _isWantedRememberMeIdOptional = false; - _identityProfileRequirements = identityProfileRequirements; - } - - /// - /// Set of required - /// - [JsonIgnore] - public ICollection WantedAttributes - { - get - { - return _wantedAttributes; - } - } - - /// - /// Type of authentications - /// - [JsonIgnore] - public HashSet WantedAuthTypes - { - get - { - return _wantedAuthTypes; - } - } - - /// - /// Is RememberMeId wanted in the policy - /// - [JsonIgnore] - public bool WantedRememberMeId - { - get - { - return _wantedRememberMeId; - } - } - - /// - /// IdentityProfileRequirements requested in the policy - /// - [JsonIgnore] - public object IdentityProfileRequirements - { - get - { - return _identityProfileRequirements; - } - } - } -} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs deleted file mode 100644 index a8d3bcd1..00000000 --- a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System.Collections.Generic; -using Yoti.Auth.DocScan.Session.Create; - -namespace Yoti.Auth.DigitalIdentity.Policy -{ - public class DynamicPolicyBuilder - { - private readonly Dictionary _wantedAttributes = new Dictionary(); - private readonly HashSet _wantedAuthTypes = new HashSet(); - private bool _wantedRememberMeId; - private object _identityProfileRequirements; - - public DynamicPolicyBuilder WithWantedAttribute(WantedAttribute wantedAttribute) - { - Validation.NotNull(wantedAttribute, nameof(wantedAttribute)); - - string key = wantedAttribute.Derivation ?? wantedAttribute.Name; - - if (wantedAttribute.Constraints?.Count > 0) - { - key += "-" + wantedAttribute.Constraints.GetHashCode(); - } - - _wantedAttributes[key] = wantedAttribute; - return this; - } - - public DynamicPolicyBuilder WithWantedAttribute(string name, List constraints = null) - { - WantedAttribute wantedAttribute = new WantedAttributeBuilder() - .WithName(name) - .WithConstraints(constraints) - .Build(); - return WithWantedAttribute(wantedAttribute); - } - - public DynamicPolicyBuilder WithFamilyName(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.FamilyNameAttribute, constraints); - } - - public DynamicPolicyBuilder WithGivenNames(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.GivenNamesAttribute, constraints); - } - - public DynamicPolicyBuilder WithFullName(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.FullNameAttribute, constraints); - } - - public DynamicPolicyBuilder WithDateOfBirth(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.DateOfBirthAttribute, constraints); - } - - public DynamicPolicyBuilder WithAgeOver(int age, List constraints = null) - { - return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeOverAttribute}:{age}", constraints); - } - - public DynamicPolicyBuilder WithAgeUnder(int age, List constraints = null) - { - return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeUnderAttribute}:{age}", constraints); - } - - private DynamicPolicyBuilder WithAgeDerivedAttribute(string derivation, List constraints) - { - WantedAttribute wantedAttribute = new WantedAttributeBuilder() - .WithName(Constants.UserProfile.DateOfBirthAttribute) - .WithDerivation(derivation) - .WithConstraints(constraints) - .Build(); - return WithWantedAttribute(wantedAttribute); - } - - public DynamicPolicyBuilder WithGender(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.GenderAttribute, constraints); - } - - public DynamicPolicyBuilder WithPostalAddress(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.PostalAddressAttribute, constraints); - } - - public DynamicPolicyBuilder WithStructuredPostalAddress(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.StructuredPostalAddressAttribute, constraints); - } - - public DynamicPolicyBuilder WithNationality(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.NationalityAttribute, constraints); - } - - public DynamicPolicyBuilder WithPhoneNumber(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.PhoneNumberAttribute, constraints); - } - - public DynamicPolicyBuilder WithSelfie(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.SelfieAttribute, constraints); - } - - public DynamicPolicyBuilder WithEmail(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.EmailAddressAttribute, constraints); - } - - public DynamicPolicyBuilder WithDocumentDetails(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.DocumentDetailsAttribute, constraints); - } - - public DynamicPolicyBuilder WithDocumentImages(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.DocumentImagesAttribute, constraints); - } - - public DynamicPolicyBuilder WithSelfieAuthentication(bool enabled) - { - return WithAuthType(DynamicPolicy.SelfieAuthType, enabled); - } - - public DynamicPolicyBuilder WithPinAuthentication(bool enabled) - { - return WithAuthType(DynamicPolicy.PinAuthType, enabled); - } - - public DynamicPolicyBuilder WithAuthType(int authType, bool enabled) - { - if (enabled) - { - _wantedAuthTypes.Add(authType); - return this; - } - - _wantedAuthTypes.Remove(authType); - return this; - } - - public DynamicPolicyBuilder WithRememberMeId(bool required) - { - _wantedRememberMeId = required; - return this; - } - - /// - /// Use an Identity Profile Requirement object for the share - /// - /// object describing the identity profile requirements to use - /// with the identity profile requirements - public DynamicPolicyBuilder WithIdentityProfileRequirements(object identityProfileRequirements) - { - _identityProfileRequirements = identityProfileRequirements; - return this; - } - - public DynamicPolicy Build() - { - return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements); - } - } -} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSession.cs b/src/Yoti.Auth/DigitalIdentity/ShareSession.cs deleted file mode 100644 index 6f796235..00000000 --- a/src/Yoti.Auth/DigitalIdentity/ShareSession.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json; -using Yoti.Auth.DigitalIdentity.Extensions; -using Yoti.Auth.DigitalIdentity.Policy; - -namespace Yoti.Auth.DigitalIdentity -{ - public class ShareSessionRequest - { - [JsonProperty(PropertyName = "callback_endpoint")] - private readonly string _callbackEndpoint; - - [JsonProperty(PropertyName = "policy")] - private readonly DynamicPolicy _dynamicPolicy; - - [JsonProperty(PropertyName = "extensions")] - private readonly List _extensions; - - [JsonProperty(PropertyName = "subject")] - private readonly object _subject; - - [JsonIgnore] - public string CallbackEndpoint - { - get - { - return _callbackEndpoint; - } - } - - [JsonIgnore] - public DynamicPolicy DynamicPolicy - { - get - { - return _dynamicPolicy; - } - } - - [JsonIgnore] - public List Extensions - { - get - { - return _extensions; - } - } - - - [JsonIgnore] - public object Subject - { - get - { - return _subject; - } - } - - public ShareSessionRequest(string callbackEndpoint, DynamicPolicy dynamicPolicy, List extensions = null, object subject = null) - { - _callbackEndpoint = callbackEndpoint; - _dynamicPolicy = dynamicPolicy; - _extensions = extensions ?? new List(); - _subject = subject; - } - } -} \ No newline at end of file From 43ba69238ff24449f7474b38bd288bd6b81ea8d2 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 5 Oct 2023 21:20:25 +0100 Subject: [PATCH 12/50] updated test franework version --- test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index 145462c9..6c7dac54 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -69,6 +69,9 @@ PreserveNewest + + PreserveNewest + From f752746bdd7e7485e191d2458bc5862a3fd54f95 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 5 Oct 2023 22:34:41 +0100 Subject: [PATCH 13/50] updated test franework version --- src/Yoti.Auth/DocScan/DocScanService.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Yoti.Auth/DocScan/DocScanService.cs b/src/Yoti.Auth/DocScan/DocScanService.cs index 811b9f5f..1ebd7c92 100644 --- a/src/Yoti.Auth/DocScan/DocScanService.cs +++ b/src/Yoti.Auth/DocScan/DocScanService.cs @@ -161,6 +161,11 @@ public async Task GetMediaContent(string sdkId, AsymmetricCipherKeyP return null; } + if (response.Content.Headers.ContentType == null) + { + return null; + } + string contentType = response.Content.Headers.ContentType.MediaType; From 6d2a181e9d5bb8f2a15248bd9598f08ea841d608 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 6 Oct 2023 14:13:21 +0100 Subject: [PATCH 14/50] SDK-2245: net retrieve session --- src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs index eb04f88d..59164850 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -3,7 +3,7 @@ namespace Yoti.Auth.DigitalIdentity { - public class ShareSessionResult + public class GetSessionResult { #pragma warning disable 0649 // These fields are assigned to by JSON deserialization From 075d91e19cf8b37d2a94bee392eada2fc923d76a Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 6 Oct 2023 14:16:26 +0100 Subject: [PATCH 15/50] SDK-2245: net retrieve session --- .../DigitalIdentity/ShareSessionResult.cs | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs index 59164850..2642fa8a 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -3,9 +3,10 @@ namespace Yoti.Auth.DigitalIdentity { - public class GetSessionResult + public class ShareSessionResult { #pragma warning disable 0649 + // These fields are assigned to by JSON deserialization [JsonProperty("id")] public string Id { get; set; } @@ -16,9 +17,31 @@ public class GetSessionResult [JsonProperty("expiry")] public string Expiry { get; set; } + [JsonProperty("created")] + public string Created { get; set; } + + [JsonProperty("updated")] + public string Updated { get; set; } + + [JsonProperty("qrCode")] + public qrCode QrCode { get; set; } + + [JsonProperty("receipt")] + public receipt Receipt { get; set; } + #pragma warning restore 0649 } - + public class qrCode + { + [JsonProperty("id")] + public string Id { get; set; } + } + + public class receipt + { + [JsonProperty("id")] + public string Id { get; set; } + } } \ No newline at end of file From 96275bbfb3ad7ec3028f6997a2322923b4e2d993 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 10 Oct 2023 12:19:27 +0100 Subject: [PATCH 16/50] SDK-2245: update session response --- .../DigitalIdentity/ShareSessionResult.cs | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs index 2642fa8a..eb04f88d 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -6,7 +6,6 @@ namespace Yoti.Auth.DigitalIdentity public class ShareSessionResult { #pragma warning disable 0649 - // These fields are assigned to by JSON deserialization [JsonProperty("id")] public string Id { get; set; } @@ -17,31 +16,9 @@ public class ShareSessionResult [JsonProperty("expiry")] public string Expiry { get; set; } - [JsonProperty("created")] - public string Created { get; set; } - - [JsonProperty("updated")] - public string Updated { get; set; } - - [JsonProperty("qrCode")] - public qrCode QrCode { get; set; } - - [JsonProperty("receipt")] - public receipt Receipt { get; set; } - #pragma warning restore 0649 } - public class qrCode - { - [JsonProperty("id")] - public string Id { get; set; } - } - - public class receipt - { - [JsonProperty("id")] - public string Id { get; set; } - } + } \ No newline at end of file From b121aa25660dccac3523795bab74197f48249c8a Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Fri, 28 Jun 2024 12:58:37 +0300 Subject: [PATCH 17/50] SDK-2466 added notification builder and test (#468) --- .../Controllers/HomeController.cs | 15 +++-- .../DigitalIdentity/Policy/Notification.cs | 8 +++ .../Policy/NotificationBuilder.cs | 62 +++++++++++++++++++ .../ShareSessionRequestBuilder.cs | 1 - 4 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/NotificationBuilder.cs diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs index 9099ec63..04a06bfa 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -41,6 +41,12 @@ public IActionResult DigitalIdentity() .WithOptional(false) .Build(); + var notification = new NotificationBuilder() + .WithUrl("https://example.com/webhook") + .WithMethod("POST") + .WithVerifyTls(true) + .Build(); + var policy = new PolicyBuilder() .WithWantedAttribute(givenNamesWantedAttribute) .WithFullName() @@ -55,14 +61,7 @@ public IActionResult DigitalIdentity() .Build(); var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) - .WithNotification(new Notification - { - Headers = { }, - Url = "https://example.com/webhook", - Method = "POST", - VerifyTls = true - - }) + .WithNotification(notification) .WithRedirectUri("https:/www.yoti.com").WithSubject(new { subject_id = "some_subject_id_string" diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs b/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs index a0e60b5c..a385526d 100644 --- a/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs +++ b/src/Yoti.Auth/DigitalIdentity/Policy/Notification.cs @@ -14,5 +14,13 @@ public class Notification public Dictionary Headers { get; set; } // Optional [JsonProperty(PropertyName = "verifyTls")] public bool VerifyTls { get; set; } = true; // Optional, defaults to 'true' if URL is HTTPS + + public Notification(string url, string method, Dictionary headers, bool verifyTls) + { + Url = url; + Method = method; + Headers = headers; + VerifyTls = verifyTls; + } } } diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/NotificationBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/NotificationBuilder.cs new file mode 100644 index 00000000..57ffe60e --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/NotificationBuilder.cs @@ -0,0 +1,62 @@ +using System.Collections.Generic; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class NotificationBuilder + { + private string _url; + private string _method; + private Dictionary _headers; + private bool _verifyTls; + + /// + /// Set the URL for the notification, required if 'notification' is defined, required + /// + /// + /// + public NotificationBuilder WithUrl(string url) + { + _url = url; + return this; + } + + /// + /// Set the method for the notification, defaults to 'POST', optional + /// + /// + /// + public NotificationBuilder WithMethod(string method) + { + _method = method; + return this; + } + + /// + /// Set the headers for the notification, optional + /// + /// + /// + public NotificationBuilder WithHeaders(Dictionary headers) + { + _headers = headers; + return this; + } + + /// + /// Set to false to disable TLS verification, defaults to 'true' if URL is HTTPS, optional + /// + /// + /// + public NotificationBuilder WithVerifyTls(bool verifyTls) + { + _verifyTls = verifyTls; + return this; + } + + public Notification Build() + { + Validation.NotNullOrEmpty(_url, nameof(_url)); + return new Notification(_url, _method, _headers, _verifyTls); + } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs index 1b9a8353..fed8b107 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionRequestBuilder.cs @@ -42,7 +42,6 @@ public ShareSessionRequestBuilder WithPolicy(Policy.Policy dynamicPolicy) /// with a Notification added public ShareSessionRequestBuilder WithNotification(Notification notification) { - _notification = notification; return this; } From a81e5c3ec5d0342f45cc7d2744ebcf6357dc442c Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Fri, 28 Jun 2024 12:59:06 +0300 Subject: [PATCH 18/50] SDK-2354 added error details and related tests (#467) * SDK-2354 added error details and related tests --- .../DigitalIdentity/DigitalIdentityService.cs | 4 +- src/Yoti.Auth/DigitalIdentity/ErrorDetails.cs | 17 ++++++ src/Yoti.Auth/DigitalIdentity/ErrorReason.cs | 14 +++++ src/Yoti.Auth/DigitalIdentity/GetReceipt.cs | 2 + .../RequirementNotMetDetails.cs | 23 ++++++++ .../DigitalIdentity/SharedReceiptResponse.cs | 1 + .../RequirementNotMetDetails.cs | 53 +++++++++++++++++++ 7 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 src/Yoti.Auth/DigitalIdentity/ErrorDetails.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ErrorReason.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/RequirementNotMetDetails.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/RequirementNotMetDetails.cs diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index fa6fc0f4..3043fca8 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -283,7 +283,9 @@ public static async Task GetShareReceipt(HttpClient httpC ApplicationProfile = appProfile, ExtraData = appExtraData }, - Error = receiptResponse.Error + Error = receiptResponse.Error, + ErrorDetails = receiptResponse.ErrorDetails + }; return sharedReceiptResponse; diff --git a/src/Yoti.Auth/DigitalIdentity/ErrorDetails.cs b/src/Yoti.Auth/DigitalIdentity/ErrorDetails.cs new file mode 100644 index 00000000..b100a87d --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ErrorDetails.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; +using System.Collections.Generic; +using Yoti.Auth.DigitalIdentity; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ErrorDetails + { + public ErrorReason ErrorReason { get; private set; } + + public ErrorReason GetErrorReason() + { + return ErrorReason; + } + } + +} diff --git a/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs b/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs new file mode 100644 index 00000000..f6244513 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs @@ -0,0 +1,14 @@ +using Newtonsoft.Json; +using System.Collections.Generic; +using Yoti.Auth.DigitalIdentity; +using Yoti.DigitalIdentity; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ErrorReason + { + public RequirementNotMetDetails RequirementNotMetDetails { get; private set; } + + } + +} diff --git a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs index d1821a8f..e6dd0588 100644 --- a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs +++ b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs @@ -42,5 +42,7 @@ public class ReceiptResponse [JsonProperty("error")] public string Error { get; set; } + [JsonProperty("error_details")] + public ErrorDetails ErrorDetails { get; set; } } } diff --git a/src/Yoti.Auth/DigitalIdentity/RequirementNotMetDetails.cs b/src/Yoti.Auth/DigitalIdentity/RequirementNotMetDetails.cs new file mode 100644 index 00000000..345a1867 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/RequirementNotMetDetails.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.DigitalIdentity +{ + public class RequirementNotMetDetails + { + [JsonProperty(PropertyName = "failure_type")] + public string FailureType { get; private set; } + + [JsonProperty(PropertyName = "details")] + public string Details { get; private set; } + + [JsonProperty(PropertyName = "audit_id")] + public string AuditId { get; private set; } + + [JsonProperty(PropertyName = "document_country_iso_code")] + public string DocumentCountryIsoCode { get; private set; } + + [JsonProperty(PropertyName = "document_type")] + public string DocumentType { get; private set; } + } +} diff --git a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs index bc2e649a..01ca14d0 100644 --- a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs +++ b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs @@ -11,6 +11,7 @@ public class SharedReceiptResponse public string ParentRememberMeID { get; set; } public string Timestamp { get; set; } public string Error { get; set; } + public ErrorDetails ErrorDetails { get; set; } public UserContent UserContent { get; set; } public ApplicationContent ApplicationContent { get; set; } } diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/RequirementNotMetDetails.cs b/test/Yoti.Auth.Tests/DigitalIdentity/RequirementNotMetDetails.cs new file mode 100644 index 00000000..9fb6a132 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/RequirementNotMetDetails.cs @@ -0,0 +1,53 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; + +namespace Yoti.DigitalIdentity.Tests +{ + [TestClass] + public class RequirementNotMetDetailsTests + { + [TestMethod] + public void DeserializeValidJsonCreatesRequirementNotMetDetails() + { + var json = @" + { + ""failure_type"": ""DOCUMENT_EXPIRED"", + ""details"": ""The document has expired."", + ""audit_id"": ""AUDIT123"", + ""document_country_iso_code"": ""USA"", + ""document_type"": ""PASSPORT"" + }"; + + var details = JsonConvert.DeserializeObject(json); + + Assert.IsNotNull(details); + Assert.AreEqual("DOCUMENT_EXPIRED", details.FailureType); + Assert.AreEqual("The document has expired.", details.Details); + Assert.AreEqual("AUDIT123", details.AuditId); + Assert.AreEqual("USA", details.DocumentCountryIsoCode); + Assert.AreEqual("PASSPORT", details.DocumentType); + } + + + [TestMethod] + public void PropertyGettersReturnCorrectValues() + { + var json = @" + { + ""failure_type"": ""DOCUMENT_EXPIRED"", + ""details"": ""The document has expired."", + ""audit_id"": ""AUDIT123"", + ""document_country_iso_code"": ""USA"", + ""document_type"": ""PASSPORT"" + }"; + + var details = JsonConvert.DeserializeObject(json); + + Assert.AreEqual("DOCUMENT_EXPIRED", details.FailureType); + Assert.AreEqual("The document has expired.", details.Details); + Assert.AreEqual("AUDIT123", details.AuditId); + Assert.AreEqual("USA", details.DocumentCountryIsoCode); + Assert.AreEqual("PASSPORT", details.DocumentType); + } + } +} From 1bf3cece38b4a28c1e4ec606ff55499f8e3126c6 Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Fri, 28 Jun 2024 12:59:27 +0300 Subject: [PATCH 19/50] SDK-2374 added failure reason info to idv and added tests (#466) * SDK-2374 added failure reason info to idv and added tests --- .../IdentityProfile/FailureReasonResponse.cs | 5 ++- .../RequirementNotMetDetails.cs | 17 ++++++++ .../FailureReasonResponseTest.cs | 39 +++++++++++++++++++ 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/RequirementNotMetDetails.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs index 3ee204fe..682b69db 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs @@ -5,6 +5,9 @@ namespace Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile public class FailureReasonResponse { [JsonProperty(PropertyName = "reason_code")] - public string ReasonCode { get; private set; } + public string ReasonCode { get; private set; } + + [JsonProperty(PropertyName = "requirements_not_met_details")] + public RequirementNotMetDetails RequirementNotMetDetails { get; private set; } } } diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/RequirementNotMetDetails.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/RequirementNotMetDetails.cs new file mode 100644 index 00000000..1ceee634 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/RequirementNotMetDetails.cs @@ -0,0 +1,17 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile; + +public class RequirementNotMetDetails +{ + [JsonProperty(PropertyName = "failure_type")] + public string FailureType { get; private set; } + [JsonProperty(PropertyName = "document_type")] + public string DocumentType { get; private set; } + [JsonProperty(PropertyName = "document_country_iso_code")] + public string DocumentCountryIsoCode { get; private set; } + [JsonProperty(PropertyName = "audit_id")] + public string AuditId { get; private set; } + [JsonProperty(PropertyName = "details")] + public string Details { get; private set; } +} diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs new file mode 100644 index 00000000..505e255c --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs @@ -0,0 +1,39 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.Tests +{ + [TestClass] + public class FailureReasonResponseTests + { + [TestMethod] + public void Deserialize_ValidJson_CreatesFailureReasonResponse() + { + // Arrange + var json = @" + { + ""reason_code"": ""CODE123"", + ""requirements_not_met_details"": { + ""failure_type"": ""DOCUMENT_EXPIRED"", + ""details"": ""The document has expired."", + ""audit_id"": ""AUDIT123"", + ""document_country_iso_code"": ""USA"", + ""document_type"": ""PASSPORT"" + } + }"; + + var response = JsonConvert.DeserializeObject(json); + + Assert.IsNotNull(response); + Assert.AreEqual("CODE123", response.ReasonCode); + Assert.IsNotNull(response.RequirementNotMetDetails); + Assert.AreEqual("DOCUMENT_EXPIRED", response.RequirementNotMetDetails.FailureType); + Assert.AreEqual("The document has expired.", response.RequirementNotMetDetails.Details); + Assert.AreEqual("AUDIT123", response.RequirementNotMetDetails.AuditId); + Assert.AreEqual("USA", response.RequirementNotMetDetails.DocumentCountryIsoCode); + Assert.AreEqual("PASSPORT", response.RequirementNotMetDetails.DocumentType); + } + } + +} From 168cda7a808a6e01e4cb0b3042c90ce07746196b Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 28 Jun 2024 13:23:37 +0300 Subject: [PATCH 20/50] Updated Release Version To 3.17 --- src/Yoti.Auth/Yoti.Auth.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index e5374455..f231369c 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -19,7 +19,7 @@ False latest true - 3.16.0 + 3.17.0 From 534b730807a1ea8b40d026856d327266010ce4af Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Fri, 28 Jun 2024 15:09:42 +0300 Subject: [PATCH 21/50] SDK-2382: Update IDV example project defaults (#440) (#470) * update example session configurations * IN5631 Updated to remove unsupported dotnet versions * IN5631 Updated tests for dotnet version support --- .../DocScanExample/Controllers/DbsController.cs | 2 +- .../DocScanExample/Controllers/HomeController.cs | 11 +++++------ src/Yoti.Auth/DocScan/DocScanService.cs | 5 ++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs index 2a1200be..cbd122fc 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs @@ -33,7 +33,7 @@ public IActionResult Index() //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) - .WithResourcesTtl(90000) + .WithResourcesTtl(86400) .WithUserTrackingId("some-user-tracking-id") //Add Sdk Config (with builder) .WithSdkConfig( diff --git a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs index 1713dc4b..ab34ab82 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs @@ -43,18 +43,17 @@ public IActionResult Index() //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) - .WithResourcesTtl(90000) + .WithResourcesTtl(86400) .WithUserTrackingId("some-user-tracking-id") //Add Checks (using builders) .WithRequestedCheck( new RequestedDocumentAuthenticityCheckBuilder() - .WithManualCheckAlways() + .WithManualCheckFallback() .Build() ) .WithRequestedCheck( new RequestedLivenessCheckBuilder() - .ForZoomLiveness() - //.ForStaticLiveness() + .ForStaticLiveness() .Build() ) //.WithRequestedCheck( @@ -64,7 +63,7 @@ public IActionResult Index() // ) .WithRequestedCheck( new RequestedFaceMatchCheckBuilder() - .WithManualCheckAlways() + .WithManualCheckFallback() .Build() ) .WithRequestedCheck( @@ -89,7 +88,7 @@ public IActionResult Index() ) .WithRequestedTask( new RequestedSupplementaryDocTextExtractionTaskBuilder() - .WithManualCheckAlways() + .WithManualCheckFallback() .Build() ) .WithNotifications(notificationConfig) diff --git a/src/Yoti.Auth/DocScan/DocScanService.cs b/src/Yoti.Auth/DocScan/DocScanService.cs index 1ebd7c92..1035033a 100644 --- a/src/Yoti.Auth/DocScan/DocScanService.cs +++ b/src/Yoti.Auth/DocScan/DocScanService.cs @@ -165,10 +165,9 @@ public async Task GetMediaContent(string sdkId, AsymmetricCipherKeyP { return null; } - + string contentType = response.Content.Headers.ContentType.MediaType; - var responseObject = await response.Content.ReadAsByteArrayAsync(); var deserialized = await Task.Factory.StartNew(() => new MediaValue(contentType, responseObject)); @@ -361,4 +360,4 @@ private static string MediaEndpoint(string sessionId, string mediaId) private static JsonSerializerSettings YotiDefaultJsonSettings => new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; } -} \ No newline at end of file +} From e9d2296d2f3370479e2522d676cda5da2102ea39 Mon Sep 17 00:00:00 2001 From: Mehmet Ali Sepici Date: Tue, 1 Oct 2024 15:49:22 +0300 Subject: [PATCH 22/50] SDK-2354 added error info to example success pages in docscan and digitalidentity --- .../Controllers/SuccessController.cs | 3 ++ .../Models/DisplayAttributes.cs | 2 + .../Views/Success/SuccessResult.cshtml | 29 ++++++++++++++ .../Controllers/IdVerifyController.cs | 4 +- .../Views/IdVerify/Success.cshtml | 40 ++++++++++++++++++- 5 files changed, 75 insertions(+), 3 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs index aeac61a2..6ba5f520 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs @@ -57,6 +57,9 @@ public IActionResult ReceiptInfo(string ReceiptID) { displayAttributes.Base64Selfie = selfie.GetValue().GetBase64URI(); } + + displayAttributes.ErrorDetails = ReceiptResult.ErrorDetails; + ViewBag.YotiClientSdkId = _clientSdkId; return View("SuccessResult", displayAttributes); diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs index 417d3e7e..b273d3de 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Yoti.Auth.Anchors; +using Yoti.Auth.DigitalIdentity; namespace DigitalIdentity.Models { @@ -8,6 +9,7 @@ public class DisplayAttributes public List AttributeList { get; internal set; } public string Base64Selfie { get; internal set; } public string FullName { get; internal set; } + public ErrorDetails ErrorDetails { get; internal set; } internal DisplayAttributes() { diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml index a27d3c40..4b6f0650 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml @@ -41,6 +41,35 @@ + @if (Model.ErrorDetails != null) + { +
+
+
Errors
+
+
+
+
Audit Id
+
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.AuditId
+
+
+
Details
+
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.Details
+
+
+
Failure Type
+
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.FailureType
+
+
+
Document Type
+
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.DocumentType
+
+
+
Country
+
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.DocumentCountryIsoCode
+
+
+ }
diff --git a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs index 999bc4b8..a315c2ff 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs @@ -26,7 +26,7 @@ public IActionResult Success() TempData.Keep("sessionId"); GetSessionResult getSessionResult = _client.GetSession(sessionId); - + return View(getSessionResult); } @@ -36,4 +36,4 @@ public IActionResult Error() return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } -} \ No newline at end of file +} diff --git a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml index 284bcaff..5ab3d6cc 100644 --- a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml +++ b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml @@ -53,6 +53,44 @@ +
+
+

Identity Result Error

+
+
+ + @if (Model.IdentityProfile.FailureReason.ReasonCode != null) + { + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Reason Code@Model.IdentityProfile.FailureReason.ReasonCode
Failure Type@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.FailureType
Details@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.Details
Audit Id@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.AuditId
Country ISO Code@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.DocumentCountryIsoCode
Document Type@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.DocumentType
+ } + @if (Model.Checks != null && Model.Checks.Count > 0) {
@@ -857,4 +895,4 @@ } } -
\ No newline at end of file + From 522f5a78087108a19f80005a55020877a8547735 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Wed, 2 Oct 2024 09:39:31 +0100 Subject: [PATCH 23/50] Updated Examples --- .../DocScan/DocScanExample/Controllers/DbsController.cs | 2 +- .../DocScan/DocScanExample/Controllers/HomeController.cs | 5 +++-- .../DocScan/DocScanExample/Controllers/IdVerifyController.cs | 2 +- src/Examples/DocScan/DocScanExample/DocScanExample.csproj | 2 +- .../DocScan/DocScanExample/Views/IdVerify/Success.cshtml | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs index cbd122fc..66d9f307 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs @@ -33,7 +33,7 @@ public IActionResult Index() //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) - .WithResourcesTtl(86400) + .WithResourcesTtl(96460) .WithUserTrackingId("some-user-tracking-id") //Add Sdk Config (with builder) .WithSdkConfig( diff --git a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs index ab34ab82..b668763e 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs @@ -43,7 +43,7 @@ public IActionResult Index() //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) - .WithResourcesTtl(86400) + .WithResourcesTtl(96400) .WithUserTrackingId("some-user-tracking-id") //Add Checks (using builders) .WithRequestedCheck( @@ -108,6 +108,7 @@ public IActionResult Index() .Build() ) //Add Required Documents (with builders) + .WithCreateIdentityProfilePreview(true) .WithRequiredDocument( new RequiredIdDocumentBuilder() .WithFilter( @@ -191,4 +192,4 @@ public IActionResult PrivacyPolicy() return View(); } } -} \ No newline at end of file +} diff --git a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs index a315c2ff..6cf40559 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs @@ -24,7 +24,7 @@ public IActionResult Success() { string sessionId = TempData["sessionId"].ToString(); TempData.Keep("sessionId"); - + //sessionId = "f5f4c67a-af57-4501-89ab-428d0aaa1b55"; GetSessionResult getSessionResult = _client.GetSession(sessionId); return View(getSessionResult); diff --git a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj index 37004042..72d7b973 100644 --- a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj +++ b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1 + net6.0 diff --git a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml index 5ab3d6cc..bdae6f7a 100644 --- a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml +++ b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml @@ -59,7 +59,7 @@ - @if (Model.IdentityProfile.FailureReason.ReasonCode != null) + @if (Model.IdentityProfile != null && Model.IdentityProfile.FailureReason.ReasonCode != null) { From 66c2af28e7a2584c6f676d5d39fa5cb8932781ae Mon Sep 17 00:00:00 2001 From: Mehmet Ali Sepici Date: Wed, 2 Oct 2024 11:37:58 +0300 Subject: [PATCH 24/50] SDK-2354-added-dbs-example-digital-identity-project --- .../Controllers/DbsController.cs | 90 ++++++++++++++++++ .../DigitalIdentityExample.csproj | 2 + .../DigitalIdentity/Views/Dbs/Dbs.cshtml | 92 +++++++++++++++++++ 3 files changed, 184 insertions(+) create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs new file mode 100644 index 00000000..3b69f50c --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs @@ -0,0 +1,90 @@ +using System; +using System.IO; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Yoti.Auth; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace DigitalIdentityExample.Controllers +{ + public class DbsController : Controller + { + private readonly string _clientSdkId; + private readonly ILogger _logger; + public DbsController(ILogger logger) + { + _logger = logger; + + _clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); + _logger.LogInformation(string.Format("Yoti Client SDK ID='{0}'", _clientSdkId)); + } + + // GET: /generate-share + [Route("dbs-share")] + public IActionResult DigitalIdentity() + { + try + { + string yotiKeyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); + _logger.LogInformation( + string.Format( + "yotiKeyFilePath='{0}'", + yotiKeyFilePath)); + + StreamReader privateKeyStream = System.IO.File.OpenText(yotiKeyFilePath); + + var yotiClient = new DigitalIdentityClient(_clientSdkId, privateKeyStream); + + var givenNamesWantedAttribute = new WantedAttributeBuilder() + .WithName("given_names") + .WithOptional(false) + .Build(); + + var notification = new NotificationBuilder() + .WithUrl("https://example.com/webhook") + .WithMethod("POST") + .WithVerifyTls(true) + .Build(); + + var policy = new PolicyBuilder() + .WithIdentityProfileRequirements(new + { + trust_framework = "UK_TFIDA", + scheme = new + { + type = "DBS", + objective = "BASIC" + } + }) + .Build(); + + var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) + .WithNotification(notification) + .WithRedirectUri("https:/www.yoti.com").WithSubject(new + { + subject_id = "some_subject_id_string" + }).Build(); + + var SessionResult = yotiClient.CreateShareSession(sessionReq); + + var sharedReceiptResponse = new SharedReceiptResponse(); + + ViewBag.YotiClientSdkId = _clientSdkId; + ViewBag.sessionID = SessionResult.Id; + + return View("Dbs", sharedReceiptResponse); + } + catch (Exception e) + { + _logger.LogError( + exception: e, + message: e.Message); + + TempData["Error"] = e.Message; + TempData["InnerException"] = e.InnerException?.Message; + return RedirectToAction("Error", "Success"); + } + } + } +} diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj index b24d78cf..87e3552c 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj +++ b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj @@ -52,4 +52,6 @@ <_ContentIncludedByDefault Remove="Pages\Success\SuccessResult.cshtml" /> + + \ No newline at end of file diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml new file mode 100644 index 00000000..23c49caa --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml @@ -0,0 +1,92 @@ +@{ + ViewData["Title"] = "Digital Identity - DBS"; +} +@model Yoti.Auth.DigitalIdentity.SharedReceiptResponse + + + + + + + + Yoti Digital Identity Client Example + + + + + + +
+
+
+ Yoti +
+ +

Digital Identity Share Example

+ +
+
+
+ +
+ +
+

The Yoti app is free to download and use:

+ +
+ + Download on the App Store + + + + get it on Google Play + +
+
+
+ + + + + From 59e9ce8a84f35140fc2287fcc7141d323c946051 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Wed, 2 Oct 2024 09:41:18 +0100 Subject: [PATCH 25/50] Updated Examples --- .../DigitalIdentity/Views/Home/DigitalIdentity.cshtml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml index 841d32ac..cd93283f 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -51,7 +51,7 @@ - - + From eda82950690763db3b773c5b95d89bd6c3680340 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 11:48:07 +0100 Subject: [PATCH 26/50] Release changes --- .../Models/DisplayAttributes.cs | 2 +- .../DigitalIdentity/Views/Dbs/Dbs.cshtml | 4 +- .../Views/Success/SuccessResult.cshtml | 59 ++++++++++-------- .../Controllers/HomeController.cs | 1 - .../Controllers/IdVerifyController.cs | 2 +- .../Views/IdVerify/Success.cshtml | 23 +++---- .../DigitalIdentity/DigitalIdentityService.cs | 61 ++++++++++++++++--- src/Yoti.Auth/DigitalIdentity/ErrorReason.cs | 3 +- src/Yoti.Auth/DigitalIdentity/GetReceipt.cs | 4 +- .../DigitalIdentity/SharedReceiptResponse.cs | 2 +- .../IdentityProfile/FailureReasonResponse.cs | 5 +- .../FailureReasonResponseTest.cs | 14 ++--- 12 files changed, 117 insertions(+), 63 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs index b273d3de..5bdb2ede 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs @@ -9,7 +9,7 @@ public class DisplayAttributes public List AttributeList { get; internal set; } public string Base64Selfie { get; internal set; } public string FullName { get; internal set; } - public ErrorDetails ErrorDetails { get; internal set; } + public ErrorReason ErrorDetails { get; internal set; } internal DisplayAttributes() { diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml index 23c49caa..09762642 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml @@ -51,7 +51,7 @@ - - + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml index 4b6f0650..89923acb 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml @@ -43,34 +43,36 @@ @if (Model.ErrorDetails != null) { -
-
-
Errors
-
-
-
-
Audit Id
-
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.AuditId
-
-
-
Details
-
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.Details
-
-
-
Failure Type
-
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.FailureType
-
-
-
Document Type
-
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.DocumentType
-
-
-
Country
-
@Model.ErrorDetails.ErrorReason.RequirementNotMetDetails.DocumentCountryIsoCode
-
-
- }
+
+
Errors
+
+
+
+
Audit Id
+
@Model.ErrorDetails.RequirementNotMetDetails[0].AuditId
+
+
+
Details
+
@Model.ErrorDetails.RequirementNotMetDetails[0].Details
+
+
+
Failure Type
+
@Model.ErrorDetails.RequirementNotMetDetails[0].FailureType
+
+
+
Document Type
+
@Model.ErrorDetails.RequirementNotMetDetails[0].DocumentType
+
+
+
Country
+
@Model.ErrorDetails.RequirementNotMetDetails[0].DocumentCountryIsoCode
+
+
+ } + else + { +
@@ -87,6 +89,7 @@
+
@foreach (DigitalIdentity.Models.DisplayAttribute a in Model.AttributeList) { @@ -196,6 +199,8 @@ }
+ } + diff --git a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs index b668763e..b7d136e2 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs @@ -108,7 +108,6 @@ public IActionResult Index() .Build() ) //Add Required Documents (with builders) - .WithCreateIdentityProfilePreview(true) .WithRequiredDocument( new RequiredIdDocumentBuilder() .WithFilter( diff --git a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs index 6cf40559..7c5a36e2 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs @@ -24,7 +24,7 @@ public IActionResult Success() { string sessionId = TempData["sessionId"].ToString(); TempData.Keep("sessionId"); - //sessionId = "f5f4c67a-af57-4501-89ab-428d0aaa1b55"; + sessionId = "f7a509ba-5722-424e-bbbc-17ac4a4a4656"; GetSessionResult getSessionResult = _client.GetSession(sessionId); return View(getSessionResult); diff --git a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml index bdae6f7a..7bd30888 100644 --- a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml +++ b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml @@ -53,14 +53,15 @@ -
-
-

Identity Result Error

-
-
+ - @if (Model.IdentityProfile != null && Model.IdentityProfile.FailureReason.ReasonCode != null) + @if (Model.IdentityProfile != null && Model.IdentityProfile.FailureReason != null &&Model.IdentityProfile.FailureReason.ReasonCode != null) { +
+
+

Identity Result Error

+
+
@@ -69,23 +70,23 @@ - + - + - + - + - +
Failure Type@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.FailureType@Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].FailureType
Details@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.Details@Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].Details
Audit Id@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.AuditId@Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].AuditId
Country ISO Code@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.DocumentCountryIsoCode@Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].DocumentCountryIsoCode
Document Type@Model.IdentityProfile.FailureReason.RequirementNotMetDetails.DocumentType@Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].DocumentType
diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 3043fca8..708c471f 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -1,9 +1,11 @@ using System; -using System.Collections.Generic; -using System.IO; + using System.Net.Http; +using System.Security; using System.Text; + using System.Threading.Tasks; + using Google.Protobuf; using Newtonsoft.Json; using Org.BouncyCastle.Crypto; @@ -205,7 +207,23 @@ public static string Base64ToBase64URL(string base64Str) { try { - byte[] decodedBytes = Convert.FromBase64String(base64Str); + byte[] temp = null; + try + { + temp = Convert.FromBase64String(base64Str); + } + catch (Exception) + { + //6m4SclMZ34mgaCebIPeFu/ZdJRoS2ZKk/LBNCKuv5MjfcBrIAMMvfjAeH+zIKoMV + //6m4SclMZ34mgaCebIPeFu/ZdJRoS2ZKk/LBNCKuv5MjfcBrIAMMvfjAeH+zIKoMV + //6m4SclMZ34mgaCebIPeFu%2FZdJRoS2ZKk%2FLBNCKuv5MjfcBrIAMMvfjAeH%2BzIKoMV + //EYRTuyFdeMGtW%2FVjL%2FoqGPiNVBWphTGydZWvLmd52z7k7Fr5MJdzmRV57reh94sU + var tempBase64Str = Uri.UnescapeDataString(base64Str); + temp = Convert.FromBase64String(tempBase64Str); + } + + + byte[] decodedBytes = temp;//Convert.FromBase64String(base64Str); string base64URL = Convert.ToBase64String(decodedBytes) .Replace('+', '-') .Replace('/', '_') @@ -225,8 +243,9 @@ public static async Task GetShareReceipt(HttpClient httpC { var receiptResponse = await GetReceipt(httpClient, receiptId, clientSdkId, apiUrl, key); var itemKeyId = receiptResponse.WrappedItemKeyId; - - var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); + if (itemKeyId != null) + { + var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); var receiptContentKey = CryptoEngine.UnwrapReceiptKey(receiptResponse.WrappedKey, encryptedItemKeyResponse.Value, encryptedItemKeyResponse.Iv, key); @@ -286,9 +305,37 @@ public static async Task GetShareReceipt(HttpClient httpC Error = receiptResponse.Error, ErrorDetails = receiptResponse.ErrorDetails - }; - + }; return sharedReceiptResponse; + } + else + { + var sharedReceiptResponse = new SharedReceiptResponse + { + ID = receiptResponse.ID, + SessionID = receiptResponse.SessionID, + RememberMeID = receiptResponse.RememberMeID, + ParentRememberMeID = receiptResponse.ParentRememberMeID, + Timestamp = receiptResponse.Timestamp, + UserContent = new UserContent + { + UserProfile = new YotiProfile(), + ExtraData = new ExtraData() + }, + ApplicationContent = new ApplicationContent + { + ApplicationProfile = new ApplicationProfile(), + ExtraData = new ExtraData() + }, + Error = receiptResponse.Error, + ErrorDetails = receiptResponse.ErrorDetails + + }; + return sharedReceiptResponse; + } + + + } catch (Exception ex) { diff --git a/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs b/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs index f6244513..6ca112df 100644 --- a/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs +++ b/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs @@ -7,7 +7,8 @@ namespace Yoti.Auth.DigitalIdentity { public class ErrorReason { - public RequirementNotMetDetails RequirementNotMetDetails { get; private set; } + [JsonProperty("requirements_not_met_details")] + public List RequirementNotMetDetails { get; private set; } } diff --git a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs index e6dd0588..1c9f3fd7 100644 --- a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs +++ b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs @@ -42,7 +42,7 @@ public class ReceiptResponse [JsonProperty("error")] public string Error { get; set; } - [JsonProperty("error_details")] - public ErrorDetails ErrorDetails { get; set; } + [JsonProperty("errorReason")] + public ErrorReason ErrorDetails { get; set; } } } diff --git a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs index 01ca14d0..3a6f6de5 100644 --- a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs +++ b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs @@ -11,7 +11,7 @@ public class SharedReceiptResponse public string ParentRememberMeID { get; set; } public string Timestamp { get; set; } public string Error { get; set; } - public ErrorDetails ErrorDetails { get; set; } + public ErrorReason ErrorDetails { get; set; } public UserContent UserContent { get; set; } public ApplicationContent ApplicationContent { get; set; } } diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs index 682b69db..1c6998dc 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using System.Collections.Generic; +using Newtonsoft.Json; namespace Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile { @@ -8,6 +9,6 @@ public class FailureReasonResponse public string ReasonCode { get; private set; } [JsonProperty(PropertyName = "requirements_not_met_details")] - public RequirementNotMetDetails RequirementNotMetDetails { get; private set; } + public List RequirementNotMetDetails { get; private set; } } } diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs index 505e255c..c44a76e1 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs @@ -14,13 +14,13 @@ public void Deserialize_ValidJson_CreatesFailureReasonResponse() var json = @" { ""reason_code"": ""CODE123"", - ""requirements_not_met_details"": { + ""requirements_not_met_details"": [{ ""failure_type"": ""DOCUMENT_EXPIRED"", ""details"": ""The document has expired."", ""audit_id"": ""AUDIT123"", ""document_country_iso_code"": ""USA"", ""document_type"": ""PASSPORT"" - } + }] }"; var response = JsonConvert.DeserializeObject(json); @@ -28,11 +28,11 @@ public void Deserialize_ValidJson_CreatesFailureReasonResponse() Assert.IsNotNull(response); Assert.AreEqual("CODE123", response.ReasonCode); Assert.IsNotNull(response.RequirementNotMetDetails); - Assert.AreEqual("DOCUMENT_EXPIRED", response.RequirementNotMetDetails.FailureType); - Assert.AreEqual("The document has expired.", response.RequirementNotMetDetails.Details); - Assert.AreEqual("AUDIT123", response.RequirementNotMetDetails.AuditId); - Assert.AreEqual("USA", response.RequirementNotMetDetails.DocumentCountryIsoCode); - Assert.AreEqual("PASSPORT", response.RequirementNotMetDetails.DocumentType); + Assert.AreEqual("DOCUMENT_EXPIRED", response.RequirementNotMetDetails[0].FailureType); + Assert.AreEqual("The document has expired.", response.RequirementNotMetDetails[0].Details); + Assert.AreEqual("AUDIT123", response.RequirementNotMetDetails[0].AuditId); + Assert.AreEqual("USA", response.RequirementNotMetDetails[0].DocumentCountryIsoCode); + Assert.AreEqual("PASSPORT", response.RequirementNotMetDetails[0].DocumentType); } } From d909db659201fc78be99f7215f980fd600c8961a Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 11:49:24 +0100 Subject: [PATCH 27/50] Release changes --- .../DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml | 4 ++-- .../DigitalIdentity/Views/Home/DigitalIdentity.cshtml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml index 09762642..23c49caa 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Dbs/Dbs.cshtml @@ -51,7 +51,7 @@
- - + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml index cd93283f..9341819f 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -87,6 +87,6 @@ await onReadyToStart() } - + From 957ec85d1057a547da9524cdd9f061c118b682cd Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 29 Sep 2023 13:00:52 +0100 Subject: [PATCH 28/50] SDK-2238:added net-create-session work --- .../DigitalIdentity/Policy/DynamicPolicy.cs | 95 ++++++++++ .../Policy/DynamicPolicyBuilder.cs | 166 ++++++++++++++++++ src/Yoti.Auth/DigitalIdentity/ShareSession.cs | 67 +++++++ 3 files changed, 328 insertions(+) create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs create mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSession.cs diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs new file mode 100644 index 00000000..3f479a1b --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + /// + /// Set of data required to request a sharing transaction + /// + public class DynamicPolicy + { + internal const int SelfieAuthType = 1; + internal const int PinAuthType = 2; + + [JsonProperty(PropertyName = "wanted")] + private readonly ICollection _wantedAttributes; + + [JsonProperty(PropertyName = "wanted_auth_types")] + private readonly HashSet _wantedAuthTypes; + + [JsonProperty(PropertyName = "wanted_remember_me")] + private readonly bool _wantedRememberMeId; + +#pragma warning disable 0414 //"Value never used" warning: the JsonProperty is used when creating the DynamicPolicy JSON + + [JsonProperty(PropertyName = "wanted_remember_me_optional")] + private readonly bool _isWantedRememberMeIdOptional; + +#pragma warning restore 0414 + + [JsonProperty(PropertyName = "identity_profile_requirements")] + private readonly object _identityProfileRequirements; + + public DynamicPolicy( + ICollection wantedAttributes, + HashSet wantedAuthTypes, + bool wantedRememberMeId, + object identityProfileRequirements = null + ) + { + _wantedAttributes = wantedAttributes; + _wantedAuthTypes = wantedAuthTypes; + _wantedRememberMeId = wantedRememberMeId; + _isWantedRememberMeIdOptional = false; + _identityProfileRequirements = identityProfileRequirements; + } + + /// + /// Set of required + /// + [JsonIgnore] + public ICollection WantedAttributes + { + get + { + return _wantedAttributes; + } + } + + /// + /// Type of authentications + /// + [JsonIgnore] + public HashSet WantedAuthTypes + { + get + { + return _wantedAuthTypes; + } + } + + /// + /// Is RememberMeId wanted in the policy + /// + [JsonIgnore] + public bool WantedRememberMeId + { + get + { + return _wantedRememberMeId; + } + } + + /// + /// IdentityProfileRequirements requested in the policy + /// + [JsonIgnore] + public object IdentityProfileRequirements + { + get + { + return _identityProfileRequirements; + } + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs new file mode 100644 index 00000000..a8d3bcd1 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs @@ -0,0 +1,166 @@ +using System.Collections.Generic; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.DigitalIdentity.Policy +{ + public class DynamicPolicyBuilder + { + private readonly Dictionary _wantedAttributes = new Dictionary(); + private readonly HashSet _wantedAuthTypes = new HashSet(); + private bool _wantedRememberMeId; + private object _identityProfileRequirements; + + public DynamicPolicyBuilder WithWantedAttribute(WantedAttribute wantedAttribute) + { + Validation.NotNull(wantedAttribute, nameof(wantedAttribute)); + + string key = wantedAttribute.Derivation ?? wantedAttribute.Name; + + if (wantedAttribute.Constraints?.Count > 0) + { + key += "-" + wantedAttribute.Constraints.GetHashCode(); + } + + _wantedAttributes[key] = wantedAttribute; + return this; + } + + public DynamicPolicyBuilder WithWantedAttribute(string name, List constraints = null) + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName(name) + .WithConstraints(constraints) + .Build(); + return WithWantedAttribute(wantedAttribute); + } + + public DynamicPolicyBuilder WithFamilyName(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.FamilyNameAttribute, constraints); + } + + public DynamicPolicyBuilder WithGivenNames(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.GivenNamesAttribute, constraints); + } + + public DynamicPolicyBuilder WithFullName(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.FullNameAttribute, constraints); + } + + public DynamicPolicyBuilder WithDateOfBirth(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DateOfBirthAttribute, constraints); + } + + public DynamicPolicyBuilder WithAgeOver(int age, List constraints = null) + { + return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeOverAttribute}:{age}", constraints); + } + + public DynamicPolicyBuilder WithAgeUnder(int age, List constraints = null) + { + return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeUnderAttribute}:{age}", constraints); + } + + private DynamicPolicyBuilder WithAgeDerivedAttribute(string derivation, List constraints) + { + WantedAttribute wantedAttribute = new WantedAttributeBuilder() + .WithName(Constants.UserProfile.DateOfBirthAttribute) + .WithDerivation(derivation) + .WithConstraints(constraints) + .Build(); + return WithWantedAttribute(wantedAttribute); + } + + public DynamicPolicyBuilder WithGender(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.GenderAttribute, constraints); + } + + public DynamicPolicyBuilder WithPostalAddress(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.PostalAddressAttribute, constraints); + } + + public DynamicPolicyBuilder WithStructuredPostalAddress(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.StructuredPostalAddressAttribute, constraints); + } + + public DynamicPolicyBuilder WithNationality(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.NationalityAttribute, constraints); + } + + public DynamicPolicyBuilder WithPhoneNumber(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.PhoneNumberAttribute, constraints); + } + + public DynamicPolicyBuilder WithSelfie(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.SelfieAttribute, constraints); + } + + public DynamicPolicyBuilder WithEmail(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.EmailAddressAttribute, constraints); + } + + public DynamicPolicyBuilder WithDocumentDetails(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DocumentDetailsAttribute, constraints); + } + + public DynamicPolicyBuilder WithDocumentImages(List constraints = null) + { + return WithWantedAttribute(Constants.UserProfile.DocumentImagesAttribute, constraints); + } + + public DynamicPolicyBuilder WithSelfieAuthentication(bool enabled) + { + return WithAuthType(DynamicPolicy.SelfieAuthType, enabled); + } + + public DynamicPolicyBuilder WithPinAuthentication(bool enabled) + { + return WithAuthType(DynamicPolicy.PinAuthType, enabled); + } + + public DynamicPolicyBuilder WithAuthType(int authType, bool enabled) + { + if (enabled) + { + _wantedAuthTypes.Add(authType); + return this; + } + + _wantedAuthTypes.Remove(authType); + return this; + } + + public DynamicPolicyBuilder WithRememberMeId(bool required) + { + _wantedRememberMeId = required; + return this; + } + + /// + /// Use an Identity Profile Requirement object for the share + /// + /// object describing the identity profile requirements to use + /// with the identity profile requirements + public DynamicPolicyBuilder WithIdentityProfileRequirements(object identityProfileRequirements) + { + _identityProfileRequirements = identityProfileRequirements; + return this; + } + + public DynamicPolicy Build() + { + return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements); + } + } +} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSession.cs b/src/Yoti.Auth/DigitalIdentity/ShareSession.cs new file mode 100644 index 00000000..6f796235 --- /dev/null +++ b/src/Yoti.Auth/DigitalIdentity/ShareSession.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity.Extensions; +using Yoti.Auth.DigitalIdentity.Policy; + +namespace Yoti.Auth.DigitalIdentity +{ + public class ShareSessionRequest + { + [JsonProperty(PropertyName = "callback_endpoint")] + private readonly string _callbackEndpoint; + + [JsonProperty(PropertyName = "policy")] + private readonly DynamicPolicy _dynamicPolicy; + + [JsonProperty(PropertyName = "extensions")] + private readonly List _extensions; + + [JsonProperty(PropertyName = "subject")] + private readonly object _subject; + + [JsonIgnore] + public string CallbackEndpoint + { + get + { + return _callbackEndpoint; + } + } + + [JsonIgnore] + public DynamicPolicy DynamicPolicy + { + get + { + return _dynamicPolicy; + } + } + + [JsonIgnore] + public List Extensions + { + get + { + return _extensions; + } + } + + + [JsonIgnore] + public object Subject + { + get + { + return _subject; + } + } + + public ShareSessionRequest(string callbackEndpoint, DynamicPolicy dynamicPolicy, List extensions = null, object subject = null) + { + _callbackEndpoint = callbackEndpoint; + _dynamicPolicy = dynamicPolicy; + _extensions = extensions ?? new List(); + _subject = subject; + } + } +} \ No newline at end of file From b69e2b9a7ce7503dcd9a38a9f50c6e60e35d8ac1 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 5 Oct 2023 14:02:20 +0100 Subject: [PATCH 29/50] SDK:2238 refatoring tests --- .../DigitalIdentity/DigitalIdentityService.cs | 16 +- .../DigitalIdentity/Policy/DynamicPolicy.cs | 95 ---------- .../Policy/DynamicPolicyBuilder.cs | 166 ------------------ src/Yoti.Auth/DigitalIdentity/ShareSession.cs | 67 ------- test/.DS_Store | Bin 0 -> 6148 bytes test/Yoti.Auth.Tests/.DS_Store | Bin 0 -> 10244 bytes .../Policy/DynamicPolicyBuilderTests.cs | 4 + .../TestData/DigitalIdentity.json | 24 +++ test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 12 ++ 9 files changed, 48 insertions(+), 336 deletions(-) delete mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs delete mode 100644 src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs delete mode 100644 src/Yoti.Auth/DigitalIdentity/ShareSession.cs create mode 100644 test/.DS_Store create mode 100644 test/Yoti.Auth.Tests/.DS_Store diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 708c471f..69a918a5 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -43,14 +43,14 @@ internal static async Task CreateShareSession(HttpClient htt byte[] body = Encoding.UTF8.GetBytes(serializedScenario); Request shareSessionRequest = new RequestBuilder() - .WithKeyPair(keyPair) - .WithBaseUri(apiUrl) - .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(sessionCreation) - .WithQueryParam("sdkID", sdkId) - .WithHttpMethod(HttpMethod.Post) - .WithContent(body) - .Build(); + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(sessionCreation) + .WithQueryParam("sdkID", sdkId) + .WithHttpMethod(HttpMethod.Post) + .WithContent(body) + .Build(); using (HttpResponseMessage response = await shareSessionRequest.Execute(httpClient).ConfigureAwait(false)) { diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs deleted file mode 100644 index 3f479a1b..00000000 --- a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicy.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json; - -namespace Yoti.Auth.DigitalIdentity.Policy -{ - /// - /// Set of data required to request a sharing transaction - /// - public class DynamicPolicy - { - internal const int SelfieAuthType = 1; - internal const int PinAuthType = 2; - - [JsonProperty(PropertyName = "wanted")] - private readonly ICollection _wantedAttributes; - - [JsonProperty(PropertyName = "wanted_auth_types")] - private readonly HashSet _wantedAuthTypes; - - [JsonProperty(PropertyName = "wanted_remember_me")] - private readonly bool _wantedRememberMeId; - -#pragma warning disable 0414 //"Value never used" warning: the JsonProperty is used when creating the DynamicPolicy JSON - - [JsonProperty(PropertyName = "wanted_remember_me_optional")] - private readonly bool _isWantedRememberMeIdOptional; - -#pragma warning restore 0414 - - [JsonProperty(PropertyName = "identity_profile_requirements")] - private readonly object _identityProfileRequirements; - - public DynamicPolicy( - ICollection wantedAttributes, - HashSet wantedAuthTypes, - bool wantedRememberMeId, - object identityProfileRequirements = null - ) - { - _wantedAttributes = wantedAttributes; - _wantedAuthTypes = wantedAuthTypes; - _wantedRememberMeId = wantedRememberMeId; - _isWantedRememberMeIdOptional = false; - _identityProfileRequirements = identityProfileRequirements; - } - - /// - /// Set of required - /// - [JsonIgnore] - public ICollection WantedAttributes - { - get - { - return _wantedAttributes; - } - } - - /// - /// Type of authentications - /// - [JsonIgnore] - public HashSet WantedAuthTypes - { - get - { - return _wantedAuthTypes; - } - } - - /// - /// Is RememberMeId wanted in the policy - /// - [JsonIgnore] - public bool WantedRememberMeId - { - get - { - return _wantedRememberMeId; - } - } - - /// - /// IdentityProfileRequirements requested in the policy - /// - [JsonIgnore] - public object IdentityProfileRequirements - { - get - { - return _identityProfileRequirements; - } - } - } -} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs b/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs deleted file mode 100644 index a8d3bcd1..00000000 --- a/src/Yoti.Auth/DigitalIdentity/Policy/DynamicPolicyBuilder.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System.Collections.Generic; -using Yoti.Auth.DocScan.Session.Create; - -namespace Yoti.Auth.DigitalIdentity.Policy -{ - public class DynamicPolicyBuilder - { - private readonly Dictionary _wantedAttributes = new Dictionary(); - private readonly HashSet _wantedAuthTypes = new HashSet(); - private bool _wantedRememberMeId; - private object _identityProfileRequirements; - - public DynamicPolicyBuilder WithWantedAttribute(WantedAttribute wantedAttribute) - { - Validation.NotNull(wantedAttribute, nameof(wantedAttribute)); - - string key = wantedAttribute.Derivation ?? wantedAttribute.Name; - - if (wantedAttribute.Constraints?.Count > 0) - { - key += "-" + wantedAttribute.Constraints.GetHashCode(); - } - - _wantedAttributes[key] = wantedAttribute; - return this; - } - - public DynamicPolicyBuilder WithWantedAttribute(string name, List constraints = null) - { - WantedAttribute wantedAttribute = new WantedAttributeBuilder() - .WithName(name) - .WithConstraints(constraints) - .Build(); - return WithWantedAttribute(wantedAttribute); - } - - public DynamicPolicyBuilder WithFamilyName(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.FamilyNameAttribute, constraints); - } - - public DynamicPolicyBuilder WithGivenNames(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.GivenNamesAttribute, constraints); - } - - public DynamicPolicyBuilder WithFullName(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.FullNameAttribute, constraints); - } - - public DynamicPolicyBuilder WithDateOfBirth(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.DateOfBirthAttribute, constraints); - } - - public DynamicPolicyBuilder WithAgeOver(int age, List constraints = null) - { - return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeOverAttribute}:{age}", constraints); - } - - public DynamicPolicyBuilder WithAgeUnder(int age, List constraints = null) - { - return WithAgeDerivedAttribute($"{Constants.UserProfile.AgeUnderAttribute}:{age}", constraints); - } - - private DynamicPolicyBuilder WithAgeDerivedAttribute(string derivation, List constraints) - { - WantedAttribute wantedAttribute = new WantedAttributeBuilder() - .WithName(Constants.UserProfile.DateOfBirthAttribute) - .WithDerivation(derivation) - .WithConstraints(constraints) - .Build(); - return WithWantedAttribute(wantedAttribute); - } - - public DynamicPolicyBuilder WithGender(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.GenderAttribute, constraints); - } - - public DynamicPolicyBuilder WithPostalAddress(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.PostalAddressAttribute, constraints); - } - - public DynamicPolicyBuilder WithStructuredPostalAddress(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.StructuredPostalAddressAttribute, constraints); - } - - public DynamicPolicyBuilder WithNationality(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.NationalityAttribute, constraints); - } - - public DynamicPolicyBuilder WithPhoneNumber(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.PhoneNumberAttribute, constraints); - } - - public DynamicPolicyBuilder WithSelfie(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.SelfieAttribute, constraints); - } - - public DynamicPolicyBuilder WithEmail(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.EmailAddressAttribute, constraints); - } - - public DynamicPolicyBuilder WithDocumentDetails(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.DocumentDetailsAttribute, constraints); - } - - public DynamicPolicyBuilder WithDocumentImages(List constraints = null) - { - return WithWantedAttribute(Constants.UserProfile.DocumentImagesAttribute, constraints); - } - - public DynamicPolicyBuilder WithSelfieAuthentication(bool enabled) - { - return WithAuthType(DynamicPolicy.SelfieAuthType, enabled); - } - - public DynamicPolicyBuilder WithPinAuthentication(bool enabled) - { - return WithAuthType(DynamicPolicy.PinAuthType, enabled); - } - - public DynamicPolicyBuilder WithAuthType(int authType, bool enabled) - { - if (enabled) - { - _wantedAuthTypes.Add(authType); - return this; - } - - _wantedAuthTypes.Remove(authType); - return this; - } - - public DynamicPolicyBuilder WithRememberMeId(bool required) - { - _wantedRememberMeId = required; - return this; - } - - /// - /// Use an Identity Profile Requirement object for the share - /// - /// object describing the identity profile requirements to use - /// with the identity profile requirements - public DynamicPolicyBuilder WithIdentityProfileRequirements(object identityProfileRequirements) - { - _identityProfileRequirements = identityProfileRequirements; - return this; - } - - public DynamicPolicy Build() - { - return new DynamicPolicy(_wantedAttributes.Values, _wantedAuthTypes, _wantedRememberMeId, _identityProfileRequirements); - } - } -} \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSession.cs b/src/Yoti.Auth/DigitalIdentity/ShareSession.cs deleted file mode 100644 index 6f796235..00000000 --- a/src/Yoti.Auth/DigitalIdentity/ShareSession.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json; -using Yoti.Auth.DigitalIdentity.Extensions; -using Yoti.Auth.DigitalIdentity.Policy; - -namespace Yoti.Auth.DigitalIdentity -{ - public class ShareSessionRequest - { - [JsonProperty(PropertyName = "callback_endpoint")] - private readonly string _callbackEndpoint; - - [JsonProperty(PropertyName = "policy")] - private readonly DynamicPolicy _dynamicPolicy; - - [JsonProperty(PropertyName = "extensions")] - private readonly List _extensions; - - [JsonProperty(PropertyName = "subject")] - private readonly object _subject; - - [JsonIgnore] - public string CallbackEndpoint - { - get - { - return _callbackEndpoint; - } - } - - [JsonIgnore] - public DynamicPolicy DynamicPolicy - { - get - { - return _dynamicPolicy; - } - } - - [JsonIgnore] - public List Extensions - { - get - { - return _extensions; - } - } - - - [JsonIgnore] - public object Subject - { - get - { - return _subject; - } - } - - public ShareSessionRequest(string callbackEndpoint, DynamicPolicy dynamicPolicy, List extensions = null, object subject = null) - { - _callbackEndpoint = callbackEndpoint; - _dynamicPolicy = dynamicPolicy; - _extensions = extensions ?? new List(); - _subject = subject; - } - } -} \ No newline at end of file diff --git a/test/.DS_Store b/test/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..326411952be783e6186fbf88e93cc28859ad65f2 GIT binary patch literal 6148 zcmeHK-A)rh6g~q8TM${GAQ(+H_QnK)2t*~uuoR3EV<41ZD`4GihqAEDG`m|62uZK? z$_MZPyz7x2bg?~IS2FJSb{Ps2}D@WvS3)69Hl&YUx|^KH+}4gipJrFad%1ONkz zz@}ELejuV>lsak9mS#jE$8f-hAy|hHc%64_h#80(_}dr|x!VRM%v%mF9L`@h+ za~D0t_ArTM=$jPO06HLtF%fu}@sm(NZ4I>rpqTv;gvX*^|6a7a9hUXnZ``u)h0*Zv z2hz~kbf&q*XffK1mCPF7&O}aB3DZunBw7oc`)*Bl+(nOW=gs64XOZJE8pr^zNYQ2a zp~s4RJIyPs7|Pg;>M#;UB5(HX?TwA!7_>%jj_eOwd*dU+gVxyS_5J;X(UZD*Yd*i> zZ!-Q&vH%2kJ}K=QYw#SE6FBk;TY8n`eQlMWOtZGmL~GmG_H!L(XIFP;va_eBr}unc z|AqdGd9&Mf3LB+BJpUB;d64!ibg2}0#Z1{Lc&wC-=+h|U?b5v2bS{=%>>)juH#@>YzN2cS(fHe#5Z$J5IC$v(>uabj8@=mE}&whtcSW-OKRea;x=X9uPIlQ zVnRwOcv2;6nnsecZKWm_7-uw*vgdS{0R#BgeE^HF0lV-5UcxJQ3-90~e1@;2h4hol zWPps3+hl^=BQxX?DUc%Z$hwMesJ;42dOQszMCF86zm*A?&shmQ#VEbMP9{vODNMFa z{Bbyzm_*EeI5Dw#I?<1Bw4Kg9_KF#Z8TgMF5c`9LMWC&*s!(nnSjj5@ViTIBpe{ZZ zM2w};)>u`DJt#zlBC1fLuNXvyqutVew#KSL6%ItsjN|B;iN2u_IXl`d=?=tJ7}qfa zF#|^#XjDy8od0)ze*Zrj6t`jqVg~*x21wI%W;%^a(r0Vk;>1~NVR?c@i14c_lp$E@ j<5()y77-;NhM16SBr#qPM8F^7P5Ci~J7ZB|)L=_1tS&oEw}lu2>9xLt zui&jOqL1OdSNfeZYuTOFA{xcSnP%tg&YttlnQzXV%}j|%EjG&6iF_jRaIqXZi>gE6 z_k6XLo}}e6q=G%s4h2-F*R)KPHf`777;p?Y1{?#90ms0tPYt^ zWYb7vPRf{*N_tkw4n;}tu=7QoRNhEeI|dvB?F?K-(>N{A2KMbiX8&HNB3eR<=|1ji zkQLOcsAK5HGzFV@CDa?GP?vzh3vU6})K@9E<2D<)yZw91ei-)K@Zmms*7QRBsdV>2 zjawLfz=+`M77#FstjFrDrF{w7Rs2HqwSjRnD;oC4@!(4b%sP;2z$#G#cNJO^)E(iJ zpO0X+XVb#W0V$v;JDQ%4owZ84aW$Ex52b1t#P#XvPpT)^d+Kzb*XIp*&k9?5w@@$E z8}VYX_Jp5SwGK<)?~A2JL1lM+=)#hY>ct?c)WjetSD^BAEr`l`cTqQ@axAt5^TO-* z`qziX_V(uHZ%z8Mw`cYz{k{2_=}CWX_U8V6zc)H@?aqVsSK)S~-@tPem85qXG|#P? z=P4QUPN5csI$}mx`vSPE;moNDUNzmtTx~Kl;Iwe#p-#SS_NXukss0um4OjS z1mH|7%QQ!sI+wDZ=xz-kIid{SPy5L8sSZ-Tj31+yBS)`3r;z)AtP$}AiFzxph}UJB zD@*&N<7;;22IA}H+;7I0H7YC4t|SaKkde$h@+s$GmR!Jnc8&jZ-jtk`=696tAzn1r zI7eauIfHXj4gJOVnT*si14}+jBjp6;r4_xLq0(AslKfUh4>gH+^pv%c43xGx1;4iB z%TTd2ISZvVy+ciU2>dXskBpmLOI~Z`E=vY3TKb5_%-UAEhN${n=+qi zyy1>`-F?Cu$&7BKg>j6Skoin|f~Db#W56-s7;p?Y22PZLoax=?^Z&cptpDKu{}c7m zb?z8&4E$LJRPS>>>>>> c2735ea (SDK:2238 refatoring tests) diff --git a/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json b/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json index 1aa053d8..1fd13c0d 100644 --- a/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json +++ b/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json @@ -2,6 +2,7 @@ "policy": { "wanted": [ { +<<<<<<< HEAD "name": "date_of_birth" }, { @@ -15,6 +16,25 @@ { "name": "date_of_birth", "derivation": "age_under:40" +======= + "name": "date_of_birth", + "optional": false + }, + { + "name": "date_of_birth", + "derivation": "age_over:18", + "optional": false + }, + { + "name": "date_of_birth", + "derivation": "age_under:30", + "optional": false + }, + { + "name": "date_of_birth", + "derivation": "age_under:40", + "optional": false +>>>>>>> c2735ea (SDK:2238 refatoring tests) } ], "wanted_auth_types": [ 2 ], @@ -49,4 +69,8 @@ "subject_id": "some_subject_id_string" }, "redirectUri": "someEndpoint" +<<<<<<< HEAD +} +======= } +>>>>>>> c2735ea (SDK:2238 refatoring tests) diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index 6c7dac54..f0f4f4d4 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -38,6 +38,14 @@
+<<<<<<< HEAD +======= + + + + + +>>>>>>> c2735ea (SDK:2238 refatoring tests) PreserveNewest @@ -66,7 +74,11 @@ PreserveNewest +<<<<<<< HEAD +======= + +>>>>>>> c2735ea (SDK:2238 refatoring tests) PreserveNewest From a9c16697e9486dfcd555475d52ffce63c520f1b0 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 5 Oct 2023 20:46:05 +0100 Subject: [PATCH 30/50] updated test franework version --- test/.DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/.DS_Store b/test/.DS_Store index 326411952be783e6186fbf88e93cc28859ad65f2..cde0a0dae082b2a894391347ddd4657ffcf9946b 100644 GIT binary patch delta 206 zcmZoMXffC@nU(R-}EK@aF^jd!(T>rMgc}8Mr}qDMq5UEMh`|$#wf;U i#stPph;}AM2+be^rJ)pK*5pL?WfL2?H?wp6x+;K<<15XO+rP{lBjVJ^c;hTRM&816E>XZXv=&M3*K#Hh_^!f4BA&*;JE z$r#0$%$UNM$(RMv&%_8dM;1y$DaK+TgP$RiA)ldyA#-vMi`e7}_Lj};9Dn%%__8({ From d76fbca2cc233087ede93b90abf776c3fe97f1bf Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 6 Oct 2023 14:13:21 +0100 Subject: [PATCH 31/50] SDK-2245: net retrieve session --- src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs index eb04f88d..59164850 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -3,7 +3,7 @@ namespace Yoti.Auth.DigitalIdentity { - public class ShareSessionResult + public class GetSessionResult { #pragma warning disable 0649 // These fields are assigned to by JSON deserialization From a9825864e75f59f070ed1e064409d8d675f91d16 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 6 Oct 2023 14:16:26 +0100 Subject: [PATCH 32/50] SDK-2245: net retrieve session --- .../DigitalIdentity/ShareSessionResult.cs | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs index 59164850..2642fa8a 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -3,9 +3,10 @@ namespace Yoti.Auth.DigitalIdentity { - public class GetSessionResult + public class ShareSessionResult { #pragma warning disable 0649 + // These fields are assigned to by JSON deserialization [JsonProperty("id")] public string Id { get; set; } @@ -16,9 +17,31 @@ public class GetSessionResult [JsonProperty("expiry")] public string Expiry { get; set; } + [JsonProperty("created")] + public string Created { get; set; } + + [JsonProperty("updated")] + public string Updated { get; set; } + + [JsonProperty("qrCode")] + public qrCode QrCode { get; set; } + + [JsonProperty("receipt")] + public receipt Receipt { get; set; } + #pragma warning restore 0649 } - + public class qrCode + { + [JsonProperty("id")] + public string Id { get; set; } + } + + public class receipt + { + [JsonProperty("id")] + public string Id { get; set; } + } } \ No newline at end of file From b01ddfce0ac622c843c54c11c1972e4130b442ff Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 10 Oct 2023 12:19:27 +0100 Subject: [PATCH 33/50] SDK-2245: update session response --- .../DigitalIdentity/ShareSessionResult.cs | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs index 2642fa8a..eb04f88d 100644 --- a/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs +++ b/src/Yoti.Auth/DigitalIdentity/ShareSessionResult.cs @@ -6,7 +6,6 @@ namespace Yoti.Auth.DigitalIdentity public class ShareSessionResult { #pragma warning disable 0649 - // These fields are assigned to by JSON deserialization [JsonProperty("id")] public string Id { get; set; } @@ -17,31 +16,9 @@ public class ShareSessionResult [JsonProperty("expiry")] public string Expiry { get; set; } - [JsonProperty("created")] - public string Created { get; set; } - - [JsonProperty("updated")] - public string Updated { get; set; } - - [JsonProperty("qrCode")] - public qrCode QrCode { get; set; } - - [JsonProperty("receipt")] - public receipt Receipt { get; set; } - #pragma warning restore 0649 } - public class qrCode - { - [JsonProperty("id")] - public string Id { get; set; } - } - - public class receipt - { - [JsonProperty("id")] - public string Id { get; set; } - } + } \ No newline at end of file From 2e137e37435123507b65229b8580b8e3385665f8 Mon Sep 17 00:00:00 2001 From: nikhilPank <49190426+nikhilPank@users.noreply.github.com> Date: Wed, 10 Jan 2024 18:31:55 +0000 Subject: [PATCH 34/50] IN-5590: Update support link (#437) * update versions * Update README.md * change support contact * Update ISSUE_TEMPLATE.md --- test/.DS_Store | Bin 6148 -> 0 bytes test/Yoti.Auth.Tests/.DS_Store | Bin 10244 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/.DS_Store delete mode 100644 test/Yoti.Auth.Tests/.DS_Store diff --git a/test/.DS_Store b/test/.DS_Store deleted file mode 100644 index cde0a0dae082b2a894391347ddd4657ffcf9946b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK-A)rh6g~r0S}L+Yi`8hdu{S0VL?9|LhEg!v7z3dMTLH^%JCud(OtZTMfspiC zuY3TXfm;*ryz&XWGd_a8fYCEQ4Sy=(#u&1vnfcDloNuP{ZO={z07$k`xdUJTKopC> zNGDdmF)=R632W0m7ZHh^!vYtEU>$tmC!)iSP=Qc^|4jjryK$&u-g2o(|O)pIKOx>a^qwGhx(LEhP+C8PIP=p3!QJm{L=u47E% zphHgg*rSxm`DRvEeHs)>Mz>$~xa-bx-w7PfiibvvOFpWf3urCJRynS?iOSE^MVP-p zJs}8dRyyxUq8AIS;zJ%&wDfPF_*I{Mv7Vb|DHjZO;ea*HT-ZmmW|{F z@(*VtHqUH&C(-zsnIR!mAXMPID~9lDpYhJ`tm{a%0%B#h+G}#H)S}GjKZ)E6$lkLszAGH z8shwa^ymBkQBv3n6$lkLR|=5GbbdOETheFiiOq?#*2J=cMVN?dDwGtg^l>a5aTKSp cNW(ExIEWdIO@-Kl7XA^CGK5vAz&};s7skQ>dH?_b diff --git a/test/Yoti.Auth.Tests/.DS_Store b/test/Yoti.Auth.Tests/.DS_Store deleted file mode 100644 index 2c4194866b04e5c94d9b930ba4873de92196ac40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10244 zcmeHM-A)rh6h1>y77-;NhM16SBr#qPM8F^7P5Ci~J7ZB|)L=_1tS&oEw}lu2>9xLt zui&jOqL1OdSNfeZYuTOFA{xcSnP%tg&YttlnQzXV%}j|%EjG&6iF_jRaIqXZi>gE6 z_k6XLo}}e6q=G%s4h2-F*R)KPHf`777;p?Y1{?#90ms0tPYt^ zWYb7vPRf{*N_tkw4n;}tu=7QoRNhEeI|dvB?F?K-(>N{A2KMbiX8&HNB3eR<=|1ji zkQLOcsAK5HGzFV@CDa?GP?vzh3vU6})K@9E<2D<)yZw91ei-)K@Zmms*7QRBsdV>2 zjawLfz=+`M77#FstjFrDrF{w7Rs2HqwSjRnD;oC4@!(4b%sP;2z$#G#cNJO^)E(iJ zpO0X+XVb#W0V$v;JDQ%4owZ84aW$Ex52b1t#P#XvPpT)^d+Kzb*XIp*&k9?5w@@$E z8}VYX_Jp5SwGK<)?~A2JL1lM+=)#hY>ct?c)WjetSD^BAEr`l`cTqQ@axAt5^TO-* z`qziX_V(uHZ%z8Mw`cYz{k{2_=}CWX_U8V6zc)H@?aqVsSK)S~-@tPem85qXG|#P? z=P4QUPN5csI$}mx`vSPE;moNDUNzmtTx~Kl;Iwe#p-#SS_NXukss0um4OjS z1mH|7%QQ!sI+wDZ=xz-kIid{SPy5L8sSZ-Tj31+yBS)`3r;z)AtP$}AiFzxph}UJB zD@*&N<7;;22IA}H+;7I0H7YC4t|SaKkde$h@+s$GmR!Jnc8&jZ-jtk`=696tAzn1r zI7eauIfHXj4gJOVnT*si14}+jBjp6;r4_xLq0(AslKfUh4>gH+^pv%c43xGx1;4iB z%TTd2ISZvVy+ciU2>dXskBpmLOI~Z`E=vY3TKb5_%-UAEhN${n=+qi zyy1>`-F?Cu$&7BKg>j6Skoin|f~Db#W56-s7;p?Y22PZLoax=?^Z&cptpDKu{}c7m zb?z8&4E$LJRPS Date: Wed, 2 Oct 2024 09:39:31 +0100 Subject: [PATCH 35/50] Updated Examples --- .../DocScan/DocScanExample/Controllers/HomeController.cs | 1 + .../DocScan/DocScanExample/Controllers/IdVerifyController.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs index b7d136e2..b668763e 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs @@ -108,6 +108,7 @@ public IActionResult Index() .Build() ) //Add Required Documents (with builders) + .WithCreateIdentityProfilePreview(true) .WithRequiredDocument( new RequiredIdDocumentBuilder() .WithFilter( diff --git a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs index 7c5a36e2..a315c2ff 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/IdVerifyController.cs @@ -24,7 +24,7 @@ public IActionResult Success() { string sessionId = TempData["sessionId"].ToString(); TempData.Keep("sessionId"); - sessionId = "f7a509ba-5722-424e-bbbc-17ac4a4a4656"; + GetSessionResult getSessionResult = _client.GetSession(sessionId); return View(getSessionResult); From 81debf5ccb2ff0e2de35d9d243b7e09b657c7fd7 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 14:33:57 +0100 Subject: [PATCH 36/50] rebase into master --- .../Policy/DynamicPolicyBuilderTests.cs | 6 ------ test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 12 ------------ 2 files changed, 18 deletions(-) diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs index 40a1a111..08bfcee2 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs @@ -340,10 +340,4 @@ public void ShouldBuildWithAdvancedIdentityProfileRequirements() Assert.AreEqual(advancedIdentityProfileRequirements, result.AdvancedIdentityProfileRequirements); } } - - -<<<<<<< HEAD -} -======= } ->>>>>>> c2735ea (SDK:2238 refatoring tests) diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index f0f4f4d4..6c7dac54 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -38,14 +38,6 @@ -<<<<<<< HEAD -======= - - - - - ->>>>>>> c2735ea (SDK:2238 refatoring tests) PreserveNewest @@ -74,11 +66,7 @@ PreserveNewest -<<<<<<< HEAD -======= - ->>>>>>> c2735ea (SDK:2238 refatoring tests) PreserveNewest From 39a1ea27799e02f8d481bcc050f0bd9f8bac6dff Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 15:12:29 +0100 Subject: [PATCH 37/50] rebase into master --- .../Session/Create/SessionSpecificationBuilderTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs index cc26264c..698694dc 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs @@ -370,7 +370,7 @@ public void ShouldBuildWithAdvancedIdentityProfileRequirements() Assert.AreEqual(advancedIdentityProfileRequirements, sessionSpec.AdvancedIdentityProfileRequirements); } - [TestMethod] + [TestMethod] public void ShouldNotImplicitlySetAValueForIdentityProfileRequirements() { SessionSpecification sessionSpec = @@ -403,4 +403,4 @@ public void ShouldNotImplicitlySetAValueForSubject() Assert.IsNull(sessionSpec.Subject); } } -} \ No newline at end of file +} From 00666f9a5205c616337c280f1daafe4cc73bd1f3 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 16:22:18 +0100 Subject: [PATCH 38/50] rebase into master --- .../Views/Home/DigitalIdentity.cshtml | 2 +- .../TestData/DigitalIdentity.json | 24 ------------------- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml index 9341819f..cd93283f 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -87,6 +87,6 @@ await onReadyToStart() } - + diff --git a/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json b/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json index 1fd13c0d..1aa053d8 100644 --- a/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json +++ b/test/Yoti.Auth.Tests/TestData/DigitalIdentity.json @@ -2,7 +2,6 @@ "policy": { "wanted": [ { -<<<<<<< HEAD "name": "date_of_birth" }, { @@ -16,25 +15,6 @@ { "name": "date_of_birth", "derivation": "age_under:40" -======= - "name": "date_of_birth", - "optional": false - }, - { - "name": "date_of_birth", - "derivation": "age_over:18", - "optional": false - }, - { - "name": "date_of_birth", - "derivation": "age_under:30", - "optional": false - }, - { - "name": "date_of_birth", - "derivation": "age_under:40", - "optional": false ->>>>>>> c2735ea (SDK:2238 refatoring tests) } ], "wanted_auth_types": [ 2 ], @@ -69,8 +49,4 @@ "subject_id": "some_subject_id_string" }, "redirectUri": "someEndpoint" -<<<<<<< HEAD -} -======= } ->>>>>>> c2735ea (SDK:2238 refatoring tests) From 12bb76e80f6d337369c619687a8d90d82197b78b Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 16:22:58 +0100 Subject: [PATCH 39/50] rebase into master --- .../DigitalIdentity/Views/Home/DigitalIdentity.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml index cd93283f..9341819f 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -87,6 +87,6 @@ await onReadyToStart() } - + From 106da4cdd51c38df3e66c4c730940cba14e87b24 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 11 Oct 2024 16:56:50 +0100 Subject: [PATCH 40/50] rebase into master --- .../DigitalIdentityClientEngineTests.cs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs index 16b73230..b55406e3 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -42,20 +42,18 @@ public async Task CreateSessionAsyncShouldReturnCorrectValues() [TestMethod] public void TestGetShareReceipt() { - Uri apiUrl = new Uri("https://example.com/api"); - string receiptId = "some_receiptid"; - string refId = "NpdmVVGC-28356678-c236-4518-9de4-7a93009ccaf0-c5f92f2a-5539-453e-babc-9b06e1d6b7de"; + Uri apiUrl = new Uri("https://example.com/api"); + string receiptId = "some_receiptid"; + string refId = "NpdmVVGC-28356678-c236-4518-9de4-7a93009ccaf0-c5f92f2a-5539-453e-babc-9b06e1d6b7de"; - Mock handlerMock = SetupMockMessageHandler( - HttpStatusCode.OK, - "{\"id\":\"" + refId + "\",\"status\":\"SOME_STATUS\",\"expiry\":\"SOME_EXPIRY\",\"created\":\"SOME_CREATED\",\"updated\":\"SOME_UPDATED\",\"qrCode\":{\"id\":\"SOME_QRCODE_ID\"},\"receipt\":{\"id\":\"SOME_RECEIPT_ID\"}}"); + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + refId + "\",\"status\":\"SOME_STATUS\",\"expiry\":\"SOME_EXPIRY\",\"created\":\"SOME_CREATED\",\"updated\":\"SOME_UPDATED\",\"qrCode\":{\"id\":\"SOME_QRCODE_ID\"},\"receipt\":{\"id\":\"SOME_RECEIPT_ID\"}}"); - var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); - - Assert.ThrowsException(() => - { - SharedReceiptResponse response = engine.GetShareReceipt(SdkId, _keyPair, apiUrl, receiptId).Result; - }); + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + SharedReceiptResponse response = engine.GetShareReceipt(SdkId, _keyPair, apiUrl, receiptId).Result; + Assert.IsNull(response.Error); } [DataTestMethod] From 9961e746ca14cb64ab81e1ea5828752679a55b3a Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 17 Oct 2024 14:53:02 +0100 Subject: [PATCH 41/50] Updated Home Controller to solve minor issue --- .../DigitalIdentity/Controllers/HomeController.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs index 04a06bfa..a24fa778 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -60,9 +60,11 @@ public IActionResult DigitalIdentity() .WithDocumentImages() .Build(); - var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) + var sessionReq = new ShareSessionRequestBuilder() + .WithPolicy(policy) .WithNotification(notification) - .WithRedirectUri("https:/www.yoti.com").WithSubject(new + .WithRedirectUri("https:/www.yoti.com") + .WithSubject(new { subject_id = "some_subject_id_string" }).Build(); From 7984ba595a6849ca954e3892ce3ffcb420e984da Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Thu, 17 Oct 2024 14:55:39 +0100 Subject: [PATCH 42/50] Updated Home Controller to solve minor issue --- .../Controllers/DbsController.cs | 6 +- .../Views/Home/DigitalIdentity.cshtml | 80 +++++++++---------- 2 files changed, 44 insertions(+), 42 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs index 3b69f50c..678360fb 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs @@ -59,9 +59,11 @@ public IActionResult DigitalIdentity() }) .Build(); - var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) + var sessionReq = new ShareSessionRequestBuilder() + .WithPolicy(policy) .WithNotification(notification) - .WithRedirectUri("https:/www.yoti.com").WithSubject(new + .WithRedirectUri("https:/www.yoti.com") + .WithSubject(new { subject_id = "some_subject_id_string" }).Build(); diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml index 9341819f..2cc83355 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -7,50 +7,50 @@ - - + + Yoti Digital Identity Client Example - - + + -
-
-
- Yoti -
- -

Digital Identity Share Example

- -
-
-
- -
- -
-

The Yoti app is free to download and use:

- -
- - Download on the App Store - - - - get it on Google Play - -
-
-
+
+
+
+ Yoti +
+ +

Digital Identity Share Example

+ +
+
+
+ +
+ +
+

The Yoti app is free to download and use:

+ +
+ + Download on the App Store + + + + get it on Google Play + +
+
+
- + From 2da84755b274e98c1f71f35f7f7949ea4768b7c5 Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Mon, 27 Oct 2025 11:03:01 +0000 Subject: [PATCH 43/50] release/3.18.0 (#492) * added create qr code feature * Add X-Request-ID header support to CreateShareSession and GetShareReceipt methods * Install .NET 6.0 SDK in Azure Pipeline * Fix example controllers and tests to use YotiHttpResponse.Data property * Fix CreateQrCode method calls - remove obsolete parameter * updated azure pipeline version string - Updated SonarCloudPublish@1 to SonarCloudPublish@2 - Update .NET SDK to 8.x and version to 3.18.0 --- azure-pipelines-sonar-only.yml | 59 ++++ azure-pipelines.yml | 112 +++---- .../AdvancedIdentityShareController.cs | 2 +- .../Controllers/DbsController.cs | 2 +- .../Controllers/HomeController.cs | 72 ++++- .../Controllers/SuccessController.cs | 12 +- .../Properties/launchSettings.json | 2 +- .../DigitalIdentity/Startup.cs | 2 +- .../DigitalIdentity/DigitalIdentityService.cs | 197 ++++++++++++- src/Yoti.Auth/DigitalIdentityClient.cs | 31 +- src/Yoti.Auth/DigitalIdentityClientEngine.cs | 42 ++- src/Yoti.Auth/Web/Request.cs | 27 +- src/Yoti.Auth/Web/YotiHttpResponse.cs | 114 ++++++++ .../Yoti.Auth.Tests.Common.csproj | 2 +- .../DigitalIdentityServiceTests.cs | 8 +- .../ShareSessionHeaderTests.cs | 262 +++++++++++++++++ .../Properties/AssemblyInfo.cs | 16 - .../Web/YotiHttpResponseTests.cs | 273 ++++++++++++++++++ test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 4 +- 19 files changed, 1105 insertions(+), 134 deletions(-) create mode 100644 azure-pipelines-sonar-only.yml create mode 100644 src/Yoti.Auth/Web/YotiHttpResponse.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs delete mode 100644 test/Yoti.Auth.Tests/Properties/AssemblyInfo.cs create mode 100644 test/Yoti.Auth.Tests/Web/YotiHttpResponseTests.cs diff --git a/azure-pipelines-sonar-only.yml b/azure-pipelines-sonar-only.yml new file mode 100644 index 00000000..525aeacd --- /dev/null +++ b/azure-pipelines-sonar-only.yml @@ -0,0 +1,59 @@ +# Minimal SonarCloud-only pipeline for testing +# This is a temporary pipeline to test SonarCloud configuration + +trigger: + branches: + include: + - release/3.18.0 + +pool: + vmImage: 'windows-latest' + +variables: + solution: '**/*.sln' + buildPlatform: 'Any CPU' + buildConfiguration: 'Release' + +steps: +- task: SonarCloudPrepare@1 + inputs: + SonarCloud: 'Yoti SonarCloud' + organization: 'getyoti' + scannerMode: 'MSBuild' + projectKey: 'getyoti:dotnet' + projectName: '.NET SDK' + projectVersion: '3.18.0' + extraProperties: | + sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" + sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk + sonar.exclusions = src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll,src/Yoti.Auth/DigitalIdentity/** + displayName: SonarCloud Prepare Analysis + +- task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: '8.x' + displayName: 'Install .NET 8.0 SDK' + +- task: NuGetToolInstaller@1 + +- task: NuGetCommand@2 + inputs: + restoreSolution: '$(solution)' + displayName: Restore Solution + +- task: VSBuild@1 + inputs: + solution: '$(solution)' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + msbuildArgs: '/p:SkipInvalidConfigurations=false' + displayName: Build Solution (Minimal) + +- task: SonarCloudAnalyze@1 + displayName: Sonar Cloud Analyze + +- task: SonarCloudPublish@1 + inputs: + pollingTimeoutSec: '300' + displayName: Sonar Cloud Publish \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7c3f24ea..c0a42d46 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,20 +1,9 @@ -# ASP.NET Core (.NET Framework) -# Build and test ASP.NET Core projects targeting the full .NET Framework. -# Add steps that publish symbols, save build artifacts, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core +# Minimal SonarCloud test pipeline for release/3.18.0 trigger: branches: include: - - '*' # must quote since "*" is a YAML reserved character; we want a string - -schedules: -- cron: "0 12 * * 0" - displayName: Weekly Sunday build - branches: - include: - - master - always: true + - release/3.18.0 pool: vmImage: 'windows-latest' @@ -25,80 +14,65 @@ variables: buildConfiguration: 'Release' steps: +# 1. Install tools first +- task: UseDotNet@2 + inputs: + packageType: 'sdk' + version: '8.x' + displayName: 'Install .NET 8.0 SDK' + +- task: NuGetToolInstaller@1 + +# 2. Check what projects exist in SonarCloud first +- task: PowerShell@2 + inputs: + targetType: 'inline' + script: | + Write-Host "Checking SonarCloud projects in YOTI organization..." + $headers = @{ + 'Authorization' = 'Bearer $(SONARCLOUD_TOKEN)' + } + try { + $response = Invoke-RestMethod -Uri 'https://sonarcloud.io/api/projects/search?organization=yoti' -Headers $headers + Write-Host "Found projects:" + $response.components | ForEach-Object { Write-Host "- Key: $($_.key), Name: $($_.name)" } + } catch { + Write-Host "Error checking projects: $($_.Exception.Message)" + } + displayName: 'Debug: List SonarCloud Projects' + +# 3. SonarCloud PREPARE must come BEFORE build - task: SonarCloudPrepare@1 inputs: SonarCloud: 'Yoti SonarCloud' - organization: 'getyoti' + organization: 'yoti' scannerMode: 'MSBuild' - projectKey: 'getyoti:dotnet' - projectName: '.NET SDK' - projectVersion: '3.13.0' + projectKey: 'dotnet-sdk' + projectName: 'dotnet-sdk' + projectVersion: '3.18.0' extraProperties: | - sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" - sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk - sonar.exclusions = src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll,src/Yoti.Auth/DigitalIdentity/** - displayName: SonarCloud Prepare Analysis - -- task: NuGetToolInstaller@1 + sonar.verbose=true + sonar.exclusions=src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll + displayName: 'SonarCloud Prepare (BEFORE build)' +# 3. Restore and build AFTER SonarCloud prepare - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - displayName: Restore Solution + displayName: 'Restore NuGet packages' - task: VSBuild@1 inputs: solution: '$(solution)' - msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=false /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - displayName: Build Solution - -# Cobertura is used to display tests and code coverage in Azure -- task: DotNetCoreCLI@2 - inputs: - command: test - arguments: '--configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:Exclude="[*]Yoti.Auth.ProtoBuf.*" /p:ExcludeByAttribute="GeneratedCodeAttribute"' - projects: '**/*Tests/*.csproj' - nobuild: true - displayName: Run Tests With Cobertura - -# OpenCover is used to display code coverage in SonarCloud -- task: DotNetCoreCLI@2 - inputs: - command: test - arguments: '--logger trx --configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[*]Yoti.Auth.ProtoBuf.*" /p:ExcludeByAttribute="GeneratedCodeAttribute"' - projects: '**/*Tests/*.csproj' - nobuild: true - displayName: Run Tests With OpenCover - -# Generate the report using ReportGenerator (https://github.com/danielpalme/ReportGenerator) -- task: DotNetCoreCLI@2 - inputs: - command: custom - custom: tool - arguments: install --tool-path . dotnet-reportgenerator-globaltool - displayName: Install ReportGenerator tool - -- script: reportgenerator -reports:$(Build.SourcesDirectory)/test/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:Cobertura - displayName: Cobertura Code Coverage + msbuildArgs: '/p:SkipInvalidConfigurations=false' + displayName: 'Build solution' -- script: reportgenerator -reports:$(Build.SourcesDirectory)/test/**/coverage.opencover.xml -targetdir:D:\Reports - displayName: OpenCover Code Coverage - -# Publish the code coverage result (summary and web site) -# The summary allows to view the coverage percentage in the summary tab -# The web site allows to view which lines are covered directly in Azure Pipeline -- task: PublishCodeCoverageResults@1 - inputs: - codeCoverageTool: Cobertura - summaryFileLocation: '$(Build.SourcesDirectory)/CodeCoverage/Cobertura.xml' - displayName: 'Publish Cobertura Code Coverage' - - task: SonarCloudAnalyze@1 - displayName: Sonar Cloud Analyze + displayName: 'SonarCloud Analyze' - task: SonarCloudPublish@1 inputs: pollingTimeoutSec: '300' - displayName: Sonar Cloud Publish + displayName: 'SonarCloud Publish' diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs index b6cf7f5b..4a54a44a 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs @@ -75,7 +75,7 @@ public IActionResult DigitalIdentity() var sharedReceiptResponse = new SharedReceiptResponse(); ViewBag.YotiClientSdkId = _clientSdkId; - ViewBag.sessionID = SessionResult.Id; + ViewBag.sessionID = SessionResult.Data.Id; return View("AdvancedIdentityShare", sharedReceiptResponse); } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs index 678360fb..f2badbec 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs @@ -73,7 +73,7 @@ public IActionResult DigitalIdentity() var sharedReceiptResponse = new SharedReceiptResponse(); ViewBag.YotiClientSdkId = _clientSdkId; - ViewBag.sessionID = SessionResult.Id; + ViewBag.sessionID = SessionResult.Data.Id; return View("Dbs", sharedReceiptResponse); } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs index a24fa778..7d05fd09 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Yoti.Auth; @@ -19,7 +20,7 @@ public HomeController(ILogger logger) _clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); _logger.LogInformation(string.Format("Yoti Client SDK ID='{0}'", _clientSdkId)); } - + // GET: /generate-share [Route("generate-share")] public IActionResult DigitalIdentity() @@ -40,13 +41,13 @@ public IActionResult DigitalIdentity() .WithName("given_names") .WithOptional(false) .Build(); - + var notification = new NotificationBuilder() .WithUrl("https://example.com/webhook") .WithMethod("POST") .WithVerifyTls(true) .Build(); - + var policy = new PolicyBuilder() .WithWantedAttribute(givenNamesWantedAttribute) .WithFullName() @@ -57,7 +58,7 @@ public IActionResult DigitalIdentity() .WithNationality() .WithGender() .WithDocumentDetails() - .WithDocumentImages() + .WithDocumentImages() .Build(); var sessionReq = new ShareSessionRequestBuilder() @@ -73,7 +74,7 @@ public IActionResult DigitalIdentity() var sharedReceiptResponse = new SharedReceiptResponse(); ViewBag.YotiClientSdkId = _clientSdkId; - ViewBag.sessionID = SessionResult.Id; + ViewBag.sessionID = SessionResult.Data.Id; return View("DigitalIdentity", sharedReceiptResponse); } @@ -83,10 +84,69 @@ public IActionResult DigitalIdentity() exception: e, message: e.Message); - TempData["Error"] = e.Message; + TempData["Error"] = e.Message; TempData["InnerException"] = e.InnerException?.Message; return RedirectToAction("Error", "Success"); } } + + [Route("create-qr/{sessionId}")] + public async Task CreateQrCode(string sessionId) + { + try + { + // Validate session ID format + if (string.IsNullOrWhiteSpace(sessionId)) + { + return BadRequest(new + { + success = false, + error = "Session ID is required", + message = "Please provide a valid session ID. Use /generate-share endpoint first to get a session ID." + }); + } + + if (!sessionId.StartsWith("ss.v2.")) + { + return BadRequest(new + { + sessionId = sessionId, + success = false, + error = "Invalid session ID format", + message = "Session ID must start with 'ss.v2.'. Use /generate-share endpoint first to get a valid session ID.", + expectedFormat = "ss.v2.xxxxx..." + }); + } + + string yotiKeyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); + + StreamReader privateKeyStream = System.IO.File.OpenText(yotiKeyFilePath); + var yotiClient = new DigitalIdentityClient(_clientSdkId, privateKeyStream); + + var qrResult = await yotiClient.CreateQrCode(sessionId); + + return Ok(new + { + sessionId = sessionId, + qrId = qrResult.Id, + qrUri = qrResult.Uri, + success = true, + message = "QR code created successfully" + }); + } + catch (Exception e) + { + _logger.LogError(exception: e, "Error creating QR code for session {SessionId}: {Error}", sessionId, e.Message); + + return BadRequest(new + { + sessionId = sessionId, + success = false, + error = e.Message, + innerError = e.InnerException?.Message, + hint = "If you're getting 'UNKNOWN_SESSION' error, make sure to use a valid session ID from /generate-share endpoint" + }); + } + } } } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs index 6ba5f520..8e7ae3ec 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs @@ -46,19 +46,19 @@ public IActionResult ReceiptInfo(string ReceiptID) var ReceiptResult = yotiClient.GetShareReceipt(ReceiptID); - DisplayAttributes displayAttributes = CreateDisplayAttributes(ReceiptResult.UserContent.UserProfile.AttributeCollection); - if (ReceiptResult.UserContent.UserProfile.FullName != null) + DisplayAttributes displayAttributes = CreateDisplayAttributes(ReceiptResult.Data.UserContent.UserProfile.AttributeCollection); + if (ReceiptResult.Data.UserContent.UserProfile.FullName != null) { - displayAttributes.FullName = ReceiptResult.UserContent.UserProfile.FullName.GetValue(); + displayAttributes.FullName = ReceiptResult.Data.UserContent.UserProfile.FullName.GetValue(); } - YotiAttribute selfie = ReceiptResult.UserContent.UserProfile.Selfie; - if (ReceiptResult.UserContent.UserProfile.Selfie != null) + YotiAttribute selfie = ReceiptResult.Data.UserContent.UserProfile.Selfie; + if (ReceiptResult.Data.UserContent.UserProfile.Selfie != null) { displayAttributes.Base64Selfie = selfie.GetValue().GetBase64URI(); } - displayAttributes.ErrorDetails = ReceiptResult.ErrorDetails; + displayAttributes.ErrorDetails = ReceiptResult.Data.ErrorDetails; ViewBag.YotiClientSdkId = _clientSdkId; diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json b/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json index cb95eb61..c258b30f 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json @@ -11,7 +11,7 @@ "CoreExample": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:44344;http://localhost:44343", + "applicationUrl": "http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs index 04dd3919..34da112c 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs @@ -61,7 +61,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) } app.UseRouting(); - app.UseHttpsRedirection(); + app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseSession(); app.UseCookiePolicy(); diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 69a918a5..37597217 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -66,6 +66,49 @@ internal static async Task CreateShareSession(HttpClient htt } } + /// + /// Creates a share session and returns the result with HTTP response headers + /// + internal static async Task> CreateShareSessionWithHeaders(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, ShareSessionRequest shareSessionRequestPayload) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + Validation.NotNull(shareSessionRequestPayload, nameof(shareSessionRequestPayload)); + + string serializedScenario = JsonConvert.SerializeObject( + shareSessionRequestPayload, + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }); + byte[] body = Encoding.UTF8.GetBytes(serializedScenario); + + Request shareSessionRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(sessionCreation) + .WithQueryParam("sdkID", sdkId) + .WithHttpMethod(HttpMethod.Post) + .WithContent(body) + .Build(); + + return await shareSessionRequest.ExecuteWithHeaders(httpClient, async response => + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + }).ConfigureAwait(false); + } + internal static async Task GetSession(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId) { Validation.NotNull(httpClient, nameof(httpClient)); @@ -98,30 +141,20 @@ internal static async Task GetSession(HttpClient httpClient, U } } - internal static async Task CreateQrCode(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId,QrRequest qrRequestPayload) + internal static async Task CreateQrCode(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId) { Validation.NotNull(httpClient, nameof(httpClient)); Validation.NotNull(apiUrl, nameof(apiUrl)); Validation.NotNull(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); - string serializedQrCode = JsonConvert.SerializeObject( - qrRequestPayload, - new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore - }); - byte[] body = Encoding.UTF8.GetBytes(serializedQrCode); - - Request createQrRequest = new RequestBuilder() .WithKeyPair(keyPair) .WithBaseUri(apiUrl) .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(string.Format($"/v2/sessions/{0}/qr-codes", sessionId)) + .WithEndpoint(string.Format("/v2/sessions/{0}/qr-codes", sessionId)) .WithQueryParam("appId", sdkId) .WithHttpMethod(HttpMethod.Post) - .WithContent(body) .Build(); using (HttpResponseMessage response = await createQrRequest.Execute(httpClient).ConfigureAwait(false)) @@ -202,6 +235,42 @@ private static async Task GetReceipt(HttpClient httpClient, str } } + /// + /// Gets a receipt with HTTP response headers + /// + private static async Task> GetReceiptWithHeaders(HttpClient httpClient, string receiptId, string sdkId, Uri apiUrl, AsymmetricCipherKeyPair keyPair) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(apiUrl, nameof(apiUrl)); + Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNull(keyPair, nameof(keyPair)); + + string receiptUrl = Base64ToBase64URL(receiptId); + string endpoint = string.Format(receiptRetrieval, receiptUrl); + + Request ReceiptRequest = new RequestBuilder() + .WithKeyPair(keyPair) + .WithBaseUri(apiUrl) + .WithHeader(yotiAuthId, sdkId) + .WithEndpoint(endpoint) + .WithQueryParam("sdkID", sdkId) + .WithHttpMethod(HttpMethod.Get) + .Build(); + + return await ReceiptRequest.ExecuteWithHeaders(httpClient, async response => + { + if (!response.IsSuccessStatusCode) + { + Response.CreateYotiExceptionFromStatusCode(response); + } + + var responseObject = await response.Content.ReadAsStringAsync(); + var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); + + return deserialized; + }).ConfigureAwait(false); + } + public static string Base64ToBase64URL(string base64Str) { @@ -344,6 +413,110 @@ public static async Task GetShareReceipt(HttpClient httpC } } + /// + /// Gets a share receipt and returns the result with HTTP response headers + /// + public static async Task> GetShareReceiptWithHeaders(HttpClient httpClient, string clientSdkId, Uri apiUrl, AsymmetricCipherKeyPair key, string receiptId) + { + Validation.NotNullOrEmpty(receiptId, nameof(receiptId)); + try + { + var receiptResponse = await GetReceiptWithHeaders(httpClient, receiptId, clientSdkId, apiUrl, key); + var itemKeyId = receiptResponse.Data.WrappedItemKeyId; + if (itemKeyId != null) + { + var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); + + var receiptContentKey = CryptoEngine.UnwrapReceiptKey(receiptResponse.Data.WrappedKey, encryptedItemKeyResponse.Value, encryptedItemKeyResponse.Iv, key); + + var (attrData, aextra, decryptAttrDataError) = DecryptReceiptContent(receiptResponse.Data.Content, receiptContentKey); + if (decryptAttrDataError != null) + { + throw new Exception($"An unexpected error occurred: {decryptAttrDataError.Message}"); + } + + var parsedAttributesApp = AttributeConverter.ConvertToBaseAttributes(attrData); + var appProfile = new ApplicationProfile(parsedAttributesApp); + + var (attrOtherData, aOtherExtra, decryptOtherAttrDataError) = DecryptReceiptContent(receiptResponse.Data.OtherPartyContent, receiptContentKey); + if (decryptAttrDataError != null) + { + throw new Exception($"An unexpected error occurred: {decryptAttrDataError.Message}"); + } + + var userProfile = new YotiProfile(); + if (attrOtherData != null) + { + var parsedAttributesUser = AttributeConverter.ConvertToBaseAttributes(attrOtherData); + userProfile = new YotiProfile(parsedAttributesUser); + } + + ExtraData userExtraData = new ExtraData(); + if (aOtherExtra != null) + { + userExtraData = ExtraDataConverter.ParseExtraDataProto(aOtherExtra); + } + ExtraData appExtraData = new ExtraData(); + if (aextra != null) + { + appExtraData = ExtraDataConverter.ParseExtraDataProto(aextra); + } + + var sharedReceiptResponse = new SharedReceiptResponse + { + ID = receiptResponse.Data.ID, + SessionID = receiptResponse.Data.SessionID, + RememberMeID = receiptResponse.Data.RememberMeID, + ParentRememberMeID = receiptResponse.Data.ParentRememberMeID, + Timestamp = receiptResponse.Data.Timestamp, + UserContent = new UserContent + { + UserProfile = userProfile, + ExtraData = userExtraData + }, + ApplicationContent = new ApplicationContent + { + ApplicationProfile = appProfile, + ExtraData = appExtraData + }, + Error = receiptResponse.Data.Error, + ErrorDetails = receiptResponse.Data.ErrorDetails + }; + + return YotiHttpResponse.FromHttpResponse(sharedReceiptResponse, receiptResponse); + } + else + { + var sharedReceiptResponse = new SharedReceiptResponse + { + ID = receiptResponse.Data.ID, + SessionID = receiptResponse.Data.SessionID, + RememberMeID = receiptResponse.Data.RememberMeID, + ParentRememberMeID = receiptResponse.Data.ParentRememberMeID, + Timestamp = receiptResponse.Data.Timestamp, + UserContent = new UserContent + { + UserProfile = new YotiProfile(), + ExtraData = new ExtraData() + }, + ApplicationContent = new ApplicationContent + { + ApplicationProfile = new ApplicationProfile(), + ExtraData = new ExtraData() + }, + Error = receiptResponse.Data.Error, + ErrorDetails = receiptResponse.Data.ErrorDetails + }; + + return YotiHttpResponse.FromHttpResponse(sharedReceiptResponse, receiptResponse); + } + } + catch (Exception ex) + { + throw new Exception($"An unexpected error occurred: {ex.Message}"); + } + } + private static async Task GetReceiptItemKey(HttpClient httpClient, string receiptItemKeyId, string sdkId, Uri apiUrl, AsymmetricCipherKeyPair keyPair) { Validation.NotNull(httpClient, nameof(httpClient)); diff --git a/src/Yoti.Auth/DigitalIdentityClient.cs b/src/Yoti.Auth/DigitalIdentityClient.cs index e17070ca..ac21c958 100644 --- a/src/Yoti.Auth/DigitalIdentityClient.cs +++ b/src/Yoti.Auth/DigitalIdentityClient.cs @@ -4,6 +4,7 @@ using System.Threading.Tasks; using Org.BouncyCastle.Crypto; using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.Web; namespace Yoti.Auth { @@ -65,10 +66,10 @@ public DigitalIdentityClient(HttpClient httpClient, string sdkId, AsymmetricCiph /// Details of the device's callback endpoint, and extensions for the application /// - /// - public ShareSessionResult CreateShareSession(ShareSessionRequest shareSessionRequest) + /// with response headers + public YotiHttpResponse CreateShareSession(ShareSessionRequest shareSessionRequest) { - Task task = Task.Run(async () => await CreateShareSessionAsync(shareSessionRequest).ConfigureAwait(false)); + Task> task = Task.Run(async () => await CreateShareSessionAsync(shareSessionRequest).ConfigureAwait(false)); return task.Result; } @@ -80,18 +81,34 @@ public ShareSessionResult CreateShareSession(ShareSessionRequest shareSessionReq /// Details of the device's callback endpoint, and extensions for the application /// - /// - public async Task CreateShareSessionAsync(ShareSessionRequest shareSessionRequest) + /// with response headers + public async Task> CreateShareSessionAsync(ShareSessionRequest shareSessionRequest) { return await _yotiDigitalClientEngine.CreateShareSessionAsync(_sdkId, _keyPair, ApiUri, shareSessionRequest).ConfigureAwait(false); } - public SharedReceiptResponse GetShareReceipt(string receiptId) + public YotiHttpResponse GetShareReceipt(string receiptId) { - Task task = Task.Run(async () => await _yotiDigitalClientEngine.GetShareReceipt(_sdkId, _keyPair, ApiUri, receiptId).ConfigureAwait(false)); + Task> task = Task.Run(async () => await _yotiDigitalClientEngine.GetShareReceipt(_sdkId, _keyPair, ApiUri, receiptId).ConfigureAwait(false)); return task.Result; } + public async Task CreateQrCode(string sessionId) + { + return await _yotiDigitalClientEngine.CreateQrCodeAsync(_sdkId, _keyPair, ApiUri, sessionId).ConfigureAwait(false); + } + + public async Task GetQrCode(string qrCodeId) + { + return await _yotiDigitalClientEngine.GetQrCodeAsync(_sdkId, _keyPair, ApiUri, qrCodeId).ConfigureAwait(false); + } + + public async Task GetSession(string sessionId) + { + return await _yotiDigitalClientEngine.GetSession(_sdkId, _keyPair, ApiUri, sessionId).ConfigureAwait(false); + } + + internal void SetYotiApiUri() { if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("YOTI_API_URL"))) diff --git a/src/Yoti.Auth/DigitalIdentityClientEngine.cs b/src/Yoti.Auth/DigitalIdentityClientEngine.cs index 2492e8c5..4d507e13 100644 --- a/src/Yoti.Auth/DigitalIdentityClientEngine.cs +++ b/src/Yoti.Auth/DigitalIdentityClientEngine.cs @@ -6,6 +6,7 @@ using System.Threading.Tasks; using Org.BouncyCastle.Crypto; using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.Web; namespace Yoti.Auth { @@ -17,27 +18,54 @@ public DigitalIdentityClientEngine(HttpClient httpClient) { _httpClient = httpClient; - #if NET452 || NET462 || NET472 || NET48 +#if NET452 || NET462 || NET472 || NET48 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; - #endif +#endif } - - public async Task CreateShareSessionAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, ShareSessionRequest shareSessionRequest) + + public async Task> CreateShareSessionAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, ShareSessionRequest shareSessionRequest) { - ShareSessionResult result = await Task.Run(async () => await DigitalIdentityService.CreateShareSession( + YotiHttpResponse result = await Task.Run(async () => await DigitalIdentityService.CreateShareSessionWithHeaders( _httpClient, apiUrl, sdkId, keyPair, shareSessionRequest).ConfigureAwait(false)) .ConfigureAwait(false); return result; } - public async Task GetShareReceipt(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string receiptId) + public async Task> GetShareReceipt(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string receiptId) { - SharedReceiptResponse result = await Task.Run(async () => await DigitalIdentityService.GetShareReceipt( + YotiHttpResponse result = await Task.Run(async () => await DigitalIdentityService.GetShareReceiptWithHeaders( _httpClient, sdkId, apiUrl, keyPair, receiptId).ConfigureAwait(false)) .ConfigureAwait(false); return result; } + + public async Task CreateQrCodeAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string sessionid) + { + CreateQrResult result = await Task.Run(async () => await DigitalIdentityService.CreateQrCode( + _httpClient, apiUrl, sdkId, keyPair, sessionid).ConfigureAwait(false)) + .ConfigureAwait(false); + + return result; + } + + public async Task GetQrCodeAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string qrcodeId) + { + GetQrCodeResult result = await Task.Run(async () => await DigitalIdentityService.GetQrCode( + _httpClient, apiUrl, sdkId, keyPair, qrcodeId).ConfigureAwait(false)) + .ConfigureAwait(false); + + return result; + } + + public async Task GetSession(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string sessionId) + { + var result = await Task.Run(async () => await DigitalIdentityService.GetSession( + _httpClient, apiUrl, sdkId, keyPair, sessionId).ConfigureAwait(false)) + .ConfigureAwait(false); + + return result; + } } } diff --git a/src/Yoti.Auth/Web/Request.cs b/src/Yoti.Auth/Web/Request.cs index 52cbd1a0..5132b3cf 100644 --- a/src/Yoti.Auth/Web/Request.cs +++ b/src/Yoti.Auth/Web/Request.cs @@ -1,4 +1,7 @@ -using System.Net.Http; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; using System.Threading.Tasks; namespace Yoti.Auth.Web @@ -18,5 +21,27 @@ public async Task Execute(HttpClient httpClient) return await httpClient.SendAsync(RequestMessage).ConfigureAwait(false); } + + /// + /// Executes the request and returns the response with headers + /// + /// The type to deserialize the response to + /// The HTTP client to use + /// Function to extract data from the HTTP response + /// YotiHttpResponse containing both data and headers + public async Task> ExecuteWithHeaders(HttpClient httpClient, Func> dataExtractor) + { + Validation.NotNull(httpClient, nameof(httpClient)); + Validation.NotNull(dataExtractor, nameof(dataExtractor)); + + using (HttpResponseMessage response = await Execute(httpClient).ConfigureAwait(false)) + { + // Extract data using the provided function + T data = await dataExtractor(response).ConfigureAwait(false); + + // Use the existing factory method that properly handles headers + return YotiHttpResponse.FromHttpResponse(data, response); + } + } } } \ No newline at end of file diff --git a/src/Yoti.Auth/Web/YotiHttpResponse.cs b/src/Yoti.Auth/Web/YotiHttpResponse.cs new file mode 100644 index 00000000..19b9dc95 --- /dev/null +++ b/src/Yoti.Auth/Web/YotiHttpResponse.cs @@ -0,0 +1,114 @@ +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; + +namespace Yoti.Auth.Web +{ + /// + /// Represents a response from the Yoti API containing both the response data and HTTP headers. + /// + /// The type of the response data + public class YotiHttpResponse + { + /// + /// The response data from the API + /// + public T Data { get; } + + /// + /// The HTTP response headers from the API + /// + public IReadOnlyDictionary> Headers { get; } + + /// + /// Gets the X-Request-ID header value if present + /// + public string RequestId => GetHeaderValue("X-Request-ID") ?? GetHeaderValue("X-Request-Id"); + + /// + /// Creates a new YotiHttpResponse + /// + /// The response data + /// The HTTP headers + internal YotiHttpResponse(T data, IReadOnlyDictionary> headers) + { + Data = data; + Headers = headers; + } + + /// + /// Creates a YotiHttpResponse from an HttpResponseMessage and response data + /// + /// The response data + /// The HTTP response message + /// A new YotiHttpResponse + internal static YotiHttpResponse FromHttpResponse(T data, HttpResponseMessage httpResponse) + { + var headers = new Dictionary>(); + + // Add response headers + foreach (var header in httpResponse.Headers) + { + headers[header.Key] = header.Value; + } + + // Add content headers if present + if (httpResponse.Content?.Headers != null) + { + foreach (var header in httpResponse.Content.Headers) + { + headers[header.Key] = header.Value; + } + } + + return new YotiHttpResponse(data, headers); + } + + /// + /// Creates a YotiHttpResponse with new data but copying headers from another YotiHttpResponse + /// + /// The type of the source response data + /// The new response data + /// The source response to copy headers from + /// A new YotiHttpResponse with the new data and copied headers + internal static YotiHttpResponse FromHttpResponse(T newData, YotiHttpResponse sourceResponse) + { + return new YotiHttpResponse(newData, sourceResponse.Headers); + } + + /// + /// Gets the first value of a header with the specified name (case-insensitive) + /// + /// The name of the header + /// The first header value, or null if not found + public string GetHeaderValue(string headerName) + { + var header = Headers.FirstOrDefault(h => + string.Equals(h.Key, headerName, System.StringComparison.OrdinalIgnoreCase)); + + return header.Value?.FirstOrDefault(); + } + + /// + /// Gets all values of a header with the specified name (case-insensitive) + /// + /// The name of the header + /// All header values, or an empty enumerable if not found + public IEnumerable GetHeaderValues(string headerName) + { + var header = Headers.FirstOrDefault(h => + string.Equals(h.Key, headerName, System.StringComparison.OrdinalIgnoreCase)); + + return header.Value ?? Enumerable.Empty(); + } + + /// + /// Implicitly converts to the underlying data type for backward compatibility + /// + /// The YotiHttpResponse to convert + public static implicit operator T(YotiHttpResponse response) + { + return response.Data; + } + } +} diff --git a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj index fc020afc..9ab9962b 100644 --- a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj +++ b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj @@ -1,7 +1,7 @@  - net6.0 + net8.0 diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs index 0e43838f..df58e1e9 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs @@ -128,7 +128,7 @@ public void CreateQrCodeShouldFailWithNullHttpClient() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(null, _apiURL, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); + DigitalIdentityService.CreateQrCode(null, _apiURL, _sdkID, _keyPair, _sessionID).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); @@ -140,7 +140,7 @@ public void CreateQrCodeShouldFailWithNullApiUrl() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(_httpClient, null, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); + DigitalIdentityService.CreateQrCode(_httpClient, null, _sdkID, _keyPair, _sessionID).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); @@ -152,7 +152,7 @@ public void CreateQrCodeShouldFailWithNullSdkId() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID, _someCreateQrRequest).Wait(); + DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); @@ -164,7 +164,7 @@ public void CreateQrCodeShouldFailWithNullKeyPair() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID, _someCreateQrRequest).Wait(); + DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs new file mode 100644 index 00000000..7f3486c4 --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs @@ -0,0 +1,262 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Moq; +using Moq.Protected; +using Yoti.Auth.DigitalIdentity; +using Yoti.Auth.DigitalIdentity.Policy; +using Yoti.Auth.Tests.Common; + +namespace Yoti.Auth.Tests.DigitalIdentity +{ + [TestClass] + public class ShareSessionHeaderTests + { + private const string SdkId = "test-sdk-id"; + + private static Mock SetupMockMessageHandler(HttpStatusCode httpStatusCode, string responseContent, Dictionary headers = null) + { + var response = new HttpResponseMessage + { + StatusCode = httpStatusCode, + Content = new StringContent(responseContent) + }; + + // Add custom headers if provided + if (headers != null) + { + foreach (var header in headers) + { + response.Headers.TryAddWithoutValidation(header.Key, header.Value); + } + } + + var handlerMock = new Mock(); + handlerMock + .Protected() + .Setup>( + "SendAsync", + ItExpr.IsAny(), + ItExpr.IsAny() + ) + .ReturnsAsync(response) + .Verifiable(); + return handlerMock; + } + + [TestMethod] + public void CreateShareSession_ShouldReturnXRequestIdHeader() + { + // Arrange + string requestId = "test-request-id-12345"; + var headers = new Dictionary + { + { "X-Request-ID", requestId }, + { "Content-Type", "application/json" } + }; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"session-123\",\"status\":\"CREATED\"}", + headers); + + var httpClient = new HttpClient(handlerMock.Object); + + var yotiClient = new Auth.DigitalIdentityClient( + httpClient, + SdkId, + KeyPair.Get()); + + var policy = new PolicyBuilder() + .Build(); + + var sessionRequest = new ShareSessionRequestBuilder() + .WithPolicy(policy) + .WithRedirectUri("https://example.com/callback") + .Build(); + + // Act + var result = yotiClient.CreateShareSession(sessionRequest); + + // Assert + Assert.IsNotNull(result); + Assert.IsNotNull(result.Headers); + + // Check if X-Request-ID header exists + var xRequestId = result.GetHeaderValue("X-Request-ID"); + Assert.IsNotNull(xRequestId); + Assert.AreEqual(requestId, xRequestId); + + // Also verify through the convenience property + Assert.AreEqual(requestId, result.RequestId); + + // Print all headers for debugging + Console.WriteLine("=== Response Headers ==="); + foreach (var header in result.Headers) + { + Console.WriteLine($"{header.Key}: {string.Join(", ", header.Value)}"); + } + Console.WriteLine("========================"); + Console.WriteLine($"✓ X-Request-ID verified: {result.RequestId}"); + } + + [TestMethod] + public void CreateShareSession_ShouldReturnAllExpectedHeaders() + { + // Arrange + var expectedHeaders = new Dictionary + { + { "X-Request-ID", "req-123456" }, + { "Content-Type", "application/json" }, + { "X-Yoti-SDK-Version", "1.0.0" }, + { "Cache-Control", "no-cache" } + }; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"session-456\",\"status\":\"CREATED\"}", + expectedHeaders); + + var httpClient = new HttpClient(handlerMock.Object); + + var yotiClient = new Auth.DigitalIdentityClient( + httpClient, + SdkId, + KeyPair.Get()); + + var policy = new PolicyBuilder() + .Build(); + + var sessionRequest = new ShareSessionRequestBuilder() + .WithPolicy(policy) + .WithRedirectUri("https://example.com/callback") + .Build(); + + // Act + var result = yotiClient.CreateShareSession(sessionRequest); + + // Assert + Assert.IsNotNull(result); + Assert.IsNotNull(result.Headers); + + // Verify all expected headers are present + foreach (var expectedHeader in expectedHeaders) + { + var headerValue = result.GetHeaderValue(expectedHeader.Key); + Assert.IsNotNull(headerValue, $"Header '{expectedHeader.Key}' not found"); + Console.WriteLine($"✓ Header '{expectedHeader.Key}' found: {headerValue}"); + } + + // Specifically verify X-Request-ID + Assert.AreEqual("req-123456", result.RequestId); + Console.WriteLine($"\n✓ X-Request-ID verified: {result.RequestId}"); + } + + [TestMethod] + public void CreateShareSession_HeadersShouldBeCaseInsensitive() + { + // Arrange + string requestId = "case-test-id"; + var headers = new Dictionary + { + { "x-request-id", requestId }, // lowercase + { "Content-Type", "application/json" } + }; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"session-789\",\"status\":\"CREATED\"}", + headers); + + var httpClient = new HttpClient(handlerMock.Object); + + var yotiClient = new Auth.DigitalIdentityClient( + httpClient, + SdkId, + KeyPair.Get()); + + var policy = new PolicyBuilder() + .Build(); + + var sessionRequest = new ShareSessionRequestBuilder() + .WithPolicy(policy) + .WithRedirectUri("https://example.com/callback") + .Build(); + + // Act + var result = yotiClient.CreateShareSession(sessionRequest); + + // Assert - should find header regardless of case + Assert.IsNotNull(result.RequestId); + Assert.AreEqual(requestId, result.RequestId); + + // Test various case combinations + Assert.AreEqual(requestId, result.GetHeaderValue("X-Request-ID")); + Assert.AreEqual(requestId, result.GetHeaderValue("x-request-id")); + Assert.AreEqual(requestId, result.GetHeaderValue("X-REQUEST-ID")); + + Console.WriteLine($"✓ Case-insensitive header lookup working: {result.RequestId}"); + } + + [TestMethod] + [Ignore("GetShareReceipt requires complex multi-step mocking - needs separate implementation")] + public void GetShareReceipt_ShouldReturnXRequestIdHeader() + { + // Arrange + string requestId = "receipt-request-id-789"; + var headers = new Dictionary + { + { "X-Request-ID", requestId } + }; + + var response = new HttpResponseMessage + { + StatusCode = HttpStatusCode.OK, + Content = new StringContent("{\"id\":\"receipt-123\",\"userContent\":{}}") + }; + + // Add custom headers + foreach (var header in headers) + { + response.Headers.TryAddWithoutValidation(header.Key, header.Value); + } + + var handlerMock = new Mock(); + handlerMock + .Protected() + .Setup>( + "SendAsync", + ItExpr.IsAny(), + ItExpr.IsAny() + ) + .ReturnsAsync(response) + .Verifiable(); + + var httpClient = new HttpClient(handlerMock.Object); + + var yotiClient = new Auth.DigitalIdentityClient( + httpClient, + SdkId, + KeyPair.Get()); + + // Act + var result = yotiClient.GetShareReceipt("test-receipt-id"); + + // Assert + Assert.IsNotNull(result); + Assert.IsNotNull(result.Headers); + + var xRequestId = result.GetHeaderValue("X-Request-ID"); + Assert.IsNotNull(xRequestId); + Assert.AreEqual(requestId, xRequestId); + Assert.AreEqual(requestId, result.RequestId); + + Console.WriteLine($"✓ GetShareReceipt X-Request-ID: {result.RequestId}"); + } + } +} diff --git a/test/Yoti.Auth.Tests/Properties/AssemblyInfo.cs b/test/Yoti.Auth.Tests/Properties/AssemblyInfo.cs deleted file mode 100644 index 3750ee09..00000000 --- a/test/Yoti.Auth.Tests/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following set of attributes. -// Change these attribute values to modify the information associated with an assembly. -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Yoti.Auth.Tests")] -[assembly: AssemblyTrademark("")] - -// Setting ComVisible to false makes the types in this assembly not visible to COM components. If you -// need to access a type in this assembly from COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("a518e6f4-b553-4857-97c0-cc547163743b")] \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/Web/YotiHttpResponseTests.cs b/test/Yoti.Auth.Tests/Web/YotiHttpResponseTests.cs new file mode 100644 index 00000000..02b6f670 --- /dev/null +++ b/test/Yoti.Auth.Tests/Web/YotiHttpResponseTests.cs @@ -0,0 +1,273 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.Web; + +namespace Yoti.Auth.Tests.Web +{ + [TestClass] + public class YotiHttpResponseTests + { + [TestMethod] + public void ShouldCreateFromHttpResponseMessage() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("X-Request-ID", "test-request-id-123"); + httpResponse.Headers.Add("Custom-Header", "custom-value"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual(testData, response.Data); + Assert.AreEqual("test-request-id-123", response.RequestId); + Assert.AreEqual("custom-value", response.GetHeaderValue("Custom-Header")); + } + + [TestMethod] + public void ShouldHandleXRequestIdWithDifferentCasing() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("X-Request-Id", "test-request-id-456"); // Different casing + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("test-request-id-456", response.RequestId); + } + + [TestMethod] + public void ShouldReturnNullWhenRequestIdNotPresent() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("Other-Header", "other-value"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.IsNull(response.RequestId); + } + + [TestMethod] + public void ShouldGetHeaderValueCaseInsensitive() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Content = new StringContent("test content"); + httpResponse.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("application/json", response.GetHeaderValue("content-type")); + Assert.AreEqual("application/json", response.GetHeaderValue("Content-Type")); + Assert.AreEqual("application/json", response.GetHeaderValue("CONTENT-TYPE")); + } + + [TestMethod] + public void ShouldGetMultipleHeaderValues() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("Accept", new[] { "application/json", "text/html" }); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + var acceptValues = response.GetHeaderValues("Accept").ToList(); + Assert.AreEqual(2, acceptValues.Count); + Assert.IsTrue(acceptValues.Contains("application/json")); + Assert.IsTrue(acceptValues.Contains("text/html")); + } + + [TestMethod] + public void ShouldReturnEmptyEnumerableForNonExistentHeader() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + var values = response.GetHeaderValues("Non-Existent-Header"); + Assert.IsNotNull(values); + Assert.AreEqual(0, values.Count()); + } + + [TestMethod] + public void ShouldImplicitlyConvertToDataType() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Act + string implicitData = response; // Implicit conversion + + // Assert + Assert.AreEqual(testData, implicitData); + } + + [TestMethod] + public void ShouldIncludeBothResponseAndContentHeaders() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("Response-Header", "response-value"); + httpResponse.Content = new StringContent("content"); + httpResponse.Content.Headers.Add("Content-Header", "content-value"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("response-value", response.GetHeaderValue("Response-Header")); + Assert.AreEqual("content-value", response.GetHeaderValue("Content-Header")); + } + + [TestMethod] + public void ShouldHandleRequestIdWithVariousCasings() + { + // Arrange + var testData = "test data"; + const string expectedRequestId = "req-ABC123-def456"; + + // Test different casing variations of X-Request-ID + var testCases = new[] + { + "X-Request-ID", + "X-Request-Id", + "x-request-id", + "X-REQUEST-ID", + "x-Request-Id" + }; + + foreach (var headerName in testCases) + { + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add(headerName, expectedRequestId); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual(expectedRequestId, response.RequestId, + $"Failed for header name: {headerName}"); + } + } + + [TestMethod] + public void ShouldHandleCommonYotiHeaders() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("X-Request-ID", "req-12345"); + httpResponse.Headers.Add("X-Yoti-Session-ID", "session-abc123"); + httpResponse.Headers.Add("X-RateLimit-Limit", "1000"); + httpResponse.Headers.Add("X-RateLimit-Remaining", "999"); + httpResponse.Headers.Add("X-RateLimit-Reset", "1640995200"); + httpResponse.Headers.Add("Server", "Yoti-API-Gateway/2.1"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("req-12345", response.RequestId); + Assert.AreEqual("session-abc123", response.GetHeaderValue("X-Yoti-Session-ID")); + Assert.AreEqual("1000", response.GetHeaderValue("X-RateLimit-Limit")); + Assert.AreEqual("999", response.GetHeaderValue("X-RateLimit-Remaining")); + Assert.AreEqual("1640995200", response.GetHeaderValue("X-RateLimit-Reset")); + Assert.AreEqual("Yoti-API-Gateway/2.1", response.GetHeaderValue("Server")); + } + + [TestMethod] + public void ShouldHandleSecurityHeaders() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("X-Request-ID", "req-security-test"); + httpResponse.Headers.Add("Strict-Transport-Security", "max-age=31536000; includeSubDomains"); + httpResponse.Headers.Add("X-Content-Type-Options", "nosniff"); + httpResponse.Headers.Add("X-Frame-Options", "DENY"); + httpResponse.Headers.Add("X-XSS-Protection", "1; mode=block"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("req-security-test", response.RequestId); + Assert.AreEqual("max-age=31536000; includeSubDomains", response.GetHeaderValue("Strict-Transport-Security")); + Assert.AreEqual("nosniff", response.GetHeaderValue("X-Content-Type-Options")); + Assert.AreEqual("DENY", response.GetHeaderValue("X-Frame-Options")); + Assert.AreEqual("1; mode=block", response.GetHeaderValue("X-XSS-Protection")); + } + + [TestMethod] + public void ShouldHandleCacheHeaders() + { + // Arrange + var testData = "test data"; + var httpResponse = new HttpResponseMessage(); + httpResponse.Headers.Add("X-Request-ID", "req-cache-test"); + httpResponse.Headers.Add("Cache-Control", "no-cache, no-store, must-revalidate"); + httpResponse.Headers.Add("Pragma", "no-cache"); + httpResponse.Headers.Add("ETag", @"""session-abc123-v1"""); + // Set Expires header properly + httpResponse.Content = new StringContent("test"); + httpResponse.Content.Headers.Expires = DateTimeOffset.MinValue; + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("req-cache-test", response.RequestId); + Assert.IsTrue(response.GetHeaderValue("Cache-Control").Contains("no-cache")); + Assert.IsTrue(response.GetHeaderValue("Cache-Control").Contains("no-store")); + Assert.IsTrue(response.GetHeaderValue("Cache-Control").Contains("must-revalidate")); + Assert.AreEqual("no-cache", response.GetHeaderValue("Pragma")); + Assert.AreEqual(@"""session-abc123-v1""", response.GetHeaderValue("ETag")); + Assert.IsNotNull(response.GetHeaderValue("Expires")); // Just check it exists + } + + [TestMethod] + public void ShouldHandleErrorResponseHeaders() + { + // Arrange + var testData = "error data"; + var httpResponse = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest); + httpResponse.Headers.Add("X-Request-ID", "req-error-400"); + httpResponse.Headers.Add("X-Error-Code", "INVALID_REQUEST"); + httpResponse.Headers.Add("X-Error-Message", "Missing required parameter"); + httpResponse.Headers.Add("Retry-After", "30"); + + // Act + var response = YotiHttpResponse.FromHttpResponse(testData, httpResponse); + + // Assert + Assert.AreEqual("req-error-400", response.RequestId); + Assert.AreEqual("INVALID_REQUEST", response.GetHeaderValue("X-Error-Code")); + Assert.AreEqual("Missing required parameter", response.GetHeaderValue("X-Error-Message")); + Assert.AreEqual("30", response.GetHeaderValue("Retry-After")); + } + } +} diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index 6c7dac54..3f341ebb 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -1,7 +1,7 @@ - net6.0 + net8.0 Yoti.Auth.Tests Yoti.Auth.Tests true @@ -9,6 +9,8 @@ false false false + false + false Full true From f07a02c9d8c1fd3791bed7619404b7c36b6c75b4 Mon Sep 17 00:00:00 2001 From: mehmet-yoti <111424390+mehmet-yoti@users.noreply.github.com> Date: Mon, 23 Mar 2026 19:40:00 +0300 Subject: [PATCH 44/50] Release/3.19.0 (#530) * Sdk 2221 net allow rb to supply an applicant profile for identity profile sessions (#526) * Add applicant profile support for identity profile sessions with typed models and builders, tests * SDK-2221 update test project to net 8 for compatibility * Sdk 2753 net add support for requesting and retrieving share code resources tasks (#525) * SDK-2368: added advanced identity profiles for share1 * SDK-2368: removed unncessesary os files * SDK-2368:updated test project sdk versions for security issues * SDK-2368:added tests * SDK-2753 added support for requesting and retrieving share code resource tasks * SDK-2753 update test project to net 8 for compatibility * merged with SDK-2368-net-add-support-for-advanced-identity-profiles-to-share-v-1-v-2-and-examples * updated source as JSON object * updated for error in tests * fixed opencover version * added fix for requeirement_notmet_details * updated structured postal address --- .github/ISSUE_TEMPLATE.md | 17 + azure-pipelines-sonar-only.yml | 6 +- azure-pipelines.yml | 112 +- .../AdvancedIdentityShareController.cs | 2 +- .../Controllers/DbsController.cs | 2 +- .../Controllers/HomeController.cs | 78 +- .../Controllers/SuccessController.cs | 13 +- .../DigitalIdentityExample.csproj | 2 - .../Models/DisplayAttributes.cs | 2 - .../Properties/launchSettings.json | 2 +- .../DigitalIdentity/Startup.cs | 2 +- .../Views/Home/DigitalIdentity.cshtml | 82 +- .../Views/Success/SuccessResult.cshtml | 34 - .../Controllers/DbsController.cs | 38 +- .../Controllers/HomeController.cs | 4 +- .../Controllers/IdentityProfileController.cs | 157 + .../Views/IdVerify/Success.cshtml | 98 +- .../Views/IdentityProfile/Index.cshtml | 4 + src/Yoti.Auth/Constants/DocScanConstants.cs | 2 + .../DigitalIdentity/DigitalIdentityService.cs | 262 +- src/Yoti.Auth/DigitalIdentity/ErrorReason.cs | 7 +- src/Yoti.Auth/DigitalIdentity/GetReceipt.cs | 4 +- .../DigitalIdentity/SharedReceiptResponse.cs | 2 +- src/Yoti.Auth/DigitalIdentityClient.cs | 23 +- src/Yoti.Auth/DigitalIdentityClientEngine.cs | 19 +- src/Yoti.Auth/DocScan/DocScanService.cs | 4 +- .../Session/Create/ApplicantProfile.cs | 34 + .../Session/Create/ApplicantProfileBuilder.cs | 70 + .../Create/ResourceCreationContainer.cs | 21 + .../ResourceCreationContainerBuilder.cs | 30 + .../Session/Create/SessionSpecification.cs | 6 +- .../Create/SessionSpecificationBuilder.cs | 27 +- .../Session/Create/StructuredPostalAddress.cs | 54 + .../Create/StructuredPostalAddressBuilder.cs | 122 + .../IdentityProfile/FailureReasonResponse.cs | 2 +- .../ApplicantProfileResourceResponse.cs | 20 + .../Retrieve/Resource/ResourceContainer.cs | 6 + .../Resource/ShareCodeResourceResponse.cs | 43 + .../Retrieve/ShareCodeMediaResponse.cs | 13 + .../Session/Retrieve/Task/TaskResponse.cs | 1 + .../Task/VerifyShareCodeTaskResponse.cs | 9 + src/Yoti.Auth/Yoti.Auth.csproj | 2 +- .../DigitalIdentityServiceTests.cs | 8 +- .../DigitalIdentity/ErrorReasonTests.cs | 53 + .../Policy/DynamicPolicyBuilderTests.cs | 2 + .../ShareSessionHeaderTests.cs | 262 - .../DigitalIdentityClientEngineTests.cs | 310 +- .../Create/ApplicantProfileBuilderTests.cs | 86 + .../ResourceCreationContainerBuilderTests.cs | 74 + .../SessionSpecificationBuilderTests.cs | 65 +- .../StructuredPostalAddressBuilderTests.cs | 118 + .../FailureReasonResponseTest.cs | 48 +- .../ApplicantProfileResourceResponseTests.cs | 114 + .../ShareCodeResourceResponseTests.cs | 158 + .../Task/VerifyShareCodeTaskResponseTests.cs | 52 + .../TestData/IdentityProfiles.cs | 60 +- test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 17 +- test/Yoti.Auth.Tests/coverage.opencover.xml | 24409 ++++++++++++++++ 58 files changed, 26433 insertions(+), 841 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 src/Examples/DocScan/DocScanExample/Controllers/IdentityProfileController.cs create mode 100644 src/Examples/DocScan/DocScanExample/Views/IdentityProfile/Index.cshtml create mode 100644 src/Yoti.Auth/DocScan/Session/Create/ApplicantProfile.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Create/ApplicantProfileBuilder.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainer.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainerBuilder.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddress.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddressBuilder.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponse.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponse.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/ShareCodeMediaResponse.cs create mode 100644 src/Yoti.Auth/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponse.cs create mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/ErrorReasonTests.cs delete mode 100644 test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Create/ApplicantProfileBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Create/ResourceCreationContainerBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Create/StructuredPostalAddressBuilderTests.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponseTests.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponseTests.cs create mode 100644 test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs create mode 100644 test/Yoti.Auth.Tests/coverage.opencover.xml diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000..98f0c89d --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,17 @@ +--- +name: Custom issue template +about: " There's a better way to get help!" +title: '' +labels: '' +assignees: '' + +--- + +# +# Wait ✋ +# +# There's a better way to get help! +# +# Send your questions or issues to https://support.yoti.com +# +# diff --git a/azure-pipelines-sonar-only.yml b/azure-pipelines-sonar-only.yml index 525aeacd..0fb021c7 100644 --- a/azure-pipelines-sonar-only.yml +++ b/azure-pipelines-sonar-only.yml @@ -4,7 +4,7 @@ trigger: branches: include: - - release/3.18.0 + - release/3.19.0 pool: vmImage: 'windows-latest' @@ -22,7 +22,7 @@ steps: scannerMode: 'MSBuild' projectKey: 'getyoti:dotnet' projectName: '.NET SDK' - projectVersion: '3.18.0' + projectVersion: '3.19.0' extraProperties: | sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk @@ -56,4 +56,4 @@ steps: - task: SonarCloudPublish@1 inputs: pollingTimeoutSec: '300' - displayName: Sonar Cloud Publish \ No newline at end of file + displayName: Sonar Cloud Publish diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c0a42d46..1bf2aa62 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,9 +1,20 @@ -# Minimal SonarCloud test pipeline for release/3.18.0 +# ASP.NET Core (.NET Framework) +# Build and test ASP.NET Core projects targeting the full .NET Framework. +# Add steps that publish symbols, save build artifacts, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core trigger: branches: include: - - release/3.18.0 + - '*' # must quote since "*" is a YAML reserved character; we want a string + +schedules: +- cron: "0 12 * * 0" + displayName: Weekly Sunday build + branches: + include: + - master + always: true pool: vmImage: 'windows-latest' @@ -14,65 +25,80 @@ variables: buildConfiguration: 'Release' steps: -# 1. Install tools first -- task: UseDotNet@2 - inputs: - packageType: 'sdk' - version: '8.x' - displayName: 'Install .NET 8.0 SDK' - -- task: NuGetToolInstaller@1 - -# 2. Check what projects exist in SonarCloud first -- task: PowerShell@2 - inputs: - targetType: 'inline' - script: | - Write-Host "Checking SonarCloud projects in YOTI organization..." - $headers = @{ - 'Authorization' = 'Bearer $(SONARCLOUD_TOKEN)' - } - try { - $response = Invoke-RestMethod -Uri 'https://sonarcloud.io/api/projects/search?organization=yoti' -Headers $headers - Write-Host "Found projects:" - $response.components | ForEach-Object { Write-Host "- Key: $($_.key), Name: $($_.name)" } - } catch { - Write-Host "Error checking projects: $($_.Exception.Message)" - } - displayName: 'Debug: List SonarCloud Projects' - -# 3. SonarCloud PREPARE must come BEFORE build - task: SonarCloudPrepare@1 inputs: SonarCloud: 'Yoti SonarCloud' - organization: 'yoti' + organization: 'getyoti' scannerMode: 'MSBuild' - projectKey: 'dotnet-sdk' - projectName: 'dotnet-sdk' - projectVersion: '3.18.0' + projectKey: 'getyoti:dotnet' + projectName: '.NET SDK' + projectVersion: '3.19.0' extraProperties: | - sonar.verbose=true - sonar.exclusions=src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll - displayName: 'SonarCloud Prepare (BEFORE build)' + sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" + sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk + sonar.exclusions = src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll,src/Yoti.Auth/DigitalIdentity/** + displayName: SonarCloud Prepare Analysis + +- task: NuGetToolInstaller@1 -# 3. Restore and build AFTER SonarCloud prepare - task: NuGetCommand@2 inputs: restoreSolution: '$(solution)' - displayName: 'Restore NuGet packages' + displayName: Restore Solution - task: VSBuild@1 inputs: solution: '$(solution)' + msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=false /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"' platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' - msbuildArgs: '/p:SkipInvalidConfigurations=false' - displayName: 'Build solution' + displayName: Build Solution + +# Cobertura is used to display tests and code coverage in Azure +- task: DotNetCoreCLI@2 + inputs: + command: test + arguments: '--configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:Exclude="[*]Yoti.Auth.ProtoBuf.*" /p:ExcludeByAttribute="GeneratedCodeAttribute"' + projects: '**/*Tests/*.csproj' + nobuild: true + displayName: Run Tests With Cobertura + +# OpenCover is used to display code coverage in SonarCloud +- task: DotNetCoreCLI@2 + inputs: + command: test + arguments: '--logger trx --configuration $(BuildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude="[*]Yoti.Auth.ProtoBuf.*" /p:ExcludeByAttribute="GeneratedCodeAttribute"' + projects: '**/*Tests/*.csproj' + nobuild: true + displayName: Run Tests With OpenCover + +# Generate the report using ReportGenerator (https://github.com/danielpalme/ReportGenerator) +- task: DotNetCoreCLI@2 + inputs: + command: custom + custom: tool + arguments: install --tool-path . dotnet-reportgenerator-globaltool + displayName: Install ReportGenerator tool + +- script: reportgenerator -reports:$(Build.SourcesDirectory)/test/**/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:Cobertura + displayName: Cobertura Code Coverage +- script: reportgenerator -reports:$(Build.SourcesDirectory)/test/**/coverage.opencover.xml -targetdir:D:\Reports + displayName: OpenCover Code Coverage + +# Publish the code coverage result (summary and web site) +# The summary allows to view the coverage percentage in the summary tab +# The web site allows to view which lines are covered directly in Azure Pipeline +- task: PublishCodeCoverageResults@1 + inputs: + codeCoverageTool: Cobertura + summaryFileLocation: '$(Build.SourcesDirectory)/CodeCoverage/Cobertura.xml' + displayName: 'Publish Cobertura Code Coverage' + - task: SonarCloudAnalyze@1 - displayName: 'SonarCloud Analyze' + displayName: Sonar Cloud Analyze - task: SonarCloudPublish@1 inputs: pollingTimeoutSec: '300' - displayName: 'SonarCloud Publish' + displayName: Sonar Cloud Publish diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs index 4a54a44a..b6cf7f5b 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/AdvancedIdentityShareController.cs @@ -75,7 +75,7 @@ public IActionResult DigitalIdentity() var sharedReceiptResponse = new SharedReceiptResponse(); ViewBag.YotiClientSdkId = _clientSdkId; - ViewBag.sessionID = SessionResult.Data.Id; + ViewBag.sessionID = SessionResult.Id; return View("AdvancedIdentityShare", sharedReceiptResponse); } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs index f2badbec..678360fb 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/DbsController.cs @@ -73,7 +73,7 @@ public IActionResult DigitalIdentity() var sharedReceiptResponse = new SharedReceiptResponse(); ViewBag.YotiClientSdkId = _clientSdkId; - ViewBag.sessionID = SessionResult.Data.Id; + ViewBag.sessionID = SessionResult.Id; return View("Dbs", sharedReceiptResponse); } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs index 7d05fd09..04a06bfa 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Yoti.Auth; @@ -20,7 +19,7 @@ public HomeController(ILogger logger) _clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); _logger.LogInformation(string.Format("Yoti Client SDK ID='{0}'", _clientSdkId)); } - + // GET: /generate-share [Route("generate-share")] public IActionResult DigitalIdentity() @@ -41,13 +40,13 @@ public IActionResult DigitalIdentity() .WithName("given_names") .WithOptional(false) .Build(); - + var notification = new NotificationBuilder() .WithUrl("https://example.com/webhook") .WithMethod("POST") .WithVerifyTls(true) .Build(); - + var policy = new PolicyBuilder() .WithWantedAttribute(givenNamesWantedAttribute) .WithFullName() @@ -58,14 +57,12 @@ public IActionResult DigitalIdentity() .WithNationality() .WithGender() .WithDocumentDetails() - .WithDocumentImages() + .WithDocumentImages() .Build(); - var sessionReq = new ShareSessionRequestBuilder() - .WithPolicy(policy) + var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy) .WithNotification(notification) - .WithRedirectUri("https:/www.yoti.com") - .WithSubject(new + .WithRedirectUri("https:/www.yoti.com").WithSubject(new { subject_id = "some_subject_id_string" }).Build(); @@ -74,7 +71,7 @@ public IActionResult DigitalIdentity() var sharedReceiptResponse = new SharedReceiptResponse(); ViewBag.YotiClientSdkId = _clientSdkId; - ViewBag.sessionID = SessionResult.Data.Id; + ViewBag.sessionID = SessionResult.Id; return View("DigitalIdentity", sharedReceiptResponse); } @@ -84,69 +81,10 @@ public IActionResult DigitalIdentity() exception: e, message: e.Message); - TempData["Error"] = e.Message; + TempData["Error"] = e.Message; TempData["InnerException"] = e.InnerException?.Message; return RedirectToAction("Error", "Success"); } } - - [Route("create-qr/{sessionId}")] - public async Task CreateQrCode(string sessionId) - { - try - { - // Validate session ID format - if (string.IsNullOrWhiteSpace(sessionId)) - { - return BadRequest(new - { - success = false, - error = "Session ID is required", - message = "Please provide a valid session ID. Use /generate-share endpoint first to get a session ID." - }); - } - - if (!sessionId.StartsWith("ss.v2.")) - { - return BadRequest(new - { - sessionId = sessionId, - success = false, - error = "Invalid session ID format", - message = "Session ID must start with 'ss.v2.'. Use /generate-share endpoint first to get a valid session ID.", - expectedFormat = "ss.v2.xxxxx..." - }); - } - - string yotiKeyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); - - StreamReader privateKeyStream = System.IO.File.OpenText(yotiKeyFilePath); - var yotiClient = new DigitalIdentityClient(_clientSdkId, privateKeyStream); - - var qrResult = await yotiClient.CreateQrCode(sessionId); - - return Ok(new - { - sessionId = sessionId, - qrId = qrResult.Id, - qrUri = qrResult.Uri, - success = true, - message = "QR code created successfully" - }); - } - catch (Exception e) - { - _logger.LogError(exception: e, "Error creating QR code for session {SessionId}: {Error}", sessionId, e.Message); - - return BadRequest(new - { - sessionId = sessionId, - success = false, - error = e.Message, - innerError = e.InnerException?.Message, - hint = "If you're getting 'UNKNOWN_SESSION' error, make sure to use a valid session ID from /generate-share endpoint" - }); - } - } } } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs index 8e7ae3ec..aeac61a2 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/SuccessController.cs @@ -46,20 +46,17 @@ public IActionResult ReceiptInfo(string ReceiptID) var ReceiptResult = yotiClient.GetShareReceipt(ReceiptID); - DisplayAttributes displayAttributes = CreateDisplayAttributes(ReceiptResult.Data.UserContent.UserProfile.AttributeCollection); - if (ReceiptResult.Data.UserContent.UserProfile.FullName != null) + DisplayAttributes displayAttributes = CreateDisplayAttributes(ReceiptResult.UserContent.UserProfile.AttributeCollection); + if (ReceiptResult.UserContent.UserProfile.FullName != null) { - displayAttributes.FullName = ReceiptResult.Data.UserContent.UserProfile.FullName.GetValue(); + displayAttributes.FullName = ReceiptResult.UserContent.UserProfile.FullName.GetValue(); } - YotiAttribute selfie = ReceiptResult.Data.UserContent.UserProfile.Selfie; - if (ReceiptResult.Data.UserContent.UserProfile.Selfie != null) + YotiAttribute selfie = ReceiptResult.UserContent.UserProfile.Selfie; + if (ReceiptResult.UserContent.UserProfile.Selfie != null) { displayAttributes.Base64Selfie = selfie.GetValue().GetBase64URI(); } - - displayAttributes.ErrorDetails = ReceiptResult.Data.ErrorDetails; - ViewBag.YotiClientSdkId = _clientSdkId; return View("SuccessResult", displayAttributes); diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj index 87e3552c..b24d78cf 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj +++ b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj @@ -52,6 +52,4 @@ <_ContentIncludedByDefault Remove="Pages\Success\SuccessResult.cshtml" /> - - \ No newline at end of file diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs index 5bdb2ede..417d3e7e 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Models/DisplayAttributes.cs @@ -1,6 +1,5 @@ using System.Collections.Generic; using Yoti.Auth.Anchors; -using Yoti.Auth.DigitalIdentity; namespace DigitalIdentity.Models { @@ -9,7 +8,6 @@ public class DisplayAttributes public List AttributeList { get; internal set; } public string Base64Selfie { get; internal set; } public string FullName { get; internal set; } - public ErrorReason ErrorDetails { get; internal set; } internal DisplayAttributes() { diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json b/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json index c258b30f..cb95eb61 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Properties/launchSettings.json @@ -11,7 +11,7 @@ "CoreExample": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "http://localhost:5000", + "applicationUrl": "https://localhost:44344;http://localhost:44343", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs index 34da112c..04dd3919 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Startup.cs @@ -61,7 +61,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) } app.UseRouting(); - app.UseHttpsRedirection(); + app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseSession(); app.UseCookiePolicy(); diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml index 2cc83355..841d32ac 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Home/DigitalIdentity.cshtml @@ -7,51 +7,51 @@ - - + + Yoti Digital Identity Client Example - - + + -
-
-
- Yoti -
- -

Digital Identity Share Example

- -
-
-
- -
- -
-

The Yoti app is free to download and use:

- -
- - Download on the App Store - - - - get it on Google Play - -
-
-
- - + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml index 89923acb..a27d3c40 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Views/Success/SuccessResult.cshtml @@ -41,38 +41,7 @@ - @if (Model.ErrorDetails != null) - {
-
-
Errors
-
-
-
-
Audit Id
-
@Model.ErrorDetails.RequirementNotMetDetails[0].AuditId
-
-
-
Details
-
@Model.ErrorDetails.RequirementNotMetDetails[0].Details
-
-
-
Failure Type
-
@Model.ErrorDetails.RequirementNotMetDetails[0].FailureType
-
-
-
Document Type
-
@Model.ErrorDetails.RequirementNotMetDetails[0].DocumentType
-
-
-
Country
-
@Model.ErrorDetails.RequirementNotMetDetails[0].DocumentCountryIsoCode
-
-
- } - else - { -
@@ -89,7 +58,6 @@
-
@foreach (DigitalIdentity.Models.DisplayAttribute a in Model.AttributeList) { @@ -199,8 +167,6 @@ }
- } - diff --git a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs index 66d9f307..8de33104 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/DbsController.cs @@ -9,6 +9,10 @@ using Yoti.Auth; using Yoti.Auth.DocScan; using Yoti.Auth.DocScan.Session.Create; +using Yoti.Auth.DocScan.Session.Create.Check; +using Yoti.Auth.DocScan.Session.Create.Filter; +using Yoti.Auth.DocScan.Session.Create.Objectives; +using Yoti.Auth.DocScan.Session.Create.Task; namespace DocScanExample.Controllers { @@ -30,15 +34,40 @@ public DbsController(IHttpContextAccessor httpContextAccessor) public IActionResult Index() { + string advancedIdentityProfileJson = @" + { + ""profiles"": [ + { + ""trust_framework"": ""UK_TFIDA"", + ""schemes"": [ + { + ""label"": ""LB912"", + ""type"": ""RTW"" + } + ] + }, + { + ""trust_framework"": ""YOTI_GLOBAL"", + ""schemes"": [ + { + ""label"": ""LB321"", + ""type"": ""IDENTITY"", + ""objective"": ""AL_L1"", + } + ] + } + ] + }"; + //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) - .WithResourcesTtl(96460) + .WithResourcesTtl(90000) .WithUserTrackingId("some-user-tracking-id") //Add Sdk Config (with builder) .WithSdkConfig( new SdkConfigBuilder() - .WithAllowsCamera() + .WithAllowsCameraAndUpload() .WithPrimaryColour("#2d9fff") .WithSecondaryColour("#FFFFFF") .WithFontColour("#FFFFFF") @@ -50,7 +79,7 @@ public IActionResult Index() .Build() ) .WithCreateIdentityProfilePreview(true) - .WithIdentityProfileRequirements(new + /* .WithIdentityProfileRequirements(new { trust_framework = "UK_TFIDA", scheme = new @@ -58,7 +87,8 @@ public IActionResult Index() type = "DBS", objective = "BASIC" } - }) + })*/ + .WithAdvancedIdentityProfileRequirements(advancedIdentityProfileJson) .WithSubject(new { subject_id = "some_subject_id_string" diff --git a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs index b668763e..2aecebd1 100644 --- a/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs +++ b/src/Examples/DocScan/DocScanExample/Controllers/HomeController.cs @@ -43,7 +43,7 @@ public IActionResult Index() //Build Session Spec var sessionSpec = new SessionSpecificationBuilder() .WithClientSessionTokenTtl(600) - .WithResourcesTtl(96400) + .WithResourcesTtl(90400) .WithUserTrackingId("some-user-tracking-id") //Add Checks (using builders) .WithRequestedCheck( @@ -83,7 +83,6 @@ public IActionResult Index() new RequestedTextExtractionTaskBuilder() .WithManualCheckFallback() .WithChipDataDesired() - .WithCreateExpandedDocumentFields() .Build() ) .WithRequestedTask( @@ -108,7 +107,6 @@ public IActionResult Index() .Build() ) //Add Required Documents (with builders) - .WithCreateIdentityProfilePreview(true) .WithRequiredDocument( new RequiredIdDocumentBuilder() .WithFilter( diff --git a/src/Examples/DocScan/DocScanExample/Controllers/IdentityProfileController.cs b/src/Examples/DocScan/DocScanExample/Controllers/IdentityProfileController.cs new file mode 100644 index 00000000..6ca22c09 --- /dev/null +++ b/src/Examples/DocScan/DocScanExample/Controllers/IdentityProfileController.cs @@ -0,0 +1,157 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Net.Http; +using DocScanExample.Models; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Yoti.Auth; +using Yoti.Auth.DocScan; +using Yoti.Auth.DocScan.Session.Create; +using Yoti.Auth.DocScan.Session.Create.Check; +using Yoti.Auth.DocScan.Session.Create.Filter; +using Yoti.Auth.DocScan.Session.Create.Objectives; +using Yoti.Auth.DocScan.Session.Create.Task; + +namespace DocScanExample.Controllers +{ + public class IdentityProfileController : Controller + { + private readonly DocScanClient _client; + + private readonly string _baseUrl; + private readonly Uri _apiUrl; + + public IdentityProfileController(IHttpContextAccessor httpContextAccessor) + { + var request = httpContextAccessor.HttpContext.Request; + + _baseUrl = $"{request.Scheme}://{request.Host}"; + _apiUrl = GetApiUrl(); + _client = GetDocScanClient(_apiUrl); + } + + public IActionResult Index() + { + // Build Structured Postal Address + var structuredPostalAddress = new StructuredPostalAddressBuilder() + .WithAddressFormat(1) + .WithBuildingNumber("74") + .WithAddressLine1("74 AddressLine1") + .WithTownCity("CityName") + .WithPostalCode("E143RN") + .WithCountryIso("GBR") + .WithCountry("United Kingdom") + .WithFormattedAddress("74 AddressLine1\nCityName\nE143RN\nGBR") + .Build(); + + // Build Applicant Profile + var applicantProfile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .WithDateOfBirth("1988-11-02") + .WithNamePrefix("Mr") + .WithStructuredPostalAddress(structuredPostalAddress) + .Build(); + + // Build Resource Creation Container + var resources = new ResourceCreationContainerBuilder() + .WithApplicantProfile(applicantProfile) + .Build(); + + //Build Session Spec + var sessionSpec = new SessionSpecificationBuilder() + .WithClientSessionTokenTtl(600) + .WithResourcesTtl(96400) + .WithUserTrackingId("some-user-tracking-id") + //Add Sdk Config (with builder) + .WithSdkConfig( + new SdkConfigBuilder() + //.WithAllowsCameraAndUpload() + .WithPrimaryColour("#2d9fff") + .WithSecondaryColour("#FFFFFF") + .WithFontColour("#FFFFFF") + .WithLocale("en-GB") + .WithPresetIssuingCountry("GBR") + .WithSuccessUrl($"{_baseUrl}/idverify/success") + .WithErrorUrl($"{_baseUrl}/idverify/error") + .WithPrivacyPolicyUrl($"{_baseUrl}/privacy-policy") + .Build() + ) + .WithCreateIdentityProfilePreview(true) + .WithIdentityProfileRequirements(new + { + trust_framework = "UK_TFIDA", + scheme = new + { + type = "DBS", + objective = "BASIC" + } + }) + .WithSubject(new + { + subject_id = "some_subject_id_string" + }) + // Add Resources with Applicant Profile + .WithResources(resources) + .Build(); + + CreateSessionResult createSessionResult = _client.CreateSession(sessionSpec); + string sessionId = createSessionResult.SessionId; + + string path = $"web/index.html?sessionID={sessionId}&sessionToken={createSessionResult.ClientSessionToken}"; + Uri uri = new Uri(_apiUrl, path); + + ViewBag.iframeUrl = uri.ToString(); + + TempData["sessionId"] = sessionId; + return View(); + } + + public IActionResult Media(string mediaId, string sessionId) + { + MediaValue media = _client.GetMediaContent(sessionId, mediaId); + + return File(media.GetContent(), media.GetMIMEType()); + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + + internal static DocScanClient GetDocScanClient(Uri apiUrl = null) + { + if (apiUrl == null) + apiUrl = GetApiUrl(); + + string keyFilePath = Environment.GetEnvironmentVariable("YOTI_KEY_FILE_PATH"); + using (StreamReader privateKeyStream = System.IO.File.OpenText(keyFilePath)) + { + var key = CryptoEngine.LoadRsaKey(privateKeyStream); + string clientSdkId = Environment.GetEnvironmentVariable("YOTI_CLIENT_SDK_ID"); + return new DocScanClient(clientSdkId, key, new HttpClient(), apiUrl); + } + } + + internal static Uri GetApiUrl() + { + string apiUrl = Environment.GetEnvironmentVariable("YOTI_DOC_SCAN_API_URL"); + if (string.IsNullOrEmpty(apiUrl)) + { + return Yoti.Auth.Constants.Api.DefaultYotiDocsUrl; + } + + if (!apiUrl.EndsWith("/", StringComparison.Ordinal)) + apiUrl += "/"; + + return new Uri(apiUrl); + } + + public IActionResult PrivacyPolicy() + { + return View(); + } + } +} diff --git a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml index 7bd30888..9fd5d921 100644 --- a/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml +++ b/src/Examples/DocScan/DocScanExample/Views/IdVerify/Success.cshtml @@ -68,26 +68,29 @@ Reason Code @Model.IdentityProfile.FailureReason.ReasonCode + @foreach (var detail in Model.IdentityProfile.FailureReason.RequirementsNotMetDetails) + { Failure Type - @Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].FailureType + @detail.FailureType Details - @Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].Details + @detail.Details Audit Id - @Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].AuditId + @detail.AuditId Country ISO Code - @Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].DocumentCountryIsoCode + @detail.DocumentCountryIsoCode Document Type - @Model.IdentityProfile.FailureReason.RequirementNotMetDetails[0].DocumentType + @detail.DocumentType + } } @@ -895,5 +898,90 @@ } } + @if (Model.Resources.ApplicantProfiles != null && Model.Resources.ApplicantProfiles.Count > 0) + { +
+
+

Applicant Profiles

+
+
+ + @foreach (var applicantProfile in Model.Resources.ApplicantProfiles) + { + var profileIndex = Model.Resources.ApplicantProfiles.IndexOf(applicantProfile); +
+
+

Applicant Profile @(profileIndex + 1)

+ + + + + + + @if (applicantProfile.Source != null) + { + + + + + } + @if (applicantProfile.CreatedAt.HasValue) + { + + + + + } + @if (applicantProfile.LastUpdated.HasValue) + { + + + + + } + +
ID@applicantProfile.Id
Source Type@applicantProfile.Source.Type
Created At@applicantProfile.CreatedAt.Value.ToString("o")
Last Updated@applicantProfile.LastUpdated.Value.ToString("o")
+ + @if (applicantProfile.Media != null) + { +
+
+
+

+ +

+
+
+
+ + + + + + + + + + + +
ID + + @applicantProfile.Media.Id + +
Type@applicantProfile.Media.Type
+
+
+
+
+ } +
+
+ } + } + } diff --git a/src/Examples/DocScan/DocScanExample/Views/IdentityProfile/Index.cshtml b/src/Examples/DocScan/DocScanExample/Views/IdentityProfile/Index.cshtml new file mode 100644 index 00000000..161e7acd --- /dev/null +++ b/src/Examples/DocScan/DocScanExample/Views/IdentityProfile/Index.cshtml @@ -0,0 +1,4 @@ +@{ + ViewData["Title"] = "Identity Profile Page"; +} + diff --git a/src/Yoti.Auth/Constants/DocScanConstants.cs b/src/Yoti.Auth/Constants/DocScanConstants.cs index f97d375f..e960cecf 100644 --- a/src/Yoti.Auth/Constants/DocScanConstants.cs +++ b/src/Yoti.Auth/Constants/DocScanConstants.cs @@ -72,5 +72,7 @@ public static class DocScanConstants public const string Reclassification = "RECLASSIFICATION"; public const string Generic = "GENERIC"; + + public const string VerifyShareCodeTask = "VERIFY_SHARE_CODE_TASK"; } } \ No newline at end of file diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 37597217..3043fca8 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -1,11 +1,9 @@ using System; - +using System.Collections.Generic; +using System.IO; using System.Net.Http; -using System.Security; using System.Text; - using System.Threading.Tasks; - using Google.Protobuf; using Newtonsoft.Json; using Org.BouncyCastle.Crypto; @@ -42,49 +40,6 @@ internal static async Task CreateShareSession(HttpClient htt }); byte[] body = Encoding.UTF8.GetBytes(serializedScenario); - Request shareSessionRequest = new RequestBuilder() - .WithKeyPair(keyPair) - .WithBaseUri(apiUrl) - .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(sessionCreation) - .WithQueryParam("sdkID", sdkId) - .WithHttpMethod(HttpMethod.Post) - .WithContent(body) - .Build(); - - using (HttpResponseMessage response = await shareSessionRequest.Execute(httpClient).ConfigureAwait(false)) - { - if (!response.IsSuccessStatusCode) - { - Response.CreateYotiExceptionFromStatusCode(response); - } - - var responseObject = await response.Content.ReadAsStringAsync(); - var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); - - return deserialized; - } - } - - /// - /// Creates a share session and returns the result with HTTP response headers - /// - internal static async Task> CreateShareSessionWithHeaders(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, ShareSessionRequest shareSessionRequestPayload) - { - Validation.NotNull(httpClient, nameof(httpClient)); - Validation.NotNull(apiUrl, nameof(apiUrl)); - Validation.NotNull(sdkId, nameof(sdkId)); - Validation.NotNull(keyPair, nameof(keyPair)); - Validation.NotNull(shareSessionRequestPayload, nameof(shareSessionRequestPayload)); - - string serializedScenario = JsonConvert.SerializeObject( - shareSessionRequestPayload, - new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Ignore - }); - byte[] body = Encoding.UTF8.GetBytes(serializedScenario); - Request shareSessionRequest = new RequestBuilder() .WithKeyPair(keyPair) .WithBaseUri(apiUrl) @@ -95,7 +50,7 @@ internal static async Task> CreateShareSess .WithContent(body) .Build(); - return await shareSessionRequest.ExecuteWithHeaders(httpClient, async response => + using (HttpResponseMessage response = await shareSessionRequest.Execute(httpClient).ConfigureAwait(false)) { if (!response.IsSuccessStatusCode) { @@ -106,7 +61,7 @@ internal static async Task> CreateShareSess var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); return deserialized; - }).ConfigureAwait(false); + } } internal static async Task GetSession(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId) @@ -141,20 +96,30 @@ internal static async Task GetSession(HttpClient httpClient, U } } - internal static async Task CreateQrCode(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId) + internal static async Task CreateQrCode(HttpClient httpClient, Uri apiUrl, string sdkId, AsymmetricCipherKeyPair keyPair, string sessionId,QrRequest qrRequestPayload) { Validation.NotNull(httpClient, nameof(httpClient)); Validation.NotNull(apiUrl, nameof(apiUrl)); Validation.NotNull(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); + string serializedQrCode = JsonConvert.SerializeObject( + qrRequestPayload, + new JsonSerializerSettings + { + NullValueHandling = NullValueHandling.Ignore + }); + byte[] body = Encoding.UTF8.GetBytes(serializedQrCode); + + Request createQrRequest = new RequestBuilder() .WithKeyPair(keyPair) .WithBaseUri(apiUrl) .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(string.Format("/v2/sessions/{0}/qr-codes", sessionId)) + .WithEndpoint(string.Format($"/v2/sessions/{0}/qr-codes", sessionId)) .WithQueryParam("appId", sdkId) .WithHttpMethod(HttpMethod.Post) + .WithContent(body) .Build(); using (HttpResponseMessage response = await createQrRequest.Execute(httpClient).ConfigureAwait(false)) @@ -235,64 +200,12 @@ private static async Task GetReceipt(HttpClient httpClient, str } } - /// - /// Gets a receipt with HTTP response headers - /// - private static async Task> GetReceiptWithHeaders(HttpClient httpClient, string receiptId, string sdkId, Uri apiUrl, AsymmetricCipherKeyPair keyPair) - { - Validation.NotNull(httpClient, nameof(httpClient)); - Validation.NotNull(apiUrl, nameof(apiUrl)); - Validation.NotNull(sdkId, nameof(sdkId)); - Validation.NotNull(keyPair, nameof(keyPair)); - - string receiptUrl = Base64ToBase64URL(receiptId); - string endpoint = string.Format(receiptRetrieval, receiptUrl); - - Request ReceiptRequest = new RequestBuilder() - .WithKeyPair(keyPair) - .WithBaseUri(apiUrl) - .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(endpoint) - .WithQueryParam("sdkID", sdkId) - .WithHttpMethod(HttpMethod.Get) - .Build(); - - return await ReceiptRequest.ExecuteWithHeaders(httpClient, async response => - { - if (!response.IsSuccessStatusCode) - { - Response.CreateYotiExceptionFromStatusCode(response); - } - - var responseObject = await response.Content.ReadAsStringAsync(); - var deserialized = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject(responseObject)); - - return deserialized; - }).ConfigureAwait(false); - } - public static string Base64ToBase64URL(string base64Str) { try { - byte[] temp = null; - try - { - temp = Convert.FromBase64String(base64Str); - } - catch (Exception) - { - //6m4SclMZ34mgaCebIPeFu/ZdJRoS2ZKk/LBNCKuv5MjfcBrIAMMvfjAeH+zIKoMV - //6m4SclMZ34mgaCebIPeFu/ZdJRoS2ZKk/LBNCKuv5MjfcBrIAMMvfjAeH+zIKoMV - //6m4SclMZ34mgaCebIPeFu%2FZdJRoS2ZKk%2FLBNCKuv5MjfcBrIAMMvfjAeH%2BzIKoMV - //EYRTuyFdeMGtW%2FVjL%2FoqGPiNVBWphTGydZWvLmd52z7k7Fr5MJdzmRV57reh94sU - var tempBase64Str = Uri.UnescapeDataString(base64Str); - temp = Convert.FromBase64String(tempBase64Str); - } - - - byte[] decodedBytes = temp;//Convert.FromBase64String(base64Str); + byte[] decodedBytes = Convert.FromBase64String(base64Str); string base64URL = Convert.ToBase64String(decodedBytes) .Replace('+', '-') .Replace('/', '_') @@ -312,9 +225,8 @@ public static async Task GetShareReceipt(HttpClient httpC { var receiptResponse = await GetReceipt(httpClient, receiptId, clientSdkId, apiUrl, key); var itemKeyId = receiptResponse.WrappedItemKeyId; - if (itemKeyId != null) - { - var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); + + var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); var receiptContentKey = CryptoEngine.UnwrapReceiptKey(receiptResponse.WrappedKey, encryptedItemKeyResponse.Value, encryptedItemKeyResponse.Iv, key); @@ -374,37 +286,9 @@ public static async Task GetShareReceipt(HttpClient httpC Error = receiptResponse.Error, ErrorDetails = receiptResponse.ErrorDetails - }; - return sharedReceiptResponse; - } - else - { - var sharedReceiptResponse = new SharedReceiptResponse - { - ID = receiptResponse.ID, - SessionID = receiptResponse.SessionID, - RememberMeID = receiptResponse.RememberMeID, - ParentRememberMeID = receiptResponse.ParentRememberMeID, - Timestamp = receiptResponse.Timestamp, - UserContent = new UserContent - { - UserProfile = new YotiProfile(), - ExtraData = new ExtraData() - }, - ApplicationContent = new ApplicationContent - { - ApplicationProfile = new ApplicationProfile(), - ExtraData = new ExtraData() - }, - Error = receiptResponse.Error, - ErrorDetails = receiptResponse.ErrorDetails - - }; - return sharedReceiptResponse; - } - + }; - + return sharedReceiptResponse; } catch (Exception ex) { @@ -413,110 +297,6 @@ public static async Task GetShareReceipt(HttpClient httpC } } - /// - /// Gets a share receipt and returns the result with HTTP response headers - /// - public static async Task> GetShareReceiptWithHeaders(HttpClient httpClient, string clientSdkId, Uri apiUrl, AsymmetricCipherKeyPair key, string receiptId) - { - Validation.NotNullOrEmpty(receiptId, nameof(receiptId)); - try - { - var receiptResponse = await GetReceiptWithHeaders(httpClient, receiptId, clientSdkId, apiUrl, key); - var itemKeyId = receiptResponse.Data.WrappedItemKeyId; - if (itemKeyId != null) - { - var encryptedItemKeyResponse = await GetReceiptItemKey(httpClient, itemKeyId, clientSdkId, apiUrl, key); - - var receiptContentKey = CryptoEngine.UnwrapReceiptKey(receiptResponse.Data.WrappedKey, encryptedItemKeyResponse.Value, encryptedItemKeyResponse.Iv, key); - - var (attrData, aextra, decryptAttrDataError) = DecryptReceiptContent(receiptResponse.Data.Content, receiptContentKey); - if (decryptAttrDataError != null) - { - throw new Exception($"An unexpected error occurred: {decryptAttrDataError.Message}"); - } - - var parsedAttributesApp = AttributeConverter.ConvertToBaseAttributes(attrData); - var appProfile = new ApplicationProfile(parsedAttributesApp); - - var (attrOtherData, aOtherExtra, decryptOtherAttrDataError) = DecryptReceiptContent(receiptResponse.Data.OtherPartyContent, receiptContentKey); - if (decryptAttrDataError != null) - { - throw new Exception($"An unexpected error occurred: {decryptAttrDataError.Message}"); - } - - var userProfile = new YotiProfile(); - if (attrOtherData != null) - { - var parsedAttributesUser = AttributeConverter.ConvertToBaseAttributes(attrOtherData); - userProfile = new YotiProfile(parsedAttributesUser); - } - - ExtraData userExtraData = new ExtraData(); - if (aOtherExtra != null) - { - userExtraData = ExtraDataConverter.ParseExtraDataProto(aOtherExtra); - } - ExtraData appExtraData = new ExtraData(); - if (aextra != null) - { - appExtraData = ExtraDataConverter.ParseExtraDataProto(aextra); - } - - var sharedReceiptResponse = new SharedReceiptResponse - { - ID = receiptResponse.Data.ID, - SessionID = receiptResponse.Data.SessionID, - RememberMeID = receiptResponse.Data.RememberMeID, - ParentRememberMeID = receiptResponse.Data.ParentRememberMeID, - Timestamp = receiptResponse.Data.Timestamp, - UserContent = new UserContent - { - UserProfile = userProfile, - ExtraData = userExtraData - }, - ApplicationContent = new ApplicationContent - { - ApplicationProfile = appProfile, - ExtraData = appExtraData - }, - Error = receiptResponse.Data.Error, - ErrorDetails = receiptResponse.Data.ErrorDetails - }; - - return YotiHttpResponse.FromHttpResponse(sharedReceiptResponse, receiptResponse); - } - else - { - var sharedReceiptResponse = new SharedReceiptResponse - { - ID = receiptResponse.Data.ID, - SessionID = receiptResponse.Data.SessionID, - RememberMeID = receiptResponse.Data.RememberMeID, - ParentRememberMeID = receiptResponse.Data.ParentRememberMeID, - Timestamp = receiptResponse.Data.Timestamp, - UserContent = new UserContent - { - UserProfile = new YotiProfile(), - ExtraData = new ExtraData() - }, - ApplicationContent = new ApplicationContent - { - ApplicationProfile = new ApplicationProfile(), - ExtraData = new ExtraData() - }, - Error = receiptResponse.Data.Error, - ErrorDetails = receiptResponse.Data.ErrorDetails - }; - - return YotiHttpResponse.FromHttpResponse(sharedReceiptResponse, receiptResponse); - } - } - catch (Exception ex) - { - throw new Exception($"An unexpected error occurred: {ex.Message}"); - } - } - private static async Task GetReceiptItemKey(HttpClient httpClient, string receiptItemKeyId, string sdkId, Uri apiUrl, AsymmetricCipherKeyPair keyPair) { Validation.NotNull(httpClient, nameof(httpClient)); diff --git a/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs b/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs index 6ca112df..05d0403b 100644 --- a/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs +++ b/src/Yoti.Auth/DigitalIdentity/ErrorReason.cs @@ -1,15 +1,12 @@ using Newtonsoft.Json; using System.Collections.Generic; -using Yoti.Auth.DigitalIdentity; using Yoti.DigitalIdentity; namespace Yoti.Auth.DigitalIdentity { public class ErrorReason { - [JsonProperty("requirements_not_met_details")] - public List RequirementNotMetDetails { get; private set; } - + [JsonProperty(PropertyName = "requirements_not_met_details")] + public List RequirementsNotMetDetails { get; private set; } } - } diff --git a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs index 1c9f3fd7..e6dd0588 100644 --- a/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs +++ b/src/Yoti.Auth/DigitalIdentity/GetReceipt.cs @@ -42,7 +42,7 @@ public class ReceiptResponse [JsonProperty("error")] public string Error { get; set; } - [JsonProperty("errorReason")] - public ErrorReason ErrorDetails { get; set; } + [JsonProperty("error_details")] + public ErrorDetails ErrorDetails { get; set; } } } diff --git a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs index 3a6f6de5..01ca14d0 100644 --- a/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs +++ b/src/Yoti.Auth/DigitalIdentity/SharedReceiptResponse.cs @@ -11,7 +11,7 @@ public class SharedReceiptResponse public string ParentRememberMeID { get; set; } public string Timestamp { get; set; } public string Error { get; set; } - public ErrorReason ErrorDetails { get; set; } + public ErrorDetails ErrorDetails { get; set; } public UserContent UserContent { get; set; } public ApplicationContent ApplicationContent { get; set; } } diff --git a/src/Yoti.Auth/DigitalIdentityClient.cs b/src/Yoti.Auth/DigitalIdentityClient.cs index ac21c958..628a1a06 100644 --- a/src/Yoti.Auth/DigitalIdentityClient.cs +++ b/src/Yoti.Auth/DigitalIdentityClient.cs @@ -4,7 +4,6 @@ using System.Threading.Tasks; using Org.BouncyCastle.Crypto; using Yoti.Auth.DigitalIdentity; -using Yoti.Auth.Web; namespace Yoti.Auth { @@ -66,10 +65,10 @@ public DigitalIdentityClient(HttpClient httpClient, string sdkId, AsymmetricCiph /// Details of the device's callback endpoint, and extensions for the application /// - /// with response headers - public YotiHttpResponse CreateShareSession(ShareSessionRequest shareSessionRequest) + /// + public ShareSessionResult CreateShareSession(ShareSessionRequest shareSessionRequest) { - Task> task = Task.Run(async () => await CreateShareSessionAsync(shareSessionRequest).ConfigureAwait(false)); + Task task = Task.Run(async () => await CreateShareSessionAsync(shareSessionRequest).ConfigureAwait(false)); return task.Result; } @@ -81,21 +80,22 @@ public YotiHttpResponse CreateShareSession(ShareSessionReque /// Details of the device's callback endpoint, and extensions for the application /// - /// with response headers - public async Task> CreateShareSessionAsync(ShareSessionRequest shareSessionRequest) + /// + public async Task CreateShareSessionAsync(ShareSessionRequest shareSessionRequest) { return await _yotiDigitalClientEngine.CreateShareSessionAsync(_sdkId, _keyPair, ApiUri, shareSessionRequest).ConfigureAwait(false); } - public YotiHttpResponse GetShareReceipt(string receiptId) + public SharedReceiptResponse GetShareReceipt(string receiptId) { - Task> task = Task.Run(async () => await _yotiDigitalClientEngine.GetShareReceipt(_sdkId, _keyPair, ApiUri, receiptId).ConfigureAwait(false)); + Task task = Task.Run(async () => await _yotiDigitalClientEngine.GetShareReceipt(_sdkId, _keyPair, ApiUri, receiptId).ConfigureAwait(false)); return task.Result; } - - public async Task CreateQrCode(string sessionId) + + + public async Task CreateQrCode(string sessionId, QrRequest qrRequest) { - return await _yotiDigitalClientEngine.CreateQrCodeAsync(_sdkId, _keyPair, ApiUri, sessionId).ConfigureAwait(false); + return await _yotiDigitalClientEngine.CreateQrCodeAsync(_sdkId, _keyPair, ApiUri, sessionId, qrRequest).ConfigureAwait(false); } public async Task GetQrCode(string qrCodeId) @@ -108,7 +108,6 @@ public async Task GetSession(string sessionId) return await _yotiDigitalClientEngine.GetSession(_sdkId, _keyPair, ApiUri, sessionId).ConfigureAwait(false); } - internal void SetYotiApiUri() { if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("YOTI_API_URL"))) diff --git a/src/Yoti.Auth/DigitalIdentityClientEngine.cs b/src/Yoti.Auth/DigitalIdentityClientEngine.cs index 4d507e13..0db68023 100644 --- a/src/Yoti.Auth/DigitalIdentityClientEngine.cs +++ b/src/Yoti.Auth/DigitalIdentityClientEngine.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using Org.BouncyCastle.Crypto; using Yoti.Auth.DigitalIdentity; -using Yoti.Auth.Web; namespace Yoti.Auth { @@ -18,33 +17,33 @@ public DigitalIdentityClientEngine(HttpClient httpClient) { _httpClient = httpClient; -#if NET452 || NET462 || NET472 || NET48 + #if NET452 || NET462 || NET472 || NET48 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; -#endif + #endif } - - public async Task> CreateShareSessionAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, ShareSessionRequest shareSessionRequest) + + public async Task CreateShareSessionAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, ShareSessionRequest shareSessionRequest) { - YotiHttpResponse result = await Task.Run(async () => await DigitalIdentityService.CreateShareSessionWithHeaders( + ShareSessionResult result = await Task.Run(async () => await DigitalIdentityService.CreateShareSession( _httpClient, apiUrl, sdkId, keyPair, shareSessionRequest).ConfigureAwait(false)) .ConfigureAwait(false); return result; } - public async Task> GetShareReceipt(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string receiptId) + public async Task GetShareReceipt(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string receiptId) { - YotiHttpResponse result = await Task.Run(async () => await DigitalIdentityService.GetShareReceiptWithHeaders( + SharedReceiptResponse result = await Task.Run(async () => await DigitalIdentityService.GetShareReceipt( _httpClient, sdkId, apiUrl, keyPair, receiptId).ConfigureAwait(false)) .ConfigureAwait(false); return result; } - public async Task CreateQrCodeAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string sessionid) + public async Task CreateQrCodeAsync(string sdkId, AsymmetricCipherKeyPair keyPair, Uri apiUrl, string sessionid, QrRequest qRRequest) { CreateQrResult result = await Task.Run(async () => await DigitalIdentityService.CreateQrCode( - _httpClient, apiUrl, sdkId, keyPair, sessionid).ConfigureAwait(false)) + _httpClient, apiUrl, sdkId, keyPair, sessionid, qRRequest).ConfigureAwait(false)) .ConfigureAwait(false); return result; diff --git a/src/Yoti.Auth/DocScan/DocScanService.cs b/src/Yoti.Auth/DocScan/DocScanService.cs index 1035033a..fff51c41 100644 --- a/src/Yoti.Auth/DocScan/DocScanService.cs +++ b/src/Yoti.Auth/DocScan/DocScanService.cs @@ -151,11 +151,11 @@ public async Task GetMediaContent(string sdkId, AsymmetricCipherKeyP Response.CreateYotiExceptionFromStatusCode(response); } - if (response.Content == null || response.Content.Headers.ContentType == null) + if (response.Content == null) { return null; } - + if (response.Content.Headers.ContentType == null) { return null; diff --git a/src/Yoti.Auth/DocScan/Session/Create/ApplicantProfile.cs b/src/Yoti.Auth/DocScan/Session/Create/ApplicantProfile.cs new file mode 100644 index 00000000..aec54f35 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/ApplicantProfile.cs @@ -0,0 +1,34 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Create +{ + /// + /// Represents an applicant profile to be used for verification against identity documents. + /// + public class ApplicantProfile + { + internal ApplicantProfile( + string fullName, + string dateOfBirth, + string namePrefix, + StructuredPostalAddress structuredPostalAddress) + { + FullName = fullName; + DateOfBirth = dateOfBirth; + NamePrefix = namePrefix; + StructuredPostalAddress = structuredPostalAddress; + } + + [JsonProperty(PropertyName = "full_name")] + public string FullName { get; } + + [JsonProperty(PropertyName = "date_of_birth")] + public string DateOfBirth { get; } + + [JsonProperty(PropertyName = "name_prefix")] + public string NamePrefix { get; } + + [JsonProperty(PropertyName = "structured_postal_address")] + public StructuredPostalAddress StructuredPostalAddress { get; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Create/ApplicantProfileBuilder.cs b/src/Yoti.Auth/DocScan/Session/Create/ApplicantProfileBuilder.cs new file mode 100644 index 00000000..912b4d73 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/ApplicantProfileBuilder.cs @@ -0,0 +1,70 @@ +namespace Yoti.Auth.DocScan.Session.Create +{ + /// + /// Builder for . + /// + public class ApplicantProfileBuilder + { + private string _fullName; + private string _dateOfBirth; + private string _namePrefix; + private StructuredPostalAddress _structuredPostalAddress; + + /// + /// Sets the full name of the applicant + /// + /// The full name + /// the builder + public ApplicantProfileBuilder WithFullName(string fullName) + { + _fullName = fullName; + return this; + } + + /// + /// Sets the date of birth of the applicant + /// + /// The date of birth (e.g. "1988-11-02") + /// the builder + public ApplicantProfileBuilder WithDateOfBirth(string dateOfBirth) + { + _dateOfBirth = dateOfBirth; + return this; + } + + /// + /// Sets the name prefix of the applicant + /// + /// The name prefix (e.g. "Mr") + /// the builder + public ApplicantProfileBuilder WithNamePrefix(string namePrefix) + { + _namePrefix = namePrefix; + return this; + } + + /// + /// Sets the structured postal address of the applicant + /// + /// The + /// the builder + public ApplicantProfileBuilder WithStructuredPostalAddress(StructuredPostalAddress structuredPostalAddress) + { + _structuredPostalAddress = structuredPostalAddress; + return this; + } + + /// + /// Builds the based on the values supplied to the builder. + /// + /// The built + public ApplicantProfile Build() + { + return new ApplicantProfile( + _fullName, + _dateOfBirth, + _namePrefix, + _structuredPostalAddress); + } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainer.cs b/src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainer.cs new file mode 100644 index 00000000..78426b64 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainer.cs @@ -0,0 +1,21 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Create +{ + /// + /// Container for resources to be created as part of a session. + /// + public class ResourceCreationContainer + { + internal ResourceCreationContainer(ApplicantProfile applicantProfile) + { + ApplicantProfile = applicantProfile; + } + + /// + /// The applicant profile to be used for verification against identity documents. + /// + [JsonProperty(PropertyName = "applicant_profile")] + public ApplicantProfile ApplicantProfile { get; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainerBuilder.cs b/src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainerBuilder.cs new file mode 100644 index 00000000..c3dc1356 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/ResourceCreationContainerBuilder.cs @@ -0,0 +1,30 @@ +namespace Yoti.Auth.DocScan.Session.Create +{ + /// + /// Builder for . + /// + public class ResourceCreationContainerBuilder + { + private ApplicantProfile _applicantProfile; + + /// + /// Sets the applicant profile to be used for verification against identity documents. + /// + /// The for the session + /// the builder + public ResourceCreationContainerBuilder WithApplicantProfile(ApplicantProfile applicantProfile) + { + _applicantProfile = applicantProfile; + return this; + } + + /// + /// Builds the based on the values supplied to the builder. + /// + /// The built + public ResourceCreationContainer Build() + { + return new ResourceCreationContainer(_applicantProfile); + } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs index 129d800d..0d06c84b 100644 --- a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs +++ b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecification.cs @@ -9,7 +9,7 @@ namespace Yoti.Auth.DocScan.Session.Create { public class SessionSpecification { - internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, string userTrackingId, NotificationConfig notifications, List requestedChecks, List requestedTasks, SdkConfig sdkConfig, List requiredDocuments, bool? blockBiometricConsent, DateTimeOffset? sessionDeadline, object identityProfileRequirements, object subject, bool createIdentityProfilePreview, object advancedIdentityProfileRequirements) + internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, string userTrackingId, NotificationConfig notifications, List requestedChecks, List requestedTasks, SdkConfig sdkConfig, List requiredDocuments, bool? blockBiometricConsent, DateTimeOffset? sessionDeadline, object identityProfileRequirements, object subject, bool createIdentityProfilePreview, object advancedIdentityProfileRequirements, ResourceCreationContainer resources) { ClientSessionTokenTtl = clientSessionTokenTtl; ResourcesTtl = resourcesTtl; @@ -25,6 +25,7 @@ internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, str Subject = subject; CreateIdentityProfilePreview = createIdentityProfilePreview; AdvancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + Resources = resources; } [JsonProperty(PropertyName = "client_session_token_ttl")] @@ -68,5 +69,8 @@ internal SessionSpecification(int? clientSessionTokenTtl, int? resourcesTtl, str [JsonProperty(PropertyName = "advanced_identity_profile_requirements")] public object AdvancedIdentityProfileRequirements { get; } + + [JsonProperty(PropertyName = "resources")] + public ResourceCreationContainer Resources { get; } } } diff --git a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs index ee7c9f20..9138f0ea 100644 --- a/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs +++ b/src/Yoti.Auth/DocScan/Session/Create/SessionSpecificationBuilder.cs @@ -1,13 +1,11 @@ using System; using System.Collections.Generic; -using Newtonsoft.Json; using Yoti.Auth.DocScan.Session.Create.Check; using Yoti.Auth.DocScan.Session.Create.Filter; using Yoti.Auth.DocScan.Session.Create.Task; namespace Yoti.Auth.DocScan.Session.Create -{ - +{ public class SessionSpecificationBuilder { private readonly List _requestedChecks = new List(); @@ -23,7 +21,8 @@ public class SessionSpecificationBuilder private object _identityProfileRequirements; private object _subject; private bool _createIdentityProfilePreview; - private AdvancedIdentityProfile _advancedIdentityProfileRequirements; + private object _advancedIdentityProfileRequirements; + private ResourceCreationContainer _resources; /// /// Sets the client session token TTL (time-to-live) @@ -183,12 +182,23 @@ public SessionSpecificationBuilder WithCreateIdentityProfilePreview(bool createI /// /// The Advanced Identity Profile Requirements for the session /// the builder - public SessionSpecificationBuilder WithAdvancedIdentityProfileRequirements(AdvancedIdentityProfile profile) + public SessionSpecificationBuilder WithAdvancedIdentityProfileRequirements(object advancedIdentityProfileRequirements) { - _advancedIdentityProfileRequirements = profile; + _advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; return this; } - + + /// + /// Sets the for the session + /// + /// The for the session + /// the builder + public SessionSpecificationBuilder WithResources(ResourceCreationContainer resources) + { + _resources = resources; + return this; + } + /// /// Builds the based on the values supplied to the builder /// @@ -209,7 +219,8 @@ public SessionSpecification Build() _identityProfileRequirements, _subject, _createIdentityProfilePreview, - _advancedIdentityProfileRequirements + _advancedIdentityProfileRequirements, + _resources ); } } diff --git a/src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddress.cs b/src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddress.cs new file mode 100644 index 00000000..1b6b98be --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddress.cs @@ -0,0 +1,54 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Create +{ + /// + /// Represents a structured postal address for an applicant profile. + /// + public class StructuredPostalAddress + { + internal StructuredPostalAddress( + int? addressFormat, + string buildingNumber, + string addressLine1, + string townCity, + string postalCode, + string countryIso, + string country, + string formattedAddress) + { + AddressFormat = addressFormat; + BuildingNumber = buildingNumber; + AddressLine1 = addressLine1; + TownCity = townCity; + PostalCode = postalCode; + CountryIso = countryIso; + Country = country; + FormattedAddress = formattedAddress; + } + + [JsonProperty(PropertyName = "address_format")] + public int? AddressFormat { get; } + + [JsonProperty(PropertyName = "building_number")] + public string BuildingNumber { get; } + + [JsonProperty(PropertyName = "address_line1")] + public string AddressLine1 { get; } + + [JsonProperty(PropertyName = "town_city")] + public string TownCity { get; } + + [JsonProperty(PropertyName = "postal_code")] + public string PostalCode { get; } + + [JsonProperty(PropertyName = "country_iso")] + public string CountryIso { get; } + + [JsonProperty(PropertyName = "country")] + public string Country { get; } + + [JsonProperty(PropertyName = "formatted_address")] + public string FormattedAddress { get; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddressBuilder.cs b/src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddressBuilder.cs new file mode 100644 index 00000000..c8748012 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Create/StructuredPostalAddressBuilder.cs @@ -0,0 +1,122 @@ +namespace Yoti.Auth.DocScan.Session.Create +{ + /// + /// Builder for . + /// + public class StructuredPostalAddressBuilder + { + private int? _addressFormat; + private string _buildingNumber; + private string _addressLine1; + private string _townCity; + private string _postalCode; + private string _countryIso; + private string _country; + private string _formattedAddress; + + /// + /// Sets the address format + /// + /// The address format + /// the builder + public StructuredPostalAddressBuilder WithAddressFormat(int addressFormat) + { + _addressFormat = addressFormat; + return this; + } + + /// + /// Sets the building number + /// + /// The building number + /// the builder + public StructuredPostalAddressBuilder WithBuildingNumber(string buildingNumber) + { + _buildingNumber = buildingNumber; + return this; + } + + /// + /// Sets the address line 1 + /// + /// The first address line + /// the builder + public StructuredPostalAddressBuilder WithAddressLine1(string addressLine1) + { + _addressLine1 = addressLine1; + return this; + } + + /// + /// Sets the town or city + /// + /// The town or city + /// the builder + public StructuredPostalAddressBuilder WithTownCity(string townCity) + { + _townCity = townCity; + return this; + } + + /// + /// Sets the postal code + /// + /// The postal code + /// the builder + public StructuredPostalAddressBuilder WithPostalCode(string postalCode) + { + _postalCode = postalCode; + return this; + } + + /// + /// Sets the country ISO code + /// + /// The country ISO code (e.g. "GBR") + /// the builder + public StructuredPostalAddressBuilder WithCountryIso(string countryIso) + { + _countryIso = countryIso; + return this; + } + + /// + /// Sets the country name + /// + /// The country name + /// the builder + public StructuredPostalAddressBuilder WithCountry(string country) + { + _country = country; + return this; + } + + /// + /// Sets the formatted address + /// + /// The formatted address + /// the builder + public StructuredPostalAddressBuilder WithFormattedAddress(string formattedAddress) + { + _formattedAddress = formattedAddress; + return this; + } + + /// + /// Builds the based on the values supplied to the builder. + /// + /// The built + public StructuredPostalAddress Build() + { + return new StructuredPostalAddress( + _addressFormat, + _buildingNumber, + _addressLine1, + _townCity, + _postalCode, + _countryIso, + _country, + _formattedAddress); + } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs index 1c6998dc..bcaecb7b 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponse.cs @@ -9,6 +9,6 @@ public class FailureReasonResponse public string ReasonCode { get; private set; } [JsonProperty(PropertyName = "requirements_not_met_details")] - public List RequirementNotMetDetails { get; private set; } + public List RequirementsNotMetDetails { get; private set; } } } diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponse.cs new file mode 100644 index 00000000..d820ce11 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponse.cs @@ -0,0 +1,20 @@ +using System; +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Retrieve.Resource +{ + /// + /// Applicant Profile Resource Response wrapping a + /// + public class ApplicantProfileResourceResponse : ResourceResponse + { + [JsonProperty(PropertyName = "media")] + public MediaResponse Media { get; private set; } + + [JsonProperty(PropertyName = "created_at")] + public DateTime? CreatedAt { get; private set; } + + [JsonProperty(PropertyName = "last_updated")] + public DateTime? LastUpdated { get; private set; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ResourceContainer.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ResourceContainer.cs index 0e851edc..eeef5cd9 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ResourceContainer.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ResourceContainer.cs @@ -17,6 +17,12 @@ public class ResourceContainer [JsonProperty(PropertyName = "face_capture")] public List FaceCapture { get; internal set; } + [JsonProperty(PropertyName = "share_codes")] + public List ShareCodes { get; internal set; } + + [JsonProperty(PropertyName = "applicant_profiles")] + public List ApplicantProfiles { get; internal set; } + public List ZoomLivenessResources { get diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponse.cs new file mode 100644 index 00000000..d0220011 --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponse.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Yoti.Auth.DocScan.Session.Retrieve.Task; + +namespace Yoti.Auth.DocScan.Session.Retrieve.Resource +{ + /// + /// Represents a Share Code resource for a given session + /// + public class ShareCodeResourceResponse : ResourceResponse + { + [JsonProperty(PropertyName = "created_at")] + public string CreatedAt { get; internal set; } + + [JsonProperty(PropertyName = "last_updated")] + public string LastUpdated { get; internal set; } + + [JsonProperty(PropertyName = "lookup_profile")] + public ShareCodeMediaResponse LookupProfile { get; internal set; } + + [JsonProperty(PropertyName = "returned_profile")] + public ShareCodeMediaResponse ReturnedProfile { get; internal set; } + + [JsonProperty(PropertyName = "id_photo")] + public ShareCodeMediaResponse IdPhoto { get; internal set; } + + [JsonProperty(PropertyName = "file")] + public ShareCodeMediaResponse File { get; internal set; } + + /// + /// Filters the tasks for the verify share code tasks associated with this resource + /// + /// Returns a list of verify share code tasks + public List GetVerifyShareCodeTasks() + { + if (Tasks == null) + return new List(); + + return Tasks.OfType().ToList(); + } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/ShareCodeMediaResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/ShareCodeMediaResponse.cs new file mode 100644 index 00000000..37a5c5bc --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/ShareCodeMediaResponse.cs @@ -0,0 +1,13 @@ +using Newtonsoft.Json; + +namespace Yoti.Auth.DocScan.Session.Retrieve +{ + /// + /// Represents a media wrapper used within share code resources + /// + public class ShareCodeMediaResponse + { + [JsonProperty(PropertyName = "media")] + public MediaResponse Media { get; internal set; } + } +} diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/Task/TaskResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/Task/TaskResponse.cs index 07e07e68..8de12f37 100644 --- a/src/Yoti.Auth/DocScan/Session/Retrieve/Task/TaskResponse.cs +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/Task/TaskResponse.cs @@ -11,6 +11,7 @@ namespace Yoti.Auth.DocScan.Session.Retrieve.Task [JsonConverter(typeof(JsonSubtypes), "type")] [JsonSubtypes.KnownSubType(typeof(TextExtractionTaskResponse), Constants.DocScanConstants.IdDocumentTextDataExtraction)] [JsonSubtypes.KnownSubType(typeof(SupplementaryDocTextExtractionTaskResponse), Constants.DocScanConstants.SupplementaryDocumentTextDataExtraction)] + [JsonSubtypes.KnownSubType(typeof(VerifyShareCodeTaskResponse), Constants.DocScanConstants.VerifyShareCodeTask)] public class TaskResponse { [JsonProperty(PropertyName = "id")] diff --git a/src/Yoti.Auth/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponse.cs b/src/Yoti.Auth/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponse.cs new file mode 100644 index 00000000..bf5d092e --- /dev/null +++ b/src/Yoti.Auth/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponse.cs @@ -0,0 +1,9 @@ +namespace Yoti.Auth.DocScan.Session.Retrieve.Task +{ + /// + /// Represents a Verify Share Code task response + /// + public class VerifyShareCodeTaskResponse : TaskResponse + { + } +} diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index f231369c..31378ca5 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -19,7 +19,7 @@ False latest true - 3.17.0 + 3.19.0
diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs index df58e1e9..0e43838f 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs @@ -128,7 +128,7 @@ public void CreateQrCodeShouldFailWithNullHttpClient() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(null, _apiURL, _sdkID, _keyPair, _sessionID).Wait(); + DigitalIdentityService.CreateQrCode(null, _apiURL, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); @@ -140,7 +140,7 @@ public void CreateQrCodeShouldFailWithNullApiUrl() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(_httpClient, null, _sdkID, _keyPair, _sessionID).Wait(); + DigitalIdentityService.CreateQrCode(_httpClient, null, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); @@ -152,7 +152,7 @@ public void CreateQrCodeShouldFailWithNullSdkId() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID).Wait(); + DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID, _someCreateQrRequest).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); @@ -164,7 +164,7 @@ public void CreateQrCodeShouldFailWithNullKeyPair() { var aggregateException = Assert.ThrowsException(() => { - DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID).Wait(); + DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID, _someCreateQrRequest).Wait(); }); Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/ErrorReasonTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/ErrorReasonTests.cs new file mode 100644 index 00000000..800394ca --- /dev/null +++ b/test/Yoti.Auth.Tests/DigitalIdentity/ErrorReasonTests.cs @@ -0,0 +1,53 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.DigitalIdentity; + +namespace Yoti.DigitalIdentity.Tests +{ + [TestClass] + public class ErrorReasonTests + { + [TestMethod] + public void Deserialize_ValidJson_CreatesErrorReason() + { + var json = @" + { + ""requirements_not_met_details"": [ + { + ""failure_type"": ""ID_DOCUMENT_COUNTRY"", + ""details"": ""NOT_APPLICABLE_FOR_SCHEME"", + ""audit_id"": ""97001564-a18a-4afd-bf19-3ffacc88abbb"", + ""document_country_iso_code"": ""IRL"", + ""document_type"": ""PASSPORT"" + } + ] + }"; + + var errorReason = JsonConvert.DeserializeObject(json); + + Assert.IsNotNull(errorReason); + Assert.IsNotNull(errorReason.RequirementsNotMetDetails); + Assert.AreEqual(1, errorReason.RequirementsNotMetDetails.Count); + Assert.AreEqual("ID_DOCUMENT_COUNTRY", errorReason.RequirementsNotMetDetails[0].FailureType); + Assert.AreEqual("NOT_APPLICABLE_FOR_SCHEME", errorReason.RequirementsNotMetDetails[0].Details); + Assert.AreEqual("97001564-a18a-4afd-bf19-3ffacc88abbb", errorReason.RequirementsNotMetDetails[0].AuditId); + Assert.AreEqual("IRL", errorReason.RequirementsNotMetDetails[0].DocumentCountryIsoCode); + Assert.AreEqual("PASSPORT", errorReason.RequirementsNotMetDetails[0].DocumentType); + } + + [TestMethod] + public void Deserialize_EmptyArray_CreatesEmptyList() + { + var json = @" + { + ""requirements_not_met_details"": [] + }"; + + var errorReason = JsonConvert.DeserializeObject(json); + + Assert.IsNotNull(errorReason); + Assert.IsNotNull(errorReason.RequirementsNotMetDetails); + Assert.AreEqual(0, errorReason.RequirementsNotMetDetails.Count); + } + } +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs index 08bfcee2..b1fec0d3 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Policy/DynamicPolicyBuilderTests.cs @@ -340,4 +340,6 @@ public void ShouldBuildWithAdvancedIdentityProfileRequirements() Assert.AreEqual(advancedIdentityProfileRequirements, result.AdvancedIdentityProfileRequirements); } } + + } diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs deleted file mode 100644 index 7f3486c4..00000000 --- a/test/Yoti.Auth.Tests/DigitalIdentity/ShareSessionHeaderTests.cs +++ /dev/null @@ -1,262 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Moq; -using Moq.Protected; -using Yoti.Auth.DigitalIdentity; -using Yoti.Auth.DigitalIdentity.Policy; -using Yoti.Auth.Tests.Common; - -namespace Yoti.Auth.Tests.DigitalIdentity -{ - [TestClass] - public class ShareSessionHeaderTests - { - private const string SdkId = "test-sdk-id"; - - private static Mock SetupMockMessageHandler(HttpStatusCode httpStatusCode, string responseContent, Dictionary headers = null) - { - var response = new HttpResponseMessage - { - StatusCode = httpStatusCode, - Content = new StringContent(responseContent) - }; - - // Add custom headers if provided - if (headers != null) - { - foreach (var header in headers) - { - response.Headers.TryAddWithoutValidation(header.Key, header.Value); - } - } - - var handlerMock = new Mock(); - handlerMock - .Protected() - .Setup>( - "SendAsync", - ItExpr.IsAny(), - ItExpr.IsAny() - ) - .ReturnsAsync(response) - .Verifiable(); - return handlerMock; - } - - [TestMethod] - public void CreateShareSession_ShouldReturnXRequestIdHeader() - { - // Arrange - string requestId = "test-request-id-12345"; - var headers = new Dictionary - { - { "X-Request-ID", requestId }, - { "Content-Type", "application/json" } - }; - - Mock handlerMock = SetupMockMessageHandler( - HttpStatusCode.OK, - "{\"id\":\"session-123\",\"status\":\"CREATED\"}", - headers); - - var httpClient = new HttpClient(handlerMock.Object); - - var yotiClient = new Auth.DigitalIdentityClient( - httpClient, - SdkId, - KeyPair.Get()); - - var policy = new PolicyBuilder() - .Build(); - - var sessionRequest = new ShareSessionRequestBuilder() - .WithPolicy(policy) - .WithRedirectUri("https://example.com/callback") - .Build(); - - // Act - var result = yotiClient.CreateShareSession(sessionRequest); - - // Assert - Assert.IsNotNull(result); - Assert.IsNotNull(result.Headers); - - // Check if X-Request-ID header exists - var xRequestId = result.GetHeaderValue("X-Request-ID"); - Assert.IsNotNull(xRequestId); - Assert.AreEqual(requestId, xRequestId); - - // Also verify through the convenience property - Assert.AreEqual(requestId, result.RequestId); - - // Print all headers for debugging - Console.WriteLine("=== Response Headers ==="); - foreach (var header in result.Headers) - { - Console.WriteLine($"{header.Key}: {string.Join(", ", header.Value)}"); - } - Console.WriteLine("========================"); - Console.WriteLine($"✓ X-Request-ID verified: {result.RequestId}"); - } - - [TestMethod] - public void CreateShareSession_ShouldReturnAllExpectedHeaders() - { - // Arrange - var expectedHeaders = new Dictionary - { - { "X-Request-ID", "req-123456" }, - { "Content-Type", "application/json" }, - { "X-Yoti-SDK-Version", "1.0.0" }, - { "Cache-Control", "no-cache" } - }; - - Mock handlerMock = SetupMockMessageHandler( - HttpStatusCode.OK, - "{\"id\":\"session-456\",\"status\":\"CREATED\"}", - expectedHeaders); - - var httpClient = new HttpClient(handlerMock.Object); - - var yotiClient = new Auth.DigitalIdentityClient( - httpClient, - SdkId, - KeyPair.Get()); - - var policy = new PolicyBuilder() - .Build(); - - var sessionRequest = new ShareSessionRequestBuilder() - .WithPolicy(policy) - .WithRedirectUri("https://example.com/callback") - .Build(); - - // Act - var result = yotiClient.CreateShareSession(sessionRequest); - - // Assert - Assert.IsNotNull(result); - Assert.IsNotNull(result.Headers); - - // Verify all expected headers are present - foreach (var expectedHeader in expectedHeaders) - { - var headerValue = result.GetHeaderValue(expectedHeader.Key); - Assert.IsNotNull(headerValue, $"Header '{expectedHeader.Key}' not found"); - Console.WriteLine($"✓ Header '{expectedHeader.Key}' found: {headerValue}"); - } - - // Specifically verify X-Request-ID - Assert.AreEqual("req-123456", result.RequestId); - Console.WriteLine($"\n✓ X-Request-ID verified: {result.RequestId}"); - } - - [TestMethod] - public void CreateShareSession_HeadersShouldBeCaseInsensitive() - { - // Arrange - string requestId = "case-test-id"; - var headers = new Dictionary - { - { "x-request-id", requestId }, // lowercase - { "Content-Type", "application/json" } - }; - - Mock handlerMock = SetupMockMessageHandler( - HttpStatusCode.OK, - "{\"id\":\"session-789\",\"status\":\"CREATED\"}", - headers); - - var httpClient = new HttpClient(handlerMock.Object); - - var yotiClient = new Auth.DigitalIdentityClient( - httpClient, - SdkId, - KeyPair.Get()); - - var policy = new PolicyBuilder() - .Build(); - - var sessionRequest = new ShareSessionRequestBuilder() - .WithPolicy(policy) - .WithRedirectUri("https://example.com/callback") - .Build(); - - // Act - var result = yotiClient.CreateShareSession(sessionRequest); - - // Assert - should find header regardless of case - Assert.IsNotNull(result.RequestId); - Assert.AreEqual(requestId, result.RequestId); - - // Test various case combinations - Assert.AreEqual(requestId, result.GetHeaderValue("X-Request-ID")); - Assert.AreEqual(requestId, result.GetHeaderValue("x-request-id")); - Assert.AreEqual(requestId, result.GetHeaderValue("X-REQUEST-ID")); - - Console.WriteLine($"✓ Case-insensitive header lookup working: {result.RequestId}"); - } - - [TestMethod] - [Ignore("GetShareReceipt requires complex multi-step mocking - needs separate implementation")] - public void GetShareReceipt_ShouldReturnXRequestIdHeader() - { - // Arrange - string requestId = "receipt-request-id-789"; - var headers = new Dictionary - { - { "X-Request-ID", requestId } - }; - - var response = new HttpResponseMessage - { - StatusCode = HttpStatusCode.OK, - Content = new StringContent("{\"id\":\"receipt-123\",\"userContent\":{}}") - }; - - // Add custom headers - foreach (var header in headers) - { - response.Headers.TryAddWithoutValidation(header.Key, header.Value); - } - - var handlerMock = new Mock(); - handlerMock - .Protected() - .Setup>( - "SendAsync", - ItExpr.IsAny(), - ItExpr.IsAny() - ) - .ReturnsAsync(response) - .Verifiable(); - - var httpClient = new HttpClient(handlerMock.Object); - - var yotiClient = new Auth.DigitalIdentityClient( - httpClient, - SdkId, - KeyPair.Get()); - - // Act - var result = yotiClient.GetShareReceipt("test-receipt-id"); - - // Assert - Assert.IsNotNull(result); - Assert.IsNotNull(result.Headers); - - var xRequestId = result.GetHeaderValue("X-Request-ID"); - Assert.IsNotNull(xRequestId); - Assert.AreEqual(requestId, xRequestId); - Assert.AreEqual(requestId, result.RequestId); - - Console.WriteLine($"✓ GetShareReceipt X-Request-ID: {result.RequestId}"); - } - } -} diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs index b55406e3..8dddfe73 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -40,20 +40,66 @@ public async Task CreateSessionAsyncShouldReturnCorrectValues() } [TestMethod] - public void TestGetShareReceipt() + public async Task CreateQrCodeAsyncShouldReturnCorrectValues() { - Uri apiUrl = new Uri("https://example.com/api"); - string receiptId = "some_receiptid"; - string refId = "NpdmVVGC-28356678-c236-4518-9de4-7a93009ccaf0-c5f92f2a-5539-453e-babc-9b06e1d6b7de"; + string qrCodeId = "test-qr-code-id"; + string qrCodeUri = "https://code.yoti.com/CAEaJDlkOGI4ZGFjLTEyMzQtNTY3OC05MDEyLWFiY2RlZjEyMzQ1Ng=="; - Mock handlerMock = SetupMockMessageHandler( - HttpStatusCode.OK, - "{\"id\":\"" + refId + "\",\"status\":\"SOME_STATUS\",\"expiry\":\"SOME_EXPIRY\",\"created\":\"SOME_CREATED\",\"updated\":\"SOME_UPDATED\",\"qrCode\":{\"id\":\"SOME_QRCODE_ID\"},\"receipt\":{\"id\":\"SOME_RECEIPT_ID\"}}"); - - var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); - - SharedReceiptResponse response = engine.GetShareReceipt(SdkId, _keyPair, apiUrl, receiptId).Result; - Assert.IsNull(response.Error); + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + qrCodeId + "\",\"uri\":\"" + qrCodeUri + "\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + QrRequest qrRequest = TestTools.CreateQr.CreateQrStandard(); + string sessionId = "test-session-id"; + + CreateQrResult result = await engine.CreateQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId, qrRequest); + + Assert.IsNotNull(result); + Assert.AreEqual(qrCodeId, result.Id); + Assert.AreEqual(qrCodeUri, result.Uri); + } + + [TestMethod] + public async Task GetQrCodeAsyncShouldReturnCorrectValues() + { + string qrCodeId = "test-qr-code-id"; + string expiry = "2025-12-31T23:59:59Z"; + string policy = "test-policy"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + qrCodeId + "\",\"expiry\":\"" + expiry + "\",\"policy\":\"" + policy + "\",\"session\":{\"id\":\"session-123\",\"status\":\"ACTIVE\"},\"redirectUri\":\"https://example.com/redirect\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + GetQrCodeResult result = await engine.GetQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), qrCodeId); + + Assert.IsNotNull(result); + Assert.AreEqual(qrCodeId, result.Id); + Assert.AreEqual(expiry, result.Expiry); + Assert.AreEqual(policy, result.Policy); + } + + [TestMethod] + public async Task GetSessionShouldReturnCorrectValues() + { + string sessionId = "test-session-id"; + string status = "ACTIVE"; + string expiry = "2025-12-31T23:59:59Z"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + sessionId + "\",\"status\":\"" + status + "\",\"expiry\":\"" + expiry + "\",\"created\":\"2025-06-27T10:00:00Z\",\"updated\":\"2025-06-27T11:00:00Z\",\"qrCode\":{\"id\":\"qr-123\"},\"receipt\":{\"id\":\"receipt-123\"}}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + GetSessionResult result = await engine.GetSession(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId); + + Assert.IsNotNull(result); + Assert.AreEqual(sessionId, result.Id); + Assert.AreEqual(status, result.Status); + Assert.AreEqual(expiry, result.Expiry); } [DataTestMethod] @@ -81,9 +127,107 @@ public void CreateShareSessionNonSuccessStatusCodesShouldThrowException(HttpStat Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } + [DataTestMethod] + [DataRow(HttpStatusCode.BadRequest)] + [DataRow(HttpStatusCode.Unauthorized)] + [DataRow(HttpStatusCode.InternalServerError)] + [DataRow(HttpStatusCode.RequestTimeout)] + [DataRow(HttpStatusCode.NotFound)] + [DataRow(HttpStatusCode.Forbidden)] + public void GetShareReceiptNonSuccessStatusCodesShouldThrowException(HttpStatusCode httpStatusCode) + { + Mock handlerMock = SetupMockMessageHandler( + httpStatusCode, + "{\"status\":\"bad\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + Uri apiUrl = new Uri("https://example.com/api"); + string receiptId = "some_receiptid"; + + var aggregateException = Assert.ThrowsException(() => + { + engine.GetShareReceipt(SdkId, _keyPair, apiUrl, receiptId).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + } + + [DataTestMethod] + [DataRow(HttpStatusCode.BadRequest)] + [DataRow(HttpStatusCode.Unauthorized)] + [DataRow(HttpStatusCode.InternalServerError)] + [DataRow(HttpStatusCode.RequestTimeout)] + [DataRow(HttpStatusCode.NotFound)] + [DataRow(HttpStatusCode.Forbidden)] + public void CreateQrCodeAsyncNonSuccessStatusCodesShouldThrowException(HttpStatusCode httpStatusCode) + { + Mock handlerMock = SetupMockMessageHandler( + httpStatusCode, + "{\"status\":\"bad\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + QrRequest qrRequest = TestTools.CreateQr.CreateQrStandard(); + string sessionId = "test-session-id"; + + var aggregateException = Assert.ThrowsException(() => + { + engine.CreateQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId, qrRequest).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + } + + [DataTestMethod] + [DataRow(HttpStatusCode.BadRequest)] + [DataRow(HttpStatusCode.Unauthorized)] + [DataRow(HttpStatusCode.InternalServerError)] + [DataRow(HttpStatusCode.RequestTimeout)] + [DataRow(HttpStatusCode.NotFound)] + [DataRow(HttpStatusCode.Forbidden)] + public void GetQrCodeAsyncNonSuccessStatusCodesShouldThrowException(HttpStatusCode httpStatusCode) + { + Mock handlerMock = SetupMockMessageHandler( + httpStatusCode, + "{\"status\":\"bad\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + string qrCodeId = "test-qr-code-id"; + + var aggregateException = Assert.ThrowsException(() => + { + engine.GetQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), qrCodeId).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + } + + [DataTestMethod] + [DataRow(HttpStatusCode.BadRequest)] + [DataRow(HttpStatusCode.Unauthorized)] + [DataRow(HttpStatusCode.InternalServerError)] + [DataRow(HttpStatusCode.RequestTimeout)] + [DataRow(HttpStatusCode.NotFound)] + [DataRow(HttpStatusCode.Forbidden)] + public void GetSessionNonSuccessStatusCodesShouldThrowException(HttpStatusCode httpStatusCode) + { + Mock handlerMock = SetupMockMessageHandler( + httpStatusCode, + "{\"status\":\"bad\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + string sessionId = "test-session-id"; + + var aggregateException = Assert.ThrowsException(() => + { + engine.GetSession(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId).Wait(); + }); + + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + } + private static Mock SetupMockMessageHandler(HttpStatusCode httpStatusCode, string responseContent) { - var handlerMock = new Mock(MockBehavior.Strict); + var handlerMock = new Mock(MockBehavior.Loose); handlerMock .Protected() .Setup>( @@ -98,7 +242,147 @@ private static Mock SetupMockMessageHandler(HttpStatusCode h }) .Callback((http, token) => _httpRequestMessage = http) .Verifiable(); + return handlerMock; } + + [TestMethod] + public void ConstructorShouldAcceptHttpClient() + { + var httpClient = new HttpClient(); + + var engine = new DigitalIdentityClientEngine(httpClient); + + Assert.IsNotNull(engine); + } + + [TestMethod] + public async Task GetShareReceiptShouldThrowWhenReceiptIdIsEmpty() + { + var httpClient = new HttpClient(); + var engine = new DigitalIdentityClientEngine(httpClient); + Uri apiUrl = new Uri("https://example.com/api"); + + await Assert.ThrowsExceptionAsync(() => + engine.GetShareReceipt(SdkId, _keyPair, apiUrl, "")); + } + + [TestMethod] + public async Task CreateShareSessionAsyncShouldHandleEmptyResponse() + { + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + ShareSessionRequest shareSessionRequest = TestTools.ShareSession.CreateStandardShareSessionRequest(); + + ShareSessionResult shareSessionResult = await engine.CreateShareSessionAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), shareSessionRequest); + + Assert.IsNotNull(shareSessionResult); + } + + [TestMethod] + public async Task CreateQrCodeAsyncShouldHandleEmptyResponse() + { + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + QrRequest qrRequest = TestTools.CreateQr.CreateQrStandard(); + string sessionId = "test-session-id"; + + CreateQrResult result = await engine.CreateQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId, qrRequest); + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task GetQrCodeAsyncShouldHandleEmptyResponse() + { + string qrCodeId = "test-qr-code-id"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + GetQrCodeResult result = await engine.GetQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), qrCodeId); + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task GetSessionShouldHandleEmptyResponse() + { + string sessionId = "test-session-id"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + GetSessionResult result = await engine.GetSession(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId); + + Assert.IsNotNull(result); + } + + [TestMethod] + public async Task CreateShareSessionAsyncShouldHandleSpecialCharactersInId() + { + string refId = "session-with-special-chars-123456"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + refId + "\",\"status\":\"ACTIVE\"}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + ShareSessionRequest shareSessionRequest = TestTools.ShareSession.CreateStandardShareSessionRequest(); + + ShareSessionResult shareSessionResult = await engine.CreateShareSessionAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), shareSessionRequest); + + Assert.IsNotNull(shareSessionResult); + Assert.AreEqual(refId, shareSessionResult.Id); + } + + [TestMethod] + public async Task GetQrCodeAsyncShouldHandleNullSessionInResponse() + { + string qrCodeId = "test-qr-code-id"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + qrCodeId + "\",\"session\":null}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + GetQrCodeResult result = await engine.GetQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), qrCodeId); + + Assert.IsNotNull(result); + Assert.AreEqual(qrCodeId, result.Id); + Assert.IsNull(result.Session); + } + + [TestMethod] + public async Task GetSessionShouldHandleNullQrCodeAndReceiptInResponse() + { + string sessionId = "test-session-id"; + + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"" + sessionId + "\",\"qrCode\":null,\"receipt\":null}"); + + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + + GetSessionResult result = await engine.GetSession(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId); + + Assert.IsNotNull(result); + Assert.AreEqual(sessionId, result.Id); + Assert.IsNull(result.QrCode); + Assert.IsNull(result.Receipt); + } } } diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/ApplicantProfileBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/ApplicantProfileBuilderTests.cs new file mode 100644 index 00000000..ceed7f89 --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/ApplicantProfileBuilderTests.cs @@ -0,0 +1,86 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.Tests.DocScan.Session.Create +{ + [TestClass] + public class ApplicantProfileBuilderTests + { + [TestMethod] + public void ShouldBuildWithFullName() + { + var profile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .Build(); + + Assert.AreEqual("John Doe", profile.FullName); + } + + [TestMethod] + public void ShouldBuildWithDateOfBirth() + { + var profile = new ApplicantProfileBuilder() + .WithDateOfBirth("1988-11-02") + .Build(); + + Assert.AreEqual("1988-11-02", profile.DateOfBirth); + } + + [TestMethod] + public void ShouldBuildWithNamePrefix() + { + var profile = new ApplicantProfileBuilder() + .WithNamePrefix("Mr") + .Build(); + + Assert.AreEqual("Mr", profile.NamePrefix); + } + + [TestMethod] + public void ShouldBuildWithStructuredPostalAddress() + { + var address = new StructuredPostalAddressBuilder() + .WithBuildingNumber("74") + .WithPostalCode("E143RN") + .Build(); + + var profile = new ApplicantProfileBuilder() + .WithStructuredPostalAddress(address) + .Build(); + + Assert.AreEqual("74", profile.StructuredPostalAddress.BuildingNumber); + Assert.AreEqual("E143RN", profile.StructuredPostalAddress.PostalCode); + } + + [TestMethod] + public void ShouldCorrectlySerializeWithAllProperties() + { + var address = new StructuredPostalAddressBuilder() + .WithAddressFormat(1) + .WithBuildingNumber("74") + .WithAddressLine1("AddressLine1") + .WithTownCity("CityName") + .WithPostalCode("E143RN") + .WithCountryIso("GBR") + .WithCountry("United Kingdom") + .Build(); + + var profile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .WithDateOfBirth("1988-11-02") + .WithNamePrefix("Mr") + .WithStructuredPostalAddress(address) + .Build(); + + string json = JsonConvert.SerializeObject(profile); + + Assert.IsTrue(json.Contains("\"full_name\":\"John Doe\"")); + Assert.IsTrue(json.Contains("\"date_of_birth\":\"1988-11-02\"")); + Assert.IsTrue(json.Contains("\"name_prefix\":\"Mr\"")); + Assert.IsTrue(json.Contains("\"structured_postal_address\"")); + Assert.IsTrue(json.Contains("\"building_number\":\"74\"")); + Assert.IsTrue(json.Contains("\"country_iso\":\"GBR\"")); + } + } +} diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/ResourceCreationContainerBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/ResourceCreationContainerBuilderTests.cs new file mode 100644 index 00000000..14518c43 --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/ResourceCreationContainerBuilderTests.cs @@ -0,0 +1,74 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.Tests.DocScan.Session.Create +{ + [TestClass] + public class ResourceCreationContainerBuilderTests + { + [TestMethod] + public void ShouldBuildWithApplicantProfile() + { + var applicantProfile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .WithDateOfBirth("1988-11-02") + .Build(); + + ResourceCreationContainer container = + new ResourceCreationContainerBuilder() + .WithApplicantProfile(applicantProfile) + .Build(); + + Assert.AreEqual(applicantProfile, container.ApplicantProfile); + Assert.AreEqual("John Doe", container.ApplicantProfile.FullName); + Assert.AreEqual("1988-11-02", container.ApplicantProfile.DateOfBirth); + } + + [TestMethod] + public void ShouldCorrectlySerializeApplicantProfile() + { + var address = new StructuredPostalAddressBuilder() + .WithAddressFormat(1) + .WithBuildingNumber("74") + .WithAddressLine1("AddressLine1") + .WithTownCity("CityName") + .WithPostalCode("E143RN") + .WithCountryIso("GBR") + .WithCountry("United Kingdom") + .Build(); + + var applicantProfile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .WithDateOfBirth("1988-11-02") + .WithNamePrefix("Mr") + .WithStructuredPostalAddress(address) + .Build(); + + ResourceCreationContainer container = + new ResourceCreationContainerBuilder() + .WithApplicantProfile(applicantProfile) + .Build(); + + string json = JsonConvert.SerializeObject(container); + + Assert.IsTrue(json.Contains("\"applicant_profile\"")); + Assert.IsTrue(json.Contains("\"full_name\":\"John Doe\"")); + Assert.IsTrue(json.Contains("\"date_of_birth\":\"1988-11-02\"")); + Assert.IsTrue(json.Contains("\"name_prefix\":\"Mr\"")); + Assert.IsTrue(json.Contains("\"structured_postal_address\"")); + Assert.IsTrue(json.Contains("\"building_number\":\"74\"")); + Assert.IsTrue(json.Contains("\"country_iso\":\"GBR\"")); + } + + [TestMethod] + public void ShouldBuildWithNullApplicantProfile() + { + ResourceCreationContainer container = + new ResourceCreationContainerBuilder() + .Build(); + + Assert.IsNull(container.ApplicantProfile); + } + } +} diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs index 698694dc..871165a2 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/SessionSpecificationBuilderTests.cs @@ -346,7 +346,7 @@ public void ShouldBuildWithIdentityProfilePreview() [TestMethod] public void ShouldBuildWithAdvancedIdentityProfilePreview() { - AdvancedIdentityProfile advancedIdentityProfileRequirements = IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); + object advancedIdentityProfileRequirements = IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); SessionSpecification sessionSpec = new SessionSpecificationBuilder() @@ -360,7 +360,7 @@ public void ShouldBuildWithAdvancedIdentityProfilePreview() [TestMethod] public void ShouldBuildWithAdvancedIdentityProfileRequirements() { - AdvancedIdentityProfile advancedIdentityProfileRequirements = IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); + object advancedIdentityProfileRequirements = IdentityProfiles.CreateStandardAdvancedIdentityProfileRequirements(); SessionSpecification sessionSpec = new SessionSpecificationBuilder() @@ -370,7 +370,7 @@ public void ShouldBuildWithAdvancedIdentityProfileRequirements() Assert.AreEqual(advancedIdentityProfileRequirements, sessionSpec.AdvancedIdentityProfileRequirements); } - [TestMethod] + [TestMethod] public void ShouldNotImplicitlySetAValueForIdentityProfileRequirements() { SessionSpecification sessionSpec = @@ -402,5 +402,62 @@ public void ShouldNotImplicitlySetAValueForSubject() Assert.IsNull(sessionSpec.Subject); } + + [TestMethod] + public void ShouldBuildWithResources() + { + var applicantProfile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .WithDateOfBirth("1988-11-02") + .Build(); + + ResourceCreationContainer resources = + new ResourceCreationContainerBuilder() + .WithApplicantProfile(applicantProfile) + .Build(); + + SessionSpecification sessionSpec = + new SessionSpecificationBuilder() + .WithResources(resources) + .Build(); + + Assert.AreEqual(resources, sessionSpec.Resources); + Assert.AreEqual("John Doe", sessionSpec.Resources.ApplicantProfile.FullName); + } + + [TestMethod] + public void ShouldNotImplicitlySetAValueForResources() + { + SessionSpecification sessionSpec = + new SessionSpecificationBuilder() + .Build(); + + Assert.IsNull(sessionSpec.Resources); + } + + [TestMethod] + public void ShouldCorrectlySerializeResources() + { + var applicantProfile = new ApplicantProfileBuilder() + .WithFullName("John Doe") + .WithDateOfBirth("1988-11-02") + .Build(); + + ResourceCreationContainer resources = + new ResourceCreationContainerBuilder() + .WithApplicantProfile(applicantProfile) + .Build(); + + SessionSpecification sessionSpec = + new SessionSpecificationBuilder() + .WithResources(resources) + .Build(); + + string json = JsonConvert.SerializeObject(sessionSpec); + + Assert.IsTrue(json.Contains("\"resources\":{\"applicant_profile\":{")); + Assert.IsTrue(json.Contains("\"full_name\":\"John Doe\"")); + Assert.IsTrue(json.Contains("\"date_of_birth\":\"1988-11-02\"")); + } } -} +} \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/StructuredPostalAddressBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/StructuredPostalAddressBuilderTests.cs new file mode 100644 index 00000000..e9ca7d21 --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/StructuredPostalAddressBuilderTests.cs @@ -0,0 +1,118 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.DocScan.Session.Create; + +namespace Yoti.Auth.Tests.DocScan.Session.Create +{ + [TestClass] + public class StructuredPostalAddressBuilderTests + { + [TestMethod] + public void ShouldBuildWithAddressFormat() + { + var address = new StructuredPostalAddressBuilder() + .WithAddressFormat(1) + .Build(); + + Assert.AreEqual(1, address.AddressFormat); + } + + [TestMethod] + public void ShouldBuildWithBuildingNumber() + { + var address = new StructuredPostalAddressBuilder() + .WithBuildingNumber("74") + .Build(); + + Assert.AreEqual("74", address.BuildingNumber); + } + + [TestMethod] + public void ShouldBuildWithAddressLine1() + { + var address = new StructuredPostalAddressBuilder() + .WithAddressLine1("AddressLine1") + .Build(); + + Assert.AreEqual("AddressLine1", address.AddressLine1); + } + + [TestMethod] + public void ShouldBuildWithTownCity() + { + var address = new StructuredPostalAddressBuilder() + .WithTownCity("CityName") + .Build(); + + Assert.AreEqual("CityName", address.TownCity); + } + + [TestMethod] + public void ShouldBuildWithPostalCode() + { + var address = new StructuredPostalAddressBuilder() + .WithPostalCode("E143RN") + .Build(); + + Assert.AreEqual("E143RN", address.PostalCode); + } + + [TestMethod] + public void ShouldBuildWithCountryIso() + { + var address = new StructuredPostalAddressBuilder() + .WithCountryIso("GBR") + .Build(); + + Assert.AreEqual("GBR", address.CountryIso); + } + + [TestMethod] + public void ShouldBuildWithCountry() + { + var address = new StructuredPostalAddressBuilder() + .WithCountry("United Kingdom") + .Build(); + + Assert.AreEqual("United Kingdom", address.Country); + } + + [TestMethod] + public void ShouldBuildWithFormattedAddress() + { + var formattedAddress = "74\nAddressLine1\nCityName\nE143RN\nGBR"; + + var address = new StructuredPostalAddressBuilder() + .WithFormattedAddress(formattedAddress) + .Build(); + + Assert.AreEqual(formattedAddress, address.FormattedAddress); + } + + [TestMethod] + public void ShouldCorrectlySerializeAllProperties() + { + var address = new StructuredPostalAddressBuilder() + .WithAddressFormat(1) + .WithBuildingNumber("74") + .WithAddressLine1("AddressLine1") + .WithTownCity("CityName") + .WithPostalCode("E143RN") + .WithCountryIso("GBR") + .WithCountry("United Kingdom") + .WithFormattedAddress("74\nAddressLine1\nCityName\nE143RN\nGBR") + .Build(); + + string json = JsonConvert.SerializeObject(address); + + Assert.IsTrue(json.Contains("\"address_format\":1")); + Assert.IsTrue(json.Contains("\"building_number\":\"74\"")); + Assert.IsTrue(json.Contains("\"address_line1\":\"AddressLine1\"")); + Assert.IsTrue(json.Contains("\"town_city\":\"CityName\"")); + Assert.IsTrue(json.Contains("\"postal_code\":\"E143RN\"")); + Assert.IsTrue(json.Contains("\"country_iso\":\"GBR\"")); + Assert.IsTrue(json.Contains("\"country\":\"United Kingdom\"")); + Assert.IsTrue(json.Contains("\"formatted_address\"")); + } + } +} diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs index c44a76e1..d24f3744 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/IdentityProfile/FailureReasonResponseTest.cs @@ -10,30 +10,48 @@ public class FailureReasonResponseTests [TestMethod] public void Deserialize_ValidJson_CreatesFailureReasonResponse() { - // Arrange var json = @" { ""reason_code"": ""CODE123"", - ""requirements_not_met_details"": [{ - ""failure_type"": ""DOCUMENT_EXPIRED"", - ""details"": ""The document has expired."", - ""audit_id"": ""AUDIT123"", - ""document_country_iso_code"": ""USA"", - ""document_type"": ""PASSPORT"" - }] + ""requirements_not_met_details"": [ + { + ""failure_type"": ""DOCUMENT_EXPIRED"", + ""details"": ""The document has expired."", + ""audit_id"": ""AUDIT123"", + ""document_country_iso_code"": ""USA"", + ""document_type"": ""PASSPORT"" + } + ] }"; var response = JsonConvert.DeserializeObject(json); Assert.IsNotNull(response); Assert.AreEqual("CODE123", response.ReasonCode); - Assert.IsNotNull(response.RequirementNotMetDetails); - Assert.AreEqual("DOCUMENT_EXPIRED", response.RequirementNotMetDetails[0].FailureType); - Assert.AreEqual("The document has expired.", response.RequirementNotMetDetails[0].Details); - Assert.AreEqual("AUDIT123", response.RequirementNotMetDetails[0].AuditId); - Assert.AreEqual("USA", response.RequirementNotMetDetails[0].DocumentCountryIsoCode); - Assert.AreEqual("PASSPORT", response.RequirementNotMetDetails[0].DocumentType); + Assert.IsNotNull(response.RequirementsNotMetDetails); + Assert.AreEqual(1, response.RequirementsNotMetDetails.Count); + Assert.AreEqual("DOCUMENT_EXPIRED", response.RequirementsNotMetDetails[0].FailureType); + Assert.AreEqual("The document has expired.", response.RequirementsNotMetDetails[0].Details); + Assert.AreEqual("AUDIT123", response.RequirementsNotMetDetails[0].AuditId); + Assert.AreEqual("USA", response.RequirementsNotMetDetails[0].DocumentCountryIsoCode); + Assert.AreEqual("PASSPORT", response.RequirementsNotMetDetails[0].DocumentType); } - } + [TestMethod] + public void Deserialize_EmptyArray_CreatesEmptyList() + { + var json = @" + { + ""reason_code"": ""CODE456"", + ""requirements_not_met_details"": [] + }"; + + var response = JsonConvert.DeserializeObject(json); + + Assert.IsNotNull(response); + Assert.AreEqual("CODE456", response.ReasonCode); + Assert.IsNotNull(response.RequirementsNotMetDetails); + Assert.AreEqual(0, response.RequirementsNotMetDetails.Count); + } + } } diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponseTests.cs new file mode 100644 index 00000000..a2a8156a --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ApplicantProfileResourceResponseTests.cs @@ -0,0 +1,114 @@ +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.DocScan.Session.Retrieve; +using Yoti.Auth.DocScan.Session.Retrieve.Resource; + +namespace Yoti.Auth.Tests.DocScan.Session.Retrieve.Resource +{ + [TestClass] + public class ApplicantProfileResourceResponseTests + { + private const string ApplicantProfileJson = @"{ + ""resources"": { + ""applicant_profiles"": [ + { + ""id"": ""3fa85f64-5717-4562-b3fc-2c963f66afa6"", + ""source"": { + ""type"": ""END_USER"" + }, + ""media"": { + ""id"": ""media-id-123"", + ""type"": ""IMAGE"", + ""created"": ""2021-06-11T11:39:24Z"", + ""last_updated"": ""2021-06-11T11:39:24Z"" + }, + ""created_at"": ""2021-06-11T11:39:24Z"", + ""last_updated"": ""2021-06-11T12:00:00Z"", + ""tasks"": [] + } + ] + } + }"; + + [TestMethod] + public void ShouldDeserializeApplicantProfilesFromGetSessionResult() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + Assert.IsNotNull(result.Resources); + Assert.IsNotNull(result.Resources.ApplicantProfiles); + Assert.AreEqual(1, result.Resources.ApplicantProfiles.Count); + } + + [TestMethod] + public void ShouldDeserializeApplicantProfileId() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + var applicantProfile = result.Resources.ApplicantProfiles[0]; + Assert.AreEqual("3fa85f64-5717-4562-b3fc-2c963f66afa6", applicantProfile.Id); + } + + [TestMethod] + public void ShouldDeserializeApplicantProfileSource() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + var applicantProfile = result.Resources.ApplicantProfiles[0]; + Assert.IsNotNull(applicantProfile.Source); + Assert.AreEqual("END_USER", applicantProfile.Source.Type); + } + + [TestMethod] + public void ShouldDeserializeApplicantProfileMedia() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + var applicantProfile = result.Resources.ApplicantProfiles[0]; + Assert.IsNotNull(applicantProfile.Media); + Assert.AreEqual("media-id-123", applicantProfile.Media.Id); + Assert.AreEqual("IMAGE", applicantProfile.Media.Type); + } + + [TestMethod] + public void ShouldDeserializeApplicantProfileCreatedAt() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + var applicantProfile = result.Resources.ApplicantProfiles[0]; + Assert.IsNotNull(applicantProfile.CreatedAt); + Assert.AreEqual(new DateTime(2021, 6, 11, 11, 39, 24, DateTimeKind.Utc), applicantProfile.CreatedAt.Value); + } + + [TestMethod] + public void ShouldDeserializeApplicantProfileLastUpdated() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + var applicantProfile = result.Resources.ApplicantProfiles[0]; + Assert.IsNotNull(applicantProfile.LastUpdated); + Assert.AreEqual(new DateTime(2021, 6, 11, 12, 0, 0, DateTimeKind.Utc), applicantProfile.LastUpdated.Value); + } + + [TestMethod] + public void ShouldDeserializeApplicantProfileTasks() + { + var result = JsonConvert.DeserializeObject(ApplicantProfileJson); + + var applicantProfile = result.Resources.ApplicantProfiles[0]; + Assert.IsNotNull(applicantProfile.Tasks); + Assert.AreEqual(0, applicantProfile.Tasks.Count); + } + + [TestMethod] + public void ShouldHandleNullApplicantProfiles() + { + const string jsonWithoutApplicantProfiles = @"{ ""resources"": {} }"; + var result = JsonConvert.DeserializeObject(jsonWithoutApplicantProfiles); + + Assert.IsNotNull(result.Resources); + Assert.IsNull(result.Resources.ApplicantProfiles); + } + } +} diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponseTests.cs new file mode 100644 index 00000000..e5b9f439 --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/ShareCodeResourceResponseTests.cs @@ -0,0 +1,158 @@ +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Yoti.Auth.DocScan.Session.Retrieve; +using Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Source; +using Yoti.Auth.DocScan.Session.Retrieve.Resource; +using Yoti.Auth.DocScan.Session.Retrieve.Task; + +namespace Yoti.Auth.Tests.DocScan.Session.Retrieve.Resource +{ + [TestClass] + public class ShareCodeResourceResponseTests + { + [TestMethod] + public void ShouldFilterVerifyShareCodeTasks() + { + var tasks = new List + { + new VerifyShareCodeTaskResponse(), + new TaskResponse() + }; + + var shareCodes = new List + { + new ShareCodeResourceResponse { Tasks = tasks } + }; + + GetSessionResult getSessionResult = new GetSessionResult + { + Resources = new ResourceContainer { ShareCodes = shareCodes } + }; + + var result = getSessionResult.Resources.ShareCodes.Single(); + + Assert.AreEqual(2, result.Tasks.Count); + Assert.AreEqual(1, result.GetVerifyShareCodeTasks().Count); + } + + [TestMethod] + public void ShouldReturnEmptyListWhenNoVerifyShareCodeTasks() + { + var shareCodes = new List + { + new ShareCodeResourceResponse { Tasks = null } + }; + + GetSessionResult getSessionResult = new GetSessionResult + { + Resources = new ResourceContainer { ShareCodes = shareCodes } + }; + + var result = getSessionResult.Resources.ShareCodes.Single(); + + Assert.IsNull(result.Tasks); + Assert.AreEqual(0, result.GetVerifyShareCodeTasks().Count); + } + + [TestMethod] + public void ShouldReturnEmptyListForEmptyVerifyShareCodeTaskResponse() + { + var shareCodes = new List + { + new ShareCodeResourceResponse { Tasks = new List() } + }; + + GetSessionResult getSessionResult = new GetSessionResult + { + Resources = new ResourceContainer { ShareCodes = shareCodes } + }; + + CollectionAssert.AreEqual( + new List(), + getSessionResult.Resources.ShareCodes.Single().GetVerifyShareCodeTasks()); + } + + [TestMethod] + public void ShouldReturnEmptyListForSingleParentVerifyShareCodeTaskResponse() + { + var tasks = new List + { + new TaskResponse() + }; + + var shareCodes = new List + { + new ShareCodeResourceResponse { Tasks = tasks } + }; + + GetSessionResult getSessionResult = new GetSessionResult + { + Resources = new ResourceContainer { ShareCodes = shareCodes } + }; + + var result = getSessionResult.Resources.ShareCodes.Single(); + + Assert.AreEqual(1, result.Tasks.Count); + Assert.AreEqual(0, result.GetVerifyShareCodeTasks().Count); + } + + [TestMethod] + public void ShouldReturnCorrectShareCodeResourceProperties() + { + var lookupMedia = new ShareCodeMediaResponse(); + var returnedMedia = new ShareCodeMediaResponse(); + var idPhotoMedia = new ShareCodeMediaResponse(); + var fileMedia = new ShareCodeMediaResponse(); + var source = new EndUserAllowedSourceResponse(); + + var shareCode = new ShareCodeResourceResponse + { + Source = source, + CreatedAt = "2026-01-01T00:00:00Z", + LastUpdated = "2026-01-02T00:00:00Z", + LookupProfile = lookupMedia, + ReturnedProfile = returnedMedia, + IdPhoto = idPhotoMedia, + File = fileMedia, + }; + + Assert.AreEqual(source, shareCode.Source); + Assert.AreEqual("2026-01-01T00:00:00Z", shareCode.CreatedAt); + Assert.AreEqual("2026-01-02T00:00:00Z", shareCode.LastUpdated); + Assert.IsNotNull(shareCode.LookupProfile); + Assert.IsNotNull(shareCode.ReturnedProfile); + Assert.IsNotNull(shareCode.IdPhoto); + Assert.IsNotNull(shareCode.File); + } + + [TestMethod] + public void ShouldDeserializeShareCodeFromJson() + { + var shareCodes = new List + { + new ShareCodeResourceResponse + { + Source = new EndUserAllowedSourceResponse(), + CreatedAt = "2026-01-01T00:00:00Z", + LastUpdated = "2026-01-02T00:00:00Z", + Tasks = new List + { + new VerifyShareCodeTaskResponse() + } + } + }; + + GetSessionResult getSessionResult = new GetSessionResult + { + Resources = new ResourceContainer { ShareCodes = shareCodes } + }; + + string json = Newtonsoft.Json.JsonConvert.SerializeObject(getSessionResult); + GetSessionResult deserialized = Newtonsoft.Json.JsonConvert.DeserializeObject(json); + + Assert.IsNotNull(deserialized.Resources.ShareCodes); + Assert.AreEqual(1, deserialized.Resources.ShareCodes.Count); + } + } +} diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs new file mode 100644 index 00000000..25f5aeeb --- /dev/null +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Newtonsoft.Json; +using Yoti.Auth.Constants; +using Yoti.Auth.DocScan.Session.Retrieve; +using Yoti.Auth.DocScan.Session.Retrieve.Resource; +using Yoti.Auth.DocScan.Session.Retrieve.Task; + +namespace Yoti.Auth.Tests.DocScan.Session.Retrieve.Task +{ + [TestClass] + public class VerifyShareCodeTaskResponseTests + { + [DataTestMethod] + [DataRow(DocScanConstants.VerifyShareCodeTask, typeof(VerifyShareCodeTaskResponse))] + [DataRow("OTHER", typeof(TaskResponse))] + [DataRow("", typeof(TaskResponse))] + [DataRow(null, typeof(TaskResponse))] + public void VerifyShareCodeTaskResponsesAreParsed(string taskTypeString, Type expectedType) + { + var tasks = new List + { + new TaskResponse + { + Id = "someId", + Type = taskTypeString + } + }; + + var shareCodes = new List + { + new ShareCodeResourceResponse { Tasks = tasks } + }; + + var initialGetSessionResult = new GetSessionResult + { + Resources = new ResourceContainer { ShareCodes = shareCodes } + }; + + string json = JsonConvert.SerializeObject(initialGetSessionResult); + + GetSessionResult getSessionResultWithConverter = + JsonConvert.DeserializeObject(json); + + Assert.IsInstanceOfType( + getSessionResultWithConverter.Resources.ShareCodes.Single().Tasks.Single(), + expectedType); + } + } +} diff --git a/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs b/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs index 276149b2..1ad07105 100644 --- a/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs +++ b/test/Yoti.Auth.Tests/TestData/IdentityProfiles.cs @@ -1,6 +1,5 @@ using Newtonsoft.Json; using Yoti.Auth.DigitalIdentity.Policy; -using System.Collections.Generic; namespace Yoti.Auth.Tests.TestData { @@ -63,41 +62,40 @@ public static object CreateStandardSubject() }; } - public static Yoti.Auth.DocScan.Session.Create.AdvancedIdentityProfile CreateStandardAdvancedIdentityProfileRequirements() + public static object CreateStandardAdvancedIdentityProfileRequirements() { - Yoti.Auth.DocScan.Session.Create.AdvancedIdentityProfile data = new Yoti.Auth.DocScan.Session.Create.AdvancedIdentityProfile - { - profiles = new List + string advancedIdentityProfileJson = @" { - new Yoti.Auth.DocScan.Session.Create.Profile - { - trust_framework = "UK_TFIDA", - schemes = new List + ""profiles"": [ { - new Yoti.Auth.DocScan.Session.Create.Scheme - { - label = "LB912", - type = "RTW" - } - } - }, - new Yoti.Auth.DocScan.Session.Create.Profile - { - trust_framework = "YOTI_GLOBAL", - schemes = new List + ""trust_framework"": ""UK_TFIDA"", + ""schemes"": [ + { + ""label"": ""LB912"", + ""type"": ""RTW"" + }, + { + ""label"": ""LB777"", + ""type"": ""DBS"", + ""objective"": ""BASIC"" + } + ] + }, { - new Yoti.Auth.DocScan.Session.Create.Scheme - { - label = "LB321", - type = "IDENTITY", - objective = "AL_L1" - } + ""trust_framework"": ""YOTI_GLOBAL"", + ""schemes"": [ + { + ""label"": ""LB321"", + ""type"": ""IDENTITY"", + ""objective"": ""AL_L1"", + ""config"": {} + } + ] } - } - } - }; - - return data; + ] + }"; + + return advancedIdentityProfileJson; } } } diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index 3f341ebb..9f8e3811 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -9,8 +9,6 @@ false false false - false - false Full true @@ -30,7 +28,7 @@
- + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -38,7 +36,11 @@ - + + + + + @@ -68,17 +70,14 @@ PreserveNewest - + PreserveNewest PreserveNewest - - - PreserveNewest - + \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/coverage.opencover.xml b/test/Yoti.Auth.Tests/coverage.opencover.xml new file mode 100644 index 00000000..3e821d9d --- /dev/null +++ b/test/Yoti.Auth.Tests/coverage.opencover.xml @@ -0,0 +1,24409 @@ + + + + + + Yoti.Auth.Tests.Common.dll + 2026-03-11T03:48:39 + Yoti.Auth.Tests.Common + + + + + + + + Yoti.Auth.Tests.Common.Http + + + + + Moq.Mock`1<System.Net.Http.HttpMessageHandler> Yoti.Auth.Tests.Common.Http::SetupMockMessageHandler(System.Net.Http.HttpResponseMessage) + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Tests.Common.KeyPair + + + + + Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair Yoti.Auth.Tests.Common.KeyPair::Get() + + + + + + + + + + + + + Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair Yoti.Auth.Tests.Common.KeyPair::GetInvalidKeyPair() + + + + + + + + + + + + + System.IO.StreamReader Yoti.Auth.Tests.Common.KeyPair::GetValidKeyStream() + + + + + + + + + + + System.IO.StreamReader Yoti.Auth.Tests.Common.KeyPair::GetInvalidFormatKeyStream() + + + + + + + + + + + + + Yoti.Auth.dll + 2026-03-11T03:48:39 + Yoti.Auth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.DigitalIdentity.RequirementNotMetDetails + + + + + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_FailureType() + + + + + + + + + + + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_Details() + + + + + + + + + + + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_AuditId() + + + + + + + + + + + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_DocumentCountryIsoCode() + + + + + + + + + + + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_DocumentType() + + + + + + + + + + + + Yoti.Auth.ActivityDetails + + + + + System.String Yoti.Auth.ActivityDetails::get_RememberMeId() + + + + + + + + + + + System.String Yoti.Auth.ActivityDetails::get_ParentRememberMeId() + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.ActivityDetails::get_Timestamp() + + + + + + + + + + + Yoti.Auth.Profile.YotiProfile Yoti.Auth.ActivityDetails::get_Profile() + + + + + + + + + + + Yoti.Auth.Profile.ApplicationProfile Yoti.Auth.ActivityDetails::get_ApplicationProfile() + + + + + + + + + + + System.String Yoti.Auth.ActivityDetails::get_ReceiptId() + + + + + + + + + + + Yoti.Auth.Share.ExtraData Yoti.Auth.ActivityDetails::get_ExtraData() + + + + + + + + + + + System.Void Yoti.Auth.ActivityDetails::.ctor(System.String,System.String,System.Nullable`1<System.DateTime>,Yoti.Auth.Profile.YotiProfile,Yoti.Auth.Profile.ApplicationProfile,System.String,Yoti.Auth.Share.ExtraData) + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ActivityDetailsParser + + + + + Yoti.Auth.ActivityDetails Yoti.Auth.ActivityDetailsParser::HandleResponse(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>> Yoti.Auth.ActivityDetailsParser::ParseProfileContent(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String,System.String) + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ActivityDetailsParser::SetAddressToBeFormattedAddressIfNull(Yoti.Auth.Profile.YotiProfile) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Conversion + + + + + System.String Yoti.Auth.Conversion::BytesToUtf8(System.Byte[]) + + + + + + + + + + + System.String Yoti.Auth.Conversion::BytesToBase64(System.Byte[]) + + + + + + + + + + + System.Byte[] Yoti.Auth.Conversion::UtfToBytes(System.String) + + + + + + + + + + + System.Byte[] Yoti.Auth.Conversion::Base64ToBytes(System.String) + + + + + + + + + + + System.Byte[] Yoti.Auth.Conversion::UrlSafeBase64ToBytes(System.String) + + + + + + + + + + + + + Yoti.Auth.CryptoEngine + + + + + Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair Yoti.Auth.CryptoEngine::LoadRsaKey(System.IO.StreamReader) + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::DecipherAes(System.Byte[],System.Byte[],System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::DecryptRsa(System.Byte[],Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::SignDigest(System.Byte[],Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::GetDerEncodedPublicKey(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + System.String Yoti.Auth.CryptoEngine::GenerateNonce() + + + + + + + + + + + + + + System.String Yoti.Auth.CryptoEngine::DecryptToken(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::UnwrapKey(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeList Yoti.Auth.CryptoEngine::DecryptAttributeList(System.String,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + Yoti.Auth.Share.ExtraData Yoti.Auth.CryptoEngine::DecryptExtraData(System.String,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::DecipherContent(System.String,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + + + + System.String Yoti.Auth.CryptoEngine::GetAuthKey(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::DecryptAesGcm(System.Byte[],System.Byte[],System.Byte[]) + + + + + + + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::UnwrapReceiptKey(System.Byte[],System.Byte[],System.Byte[],Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CryptoEngine::DecryptReceiptContent(System.Byte[],System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClient + + + + + System.Uri Yoti.Auth.DigitalIdentityClient::get_ApiUri() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentityClient::CreateShareSession(Yoti.Auth.DigitalIdentity.ShareSessionRequest) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.SharedReceiptResponse Yoti.Auth.DigitalIdentityClient::GetShareReceipt(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentityClient::SetYotiApiUri() + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClient Yoti.Auth.DigitalIdentityClient::OverrideApiUri(System.Uri) + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.String,System.IO.StreamReader) + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.Net.Http.HttpClient,System.String,System.IO.StreamReader) + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.Net.Http.HttpClient,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClient/<CreateQrCode>d__13 + + + + + System.Void Yoti.Auth.DigitalIdentityClient/<CreateQrCode>d__13::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClient/<CreateShareSessionAsync>d__11 + + + + + System.Void Yoti.Auth.DigitalIdentityClient/<CreateShareSessionAsync>d__11::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClient/<GetQrCode>d__14 + + + + + System.Void Yoti.Auth.DigitalIdentityClient/<GetQrCode>d__14::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClient/<GetSession>d__15 + + + + + System.Void Yoti.Auth.DigitalIdentityClient/<GetSession>d__15::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine::.ctor(System.Net.Http.HttpClient) + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass2_0/<<CreateShareSessionAsync>b__0>d + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass2_0/<<CreateShareSessionAsync>b__0>d::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass3_0/<<GetShareReceipt>b__0>d + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass3_0/<<GetShareReceipt>b__0>d::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass4_0/<<CreateQrCodeAsync>b__0>d + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass4_0/<<CreateQrCodeAsync>b__0>d::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass5_0/<<GetQrCodeAsync>b__0>d + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass5_0/<<GetQrCodeAsync>b__0>d::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass6_0/<<GetSession>b__0>d + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass6_0/<<GetSession>b__0>d::MoveNext() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<CreateQrCodeAsync>d__4 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<CreateQrCodeAsync>d__4::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<CreateShareSessionAsync>d__2 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<CreateShareSessionAsync>d__2::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<GetQrCodeAsync>d__5 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetQrCodeAsync>d__5::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<GetSession>d__6 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetSession>d__6::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<GetShareReceipt>d__3 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetShareReceipt>d__3::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.MediaValue + + + + + System.String Yoti.Auth.MediaValue::GetMIMEType() + + + + + + + + + + + System.Byte[] Yoti.Auth.MediaValue::GetContent() + + + + + + + + + + + System.String Yoti.Auth.MediaValue::GetBase64URI() + + + + + + + + + + + System.Void Yoti.Auth.MediaValue::.ctor(System.String,System.Byte[]) + + + + + + + + + + + + + + + Yoti.Auth.Validation + + + + + System.Void Yoti.Auth.Validation::IsNull(System.Object,System.String) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::NotNull(System.Object,System.String) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::NotNullOrEmpty(System.String,System.String) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::NotNullOrWhiteSpace(System.String,System.String) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::NotGreaterThan(T,T,System.String) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::NotLessThan(T,T,System.String) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::WithinRange(T,T,T,System.String) + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::CollectionNotEmpty(System.Collections.ICollection,System.String) + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Validation::IsNotDefault(System.Object,System.String) + + + + + + + + + + + + + + + + + System.Boolean Yoti.Auth.Validation::IsDefault(System.Object) + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.YotiClient + + + + + System.Uri Yoti.Auth.YotiClient::get_ApiUri() + + + + + + + + + + + Yoti.Auth.ActivityDetails Yoti.Auth.YotiClient::GetActivityDetails(System.String) + + + + + + + + + + + + Yoti.Auth.Aml.AmlResult Yoti.Auth.YotiClient::PerformAmlCheck(Yoti.Auth.Aml.IAmlProfile) + + + + + + + + + + + + Yoti.Auth.ShareUrl.ShareUrlResult Yoti.Auth.YotiClient::CreateShareUrl(Yoti.Auth.ShareUrl.DynamicScenario) + + + + + + + + + + + + System.Void Yoti.Auth.YotiClient::SetYotiApiUri() + + + + + + + + + + + + + + + + + Yoti.Auth.YotiClient Yoti.Auth.YotiClient::OverrideApiUri(System.Uri) + + + + + + + + + + + + System.Void Yoti.Auth.YotiClient::.ctor(System.String,System.IO.StreamReader) + + + + + + + + + + + + System.Void Yoti.Auth.YotiClient::.ctor(System.Net.Http.HttpClient,System.String,System.IO.StreamReader) + + + + + + + + + + + + System.Void Yoti.Auth.YotiClient::.ctor(System.Net.Http.HttpClient,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + + + + + + Yoti.Auth.YotiClient/<CreateShareUrlAsync>d__15 + + + + + System.Void Yoti.Auth.YotiClient/<CreateShareUrlAsync>d__15::MoveNext() + + + + + + + + + + + + + Yoti.Auth.YotiClient/<GetActivityDetailsAsync>d__11 + + + + + System.Void Yoti.Auth.YotiClient/<GetActivityDetailsAsync>d__11::MoveNext() + + + + + + + + + + + + + Yoti.Auth.YotiClient/<PerformAmlCheckAsync>d__13 + + + + + System.Void Yoti.Auth.YotiClient/<PerformAmlCheckAsync>d__13::MoveNext() + + + + + + + + + + + + + Yoti.Auth.YotiClientEngine + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.Aml.AmlResult> Yoti.Auth.YotiClientEngine::PerformAmlCheckAsync(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,Yoti.Auth.Aml.IAmlProfile) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.YotiClientEngine::.ctor(System.Net.Http.HttpClient) + + + + + + + + + + + + + + Yoti.Auth.YotiClientEngine/<>c__DisplayClass4_0/<<PerformAmlCheckInternalAsync>b__0>d + + + + + System.Void Yoti.Auth.YotiClientEngine/<>c__DisplayClass4_0/<<PerformAmlCheckInternalAsync>b__0>d::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.YotiClientEngine/<>c__DisplayClass5_0/<<CreateShareURLAsync>b__0>d + + + + + System.Void Yoti.Auth.YotiClientEngine/<>c__DisplayClass5_0/<<CreateShareURLAsync>b__0>d::MoveNext() + + + + + + + + + + + + + Yoti.Auth.YotiClientEngine/<CreateShareURLAsync>d__5 + + + + + System.Void Yoti.Auth.YotiClientEngine/<CreateShareURLAsync>d__5::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.YotiClientEngine/<GetActivityDetailsAsync>d__2 + + + + + System.Void Yoti.Auth.YotiClientEngine/<GetActivityDetailsAsync>d__2::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.YotiClientEngine/<PerformAmlCheckInternalAsync>d__4 + + + + + System.Void Yoti.Auth.YotiClientEngine/<PerformAmlCheckInternalAsync>d__4::MoveNext() + + + + + + + + + + + + + + + + Yoti.Auth.Web.HeadersFactory + + + + + System.Net.Http.HttpRequestMessage Yoti.Auth.Web.HeadersFactory::AddHeaders(System.Net.Http.HttpRequestMessage,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Net.Http.HttpMethod,System.String,System.Byte[]) + + + + + + + + + + + + + System.Net.Http.HttpRequestMessage Yoti.Auth.Web.HeadersFactory::PutHeaders(System.Net.Http.HttpRequestMessage,System.String,System.String) + + + + + + + + + + + + + + + Yoti.Auth.Web.Request + + + + + System.Net.Http.HttpRequestMessage Yoti.Auth.Web.Request::get_RequestMessage() + + + + + + + + + + + System.Void Yoti.Auth.Web.Request::.ctor(System.Net.Http.HttpRequestMessage) + + + + + + + + + + + + + + Yoti.Auth.Web.Request/<Execute>d__5 + + + + + System.Void Yoti.Auth.Web.Request/<Execute>d__5::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithBaseUri(System.Uri) + + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithEndpoint(System.String) + + + + + + + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithQueryParam(System.String,System.String) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithStreamReader(System.IO.StreamReader) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithKeyPair(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithHeader(System.String,System.String) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithContentHeader(System.String,System.String) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithHttpMethod(System.Net.Http.HttpMethod) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithContent(System.Byte[]) + + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithMultipartBoundary(System.String) + + + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithMultipartBinaryContent(System.String,System.Byte[],System.String,System.String) + + + + + + + + + + + + + + + + + + + Yoti.Auth.Web.Request Yoti.Auth.Web.RequestBuilder::Build() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Uri Yoti.Auth.Web.RequestBuilder::GenerateRequestUri(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Web.RequestBuilder::AddCustomHeaders(System.Net.Http.HttpRequestMessage) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Web.RequestBuilder::AddCustomContentHeaders(System.Net.Http.HttpRequestMessage) + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.Web.RequestBuilder::AddQueryParametersToEndpoint() + + + + + + + + + + + + + + + + + + + + + System.Object Yoti.Auth.Web.RequestBuilder::GetTimestamp() + + + + + + + + + + + + System.Void Yoti.Auth.Web.RequestBuilder::.ctor() + + + + + + + + + + + + + + + + Yoti.Auth.Web.Response + + + + + System.Boolean Yoti.Auth.Web.Response::get_Success() + + + + + + + + + + + System.Int32 Yoti.Auth.Web.Response::get_StatusCode() + + + + + + + + + + + System.String Yoti.Auth.Web.Response::get_Content() + + + + + + + + + + + System.String Yoti.Auth.Web.Response::get_ReasonPhrase() + + + + + + + + + + + System.Void Yoti.Auth.Web.Response::CreateYotiExceptionFromStatusCode(System.Net.Http.HttpResponseMessage) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Web.SignedMessageFactory + + + + + System.String Yoti.Auth.Web.SignedMessageFactory::SignMessage(System.Net.Http.HttpMethod,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Verifications.AgeVerification + + + + + System.Int32 Yoti.Auth.Verifications.AgeVerification::Age() + + + + + + + + + + + System.String Yoti.Auth.Verifications.AgeVerification::CheckType() + + + + + + + + + + + System.Boolean Yoti.Auth.Verifications.AgeVerification::Result() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Verifications.AgeVerification::Attribute() + + + + + + + + + + + System.Void Yoti.Auth.Verifications.AgeVerification::.ctor(Yoti.Auth.Attribute.YotiAttribute`1<System.String>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Verifications.AgeVerificationParser + + + + + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Verifications.AgeVerification> Yoti.Auth.Verifications.AgeVerificationParser::FindAllAgeVerifications() + + + + + + + + + + + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Verifications.AgeVerificationParser::FindAgeUnderVerification(System.Int32) + + + + + + + + + + + + + + + + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Verifications.AgeVerificationParser::FindAgeOverVerification(System.Int32) + + + + + + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,Yoti.Auth.Verifications.AgeVerification> Yoti.Auth.Verifications.AgeVerificationParser::FindVerifications(System.String,Yoti.Auth.Profile.IBaseProfile) + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Verifications.AgeVerificationParser::.ctor(Yoti.Auth.Profile.IBaseProfile) + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicScenario + + + + + System.String Yoti.Auth.ShareUrl.DynamicScenario::get_CallbackEndpoint() + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicy Yoti.Auth.ShareUrl.DynamicScenario::get_DynamicPolicy() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Extensions.BaseExtension> Yoti.Auth.ShareUrl.DynamicScenario::get_Extensions() + + + + + + + + + + + System.Object Yoti.Auth.ShareUrl.DynamicScenario::get_Subject() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.DynamicScenario::.ctor(System.String,Yoti.Auth.ShareUrl.Policy.DynamicPolicy,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Extensions.BaseExtension>,System.Object) + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicScenarioBuilder + + + + + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithCallbackEndpoint(System.String) + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithPolicy(Yoti.Auth.ShareUrl.Policy.DynamicPolicy) + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithExtension(Yoti.Auth.ShareUrl.Extensions.BaseExtension) + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithSubject(System.Object) + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicScenario Yoti.Auth.ShareUrl.DynamicScenarioBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.DynamicScenarioBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicSharingService/<>c__DisplayClass0_0 + + + + + Yoti.Auth.ShareUrl.ShareUrlResult Yoti.Auth.ShareUrl.DynamicSharingService/<>c__DisplayClass0_0::<CreateShareURL>b__0() + + + + + + + + + + + + Yoti.Auth.ShareUrl.DynamicSharingService/<CreateShareURL>d__0 + + + + + System.Void Yoti.Auth.ShareUrl.DynamicSharingService/<CreateShareURL>d__0::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.ShareUrlResult + + + + + System.Uri Yoti.Auth.ShareUrl.ShareUrlResult::get_Url() + + + + + + + + + + + System.String Yoti.Auth.ShareUrl.ShareUrlResult::get_RefId() + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.Constraint + + + + + System.String Yoti.Auth.ShareUrl.Policy.Constraint::get_ConstraintType() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.Constraint::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicy + + + + + System.Collections.Generic.ICollection`1<Yoti.Auth.ShareUrl.Policy.WantedAttribute> Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_WantedAttributes() + + + + + + + + + + + System.Collections.Generic.HashSet`1<System.Int32> Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_WantedAuthTypes() + + + + + + + + + + + System.Boolean Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_WantedRememberMeId() + + + + + + + + + + + System.Object Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_IdentityProfileRequirements() + + + + + + + + + + + System.Object Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_AdvancedIdentityProfileRequirements() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.DynamicPolicy::.ctor(System.Collections.Generic.ICollection`1<Yoti.Auth.ShareUrl.Policy.WantedAttribute>,System.Collections.Generic.HashSet`1<System.Int32>,System.Boolean,System.Object,System.Object) + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithWantedAttribute(Yoti.Auth.ShareUrl.Policy.WantedAttribute) + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithWantedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithFamilyName(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithGivenNames(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithFullName(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithDateOfBirth(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAgeOver(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAgeUnder(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAgeDerivedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithGender(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithStructuredPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithNationality(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithPhoneNumber(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithSelfie(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithEmail(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithDocumentDetails(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithDocumentImages(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithSelfieAuthentication(System.Boolean) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithPinAuthentication(System.Boolean) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAuthType(System.Int32,System.Boolean) + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithRememberMeId(System.Boolean) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithIdentityProfileRequirements(System.Object) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAdvancedIdentityProfileRequirements(System.Object) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.DynamicPolicy Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.PreferredSources + + + + + System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.WantedAnchor> Yoti.Auth.ShareUrl.Policy.PreferredSources::get_WantedAnchors() + + + + + + + + + + + System.Boolean Yoti.Auth.ShareUrl.Policy.PreferredSources::get_SoftPreference() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.PreferredSources::.ctor(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.WantedAnchor>,System.Boolean) + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraint + + + + + Yoti.Auth.ShareUrl.Policy.PreferredSources Yoti.Auth.ShareUrl.Policy.SourceConstraint::get_PreferredSources() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.SourceConstraint::.ctor(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.WantedAnchor>,System.Boolean) + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithAnchor(Yoti.Auth.ShareUrl.Policy.WantedAnchor) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithSoftPreference(System.Boolean) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithAnchorByValue(System.String,System.String) + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithPassport(System.String) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithDrivingLicense(System.String) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithNationalId(System.String) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithPasscard(System.String) + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.SourceConstraint Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAnchor + + + + + System.String Yoti.Auth.ShareUrl.Policy.WantedAnchor::get_Name() + + + + + + + + + + + System.String Yoti.Auth.ShareUrl.Policy.WantedAnchor::get_SubType() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.WantedAnchor::.ctor(System.String,System.String) + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder + + + + + Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder::WithValue(System.String) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder::WithSubType(System.String) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAnchor Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder::Build() + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttribute + + + + + System.String Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Name() + + + + + + + + + + + System.String Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Derivation() + + + + + + + + + + + System.Nullable`1<System.Boolean> Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Optional() + + + + + + + + + + + System.Nullable`1<System.Boolean> Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_AcceptSelfAsserted() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint> Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Constraints() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.WantedAttribute::.ctor(System.String,System.String,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>) + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithName(System.String) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithOptional(System.Boolean) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithDerivation(System.String) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithConstraint(Yoti.Auth.ShareUrl.Policy.Constraint) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithConstraints(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithAcceptSelfAsserted(System.Boolean) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Policy.WantedAttribute Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::Build() + + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.BaseExtension + + + + + System.String Yoti.Auth.ShareUrl.Extensions.BaseExtension::get_ExtensionType() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.BaseExtension::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.DeviceLocation + + + + + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_Latitude() + + + + + + + + + + + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_Longitude() + + + + + + + + + + + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_Radius() + + + + + + + + + + + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_MaxUncertainty() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.DeviceLocation::.ctor(System.Double,System.Double,System.Double,System.Double) + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.Extension`1 + + + + + T Yoti.Auth.ShareUrl.Extensions.Extension`1::get_Content() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.Extension`1::.ctor(System.String,T) + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1 + + + + + Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1<T> Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1::WithType(System.String) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1<T> Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1::WithContent(T) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.Extension`1<T> Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1::Build() + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent + + + + + Yoti.Auth.ShareUrl.Extensions.DeviceLocation Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent::get_ExpectedDeviceLocation() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent::.ctor(System.Double,System.Double,System.Double,System.Double) + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder + + + + + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithLatitude(System.Double) + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithLongitude(System.Double) + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithRadius(System.Double) + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithMaxUncertainty(System.Double) + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.Extension`1<Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent> Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::Build() + + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent + + + + + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent::get_Definitions() + + + + + + + + + + + System.String Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent::get_ExpiryDate() + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent::.ctor(System.DateTime,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder + + + + + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::WithExpiryDate(System.DateTime) + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinition(System.String) + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinitions(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.Extension`1<Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent> Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::Build() + + + + + + + + + + + + + + System.Void Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::.ctor() + + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1 + + + + + Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1<T> Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1::WithContent(T) + + + + + + + + + + + + + Yoti.Auth.ShareUrl.Extensions.Extension`1<T> Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1::Build() + + + + + + + + + + + + Yoti.Auth.Share.DataEntryConverter + + + + + System.Object Yoti.Auth.Share.DataEntryConverter::ConvertDataEntry(Yoti.Auth.ProtoBuf.Share.DataEntry) + + + + + + + + + + + + + + + System.Object Yoti.Auth.Share.DataEntryConverter::ConvertValue(Yoti.Auth.ProtoBuf.Share.DataEntry/Types/Type,Google.Protobuf.ByteString) + + + + + + + + + + + + + + + + + + Yoti.Auth.Share.ExtraData + + + + + Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails Yoti.Auth.Share.ExtraData::get_AttributeIssuanceDetails() + + + + + + + + + + + System.Collections.ObjectModel.ReadOnlyCollection`1<T> Yoti.Auth.Share.ExtraData::FilterForType(System.Collections.Generic.List`1<System.Object>) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Share.ExtraData::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.Share.ExtraData::.ctor(System.Collections.Generic.List`1<System.Object>) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Share.ExtraDataConverter + + + + + Yoti.Auth.Share.ExtraData Yoti.Auth.Share.ExtraDataConverter::ParseExtraDataProto(System.Byte[]) + + + + + + + + + + + + System.Collections.Generic.List`1<System.Object> Yoti.Auth.Share.ExtraDataConverter::ParseDataEntries(System.Byte[]) + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Share.ThirdParty.AttributeDefinition + + + + + System.String Yoti.Auth.Share.ThirdParty.AttributeDefinition::get_Name() + + + + + + + + + + + System.Void Yoti.Auth.Share.ThirdParty.AttributeDefinition::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::get_ExpiryDate() + + + + + + + + + + + System.String Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::get_Token() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::get_IssuingAttributes() + + + + + + + + + + + System.Void Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::.ctor(System.String,System.Nullable`1<System.DateTime>,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Share.ThirdParty.IssuingAttributes + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.Share.ThirdParty.IssuingAttributes::get_ExpiryDate() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.Share.ThirdParty.IssuingAttributes::get_AttributeDefinitions() + + + + + + + + + + + System.Void Yoti.Auth.Share.ThirdParty.IssuingAttributes::.ctor(System.Nullable`1<System.DateTime>,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) + + + + + + + + + + + + + + + Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter + + + + + Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseThirdPartyAttribute(System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Share.ThirdParty.IssuingAttributes Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseIssuingAttributes(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseDefinitions(Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Share.Definition>) + + + + + + + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseExpiryDateTime(System.String) + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.DataEntryReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.DataEntryReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntryReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.DataEntry + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.DataEntry> Yoti.Auth.ProtoBuf.Share.DataEntry::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.DataEntry::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.DataEntry::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.DataEntry Yoti.Auth.ProtoBuf.Share.DataEntry::Clone() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.DataEntry/Types/Type Yoti.Auth.ProtoBuf.Share.DataEntry::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::set_Type(Yoti.Auth.ProtoBuf.Share.DataEntry/Types/Type) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Share.DataEntry::get_Value() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::set_Value(Google.Protobuf.ByteString) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.DataEntry::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.DataEntry::Equals(Yoti.Auth.ProtoBuf.Share.DataEntry) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.DataEntry::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.DataEntry::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.DataEntry::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::MergeFrom(Yoti.Auth.ProtoBuf.Share.DataEntry) + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::.ctor(Yoti.Auth.ProtoBuf.Share.DataEntry) + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.ExtraDataReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.ExtraDataReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraDataReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.ExtraData + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.ExtraData> Yoti.Auth.ProtoBuf.Share.ExtraData::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ExtraData::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ExtraData::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.ExtraData Yoti.Auth.ProtoBuf.Share.ExtraData::Clone() + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Share.DataEntry> Yoti.Auth.ProtoBuf.Share.ExtraData::get_List() + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.ExtraData::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.ExtraData::Equals(Yoti.Auth.ProtoBuf.Share.ExtraData) + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.ExtraData::GetHashCode() + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.ExtraData::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.ExtraData::CalculateSize() + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::MergeFrom(Yoti.Auth.ProtoBuf.Share.ExtraData) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::.ctor(Yoti.Auth.ProtoBuf.Share.ExtraData) + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::.cctor() + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.IssuingAttributesReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.IssuingAttributesReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributesReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.IssuingAttributes + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.IssuingAttributes> Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.IssuingAttributes::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.IssuingAttributes Yoti.Auth.ProtoBuf.Share.IssuingAttributes::Clone() + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_ExpiryDate() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::set_ExpiryDate(System.String) + + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Share.Definition> Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_Definitions() + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.IssuingAttributes::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.IssuingAttributes::Equals(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.IssuingAttributes::GetHashCode() + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.IssuingAttributes::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.IssuingAttributes::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::MergeFrom(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::.ctor() + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::.ctor(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::.cctor() + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.Definition + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.Definition> Yoti.Auth.ProtoBuf.Share.Definition::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.Definition::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.Definition::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.Definition Yoti.Auth.ProtoBuf.Share.Definition::Clone() + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.Definition::get_Name() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::set_Name(System.String) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.Definition::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.Definition::Equals(Yoti.Auth.ProtoBuf.Share.Definition) + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.Definition::GetHashCode() + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.Definition::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.Definition::CalculateSize() + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::MergeFrom(Yoti.Auth.ProtoBuf.Share.Definition) + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::.ctor(Yoti.Auth.ProtoBuf.Share.Definition) + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.ThirdPartyAttributeReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.ThirdPartyAttributeReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttributeReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute> Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::Clone() + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_IssuanceToken() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::set_IssuanceToken(Google.Protobuf.ByteString) + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Share.IssuingAttributes Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_IssuingAttributes() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::set_IssuingAttributes(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::Equals(Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::MergeFrom(Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::.ctor(Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Common.EncryptedDataReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Common.EncryptedDataReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedDataReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Common.EncryptedData + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Common.EncryptedData> Yoti.Auth.ProtoBuf.Common.EncryptedData::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.EncryptedData::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.EncryptedData::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Common.EncryptedData Yoti.Auth.ProtoBuf.Common.EncryptedData::Clone() + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.EncryptedData::get_Iv() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::set_Iv(Google.Protobuf.ByteString) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.EncryptedData::get_CipherText() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::set_CipherText(Google.Protobuf.ByteString) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Common.EncryptedData::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Common.EncryptedData::Equals(Yoti.Auth.ProtoBuf.Common.EncryptedData) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Common.EncryptedData::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Common.EncryptedData::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Common.EncryptedData::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::MergeFrom(Yoti.Auth.ProtoBuf.Common.EncryptedData) + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::.ctor() + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::.ctor(Yoti.Auth.ProtoBuf.Common.EncryptedData) + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Common.SignedTimestampReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Common.SignedTimestampReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestampReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Common.SignedTimestamp + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Common.SignedTimestamp> Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.SignedTimestamp::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Common.SignedTimestamp Yoti.Auth.ProtoBuf.Common.SignedTimestamp::Clone() + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Version() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_Version(System.Int32) + + + + + + + + + + + + System.UInt64 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Timestamp() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_Timestamp(System.UInt64) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_MessageDigest() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_MessageDigest(Google.Protobuf.ByteString) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_ChainDigest() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_ChainDigest(Google.Protobuf.ByteString) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_ChainDigestSkip1() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_ChainDigestSkip1(Google.Protobuf.ByteString) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_ChainDigestSkip2() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_ChainDigestSkip2(Google.Protobuf.ByteString) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Common.SignedTimestamp::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Common.SignedTimestamp::Equals(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Common.SignedTimestamp::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::MergeFrom(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::.ctor() + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::.ctor(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Attribute + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.Attribute> Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Attribute::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Attribute Yoti.Auth.ProtoBuf.Attribute.Attribute::Clone() + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Name() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_Name(System.String) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Value() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_Value(Google.Protobuf.ByteString) + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.ProtoBuf.Attribute.Attribute::get_ContentType() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_ContentType(Yoti.Auth.ProtoBuf.Attribute.ContentType) + + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.Anchor> Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Anchors() + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.UserMetadata> Yoti.Auth.ProtoBuf.Attribute.Attribute::get_UserMetadata() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Metadata Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Metadata() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_Metadata(Yoti.Auth.ProtoBuf.Attribute.Metadata) + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Attribute::get_EphemeralId() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_EphemeralId(System.String) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Attribute::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Attribute::Equals(Yoti.Auth.ProtoBuf.Attribute.Attribute) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Attribute::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Attribute::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Attribute::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.Attribute) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::.ctor() + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::.ctor(Yoti.Auth.ProtoBuf.Attribute.Attribute) + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::.cctor() + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Metadata + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.Metadata> Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Metadata::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Metadata Yoti.Auth.ProtoBuf.Attribute.Metadata::Clone() + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Metadata::get_SupersededTimeStamp() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_SupersededTimeStamp(System.String) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Deletable() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_Deletable(System.Boolean) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Metadata::get_ReceiptId() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_ReceiptId(Google.Protobuf.ByteString) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Revoked() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_Revoked(System.Boolean) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Locked() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_Locked(System.Boolean) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::Equals(Yoti.Auth.ProtoBuf.Attribute.Metadata) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Metadata::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Metadata::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Metadata::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.Metadata) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::.ctor() + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::.ctor(Yoti.Auth.ProtoBuf.Attribute.Metadata) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Anchor + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.Anchor> Yoti.Auth.ProtoBuf.Attribute.Anchor::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Anchor::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Anchor::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Anchor Yoti.Auth.ProtoBuf.Attribute.Anchor::Clone() + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_ArtifactLink() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_ArtifactLink(Google.Protobuf.ByteString) + + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Google.Protobuf.ByteString> Yoti.Auth.ProtoBuf.Attribute.Anchor::get_OriginServerCerts() + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_ArtifactSignature() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_ArtifactSignature(Google.Protobuf.ByteString) + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Anchor::get_SubType() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_SubType(System.String) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_Signature() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_Signature(Google.Protobuf.ByteString) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_SignedTimeStamp() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_SignedTimeStamp(Google.Protobuf.ByteString) + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Anchor::get_AssociatedSource() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_AssociatedSource(System.String) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Anchor::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Anchor::Equals(Yoti.Auth.ProtoBuf.Attribute.Anchor) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Anchor::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.Anchor::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Anchor::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.Anchor) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::.ctor() + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::.ctor(Yoti.Auth.ProtoBuf.Attribute.Anchor) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::.cctor() + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.UserMetadata + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.UserMetadata> Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.UserMetadata::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.UserMetadata Yoti.Auth.ProtoBuf.Attribute.UserMetadata::Clone() + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Key() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::set_Key(System.String) + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Value() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::set_Value(System.String) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.UserMetadata::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.UserMetadata::Equals(Yoti.Auth.ProtoBuf.Attribute.UserMetadata) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.UserMetadata::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.UserMetadata::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.UserMetadata::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.UserMetadata) + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::.ctor() + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::.ctor(Yoti.Auth.ProtoBuf.Attribute.UserMetadata) + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.MultiValue + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.MultiValue> Yoti.Auth.ProtoBuf.Attribute.MultiValue::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.MultiValue Yoti.Auth.ProtoBuf.Attribute.MultiValue::Clone() + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value> Yoti.Auth.ProtoBuf.Attribute.MultiValue::get_Values() + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue::Equals(Yoti.Auth.ProtoBuf.Attribute.MultiValue) + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue::GetHashCode() + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.MultiValue::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue::CalculateSize() + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.MultiValue) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::.ctor(Yoti.Auth.ProtoBuf.Attribute.MultiValue) + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::.cctor() + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value> Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::Clone() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_ContentType() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::set_ContentType(Yoti.Auth.ProtoBuf.Attribute.ContentType) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_Data() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::set_Data(Google.Protobuf.ByteString) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::Equals(Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value) + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::.ctor(Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value) + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.ContentTypeReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.ContentTypeReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.ContentTypeReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.ListReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.ListReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.ListReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeAndId + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeAndId> Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeAndId Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::Clone() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Attribute Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_Attribute() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::set_Attribute(Yoti.Auth.ProtoBuf.Attribute.Attribute) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_AttributeId() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::set_AttributeId(Google.Protobuf.ByteString) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeAndId) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeAndId) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeAndId) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::.cctor() + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList> Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::Clone() + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.AttributeAndId> Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::get_AttributeAndIdList_() + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList) + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::GetHashCode() + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::CalculateSize() + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList) + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::.cctor() + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeList + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeList> Yoti.Auth.ProtoBuf.Attribute.AttributeList::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeList::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeList::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeList Yoti.Auth.ProtoBuf.Attribute.AttributeList::Clone() + + + + + + + + + + + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.Attribute> Yoti.Auth.ProtoBuf.Attribute.AttributeList::get_Attributes() + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeList::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeList::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeList) + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeList::GetHashCode() + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeList::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeList::CalculateSize() + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeList) + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeList) + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::.cctor() + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.SigningReflection + + + + + Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.SigningReflection::get_Descriptor() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.SigningReflection::.cctor() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeSigning + + + + + Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeSigning> Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Parser() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Descriptor() + + + + + + + + + + + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::pb::Google.Protobuf.IMessage.get_Descriptor() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeSigning Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::Clone() + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Name() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_Name(System.String) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Value() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_Value(Google.Protobuf.ByteString) + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_ContentType() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_ContentType(Yoti.Auth.ProtoBuf.Attribute.ContentType) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_ArtifactSignature() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_ArtifactSignature(Google.Protobuf.ByteString) + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_SubType() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_SubType(System.String) + + + + + + + + + + + + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_SignedTimeStamp() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_SignedTimeStamp(Google.Protobuf.ByteString) + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_AssociatedSource() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_AssociatedSource(System.String) + + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::Equals(System.Object) + + + + + + + + + + + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeSigning) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::GetHashCode() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::ToString() + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::WriteTo(Google.Protobuf.CodedOutputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::CalculateSize() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeSigning) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::MergeFrom(Google.Protobuf.CodedInputStream) + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::.ctor() + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeSigning) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::.cctor() + + + + + + + + + + + + Yoti.Auth.Properties.Resources + + + + + System.Resources.ResourceManager Yoti.Auth.Properties.Resources::get_ResourceManager() + + + + + + + + + + + + + + + + + System.Globalization.CultureInfo Yoti.Auth.Properties.Resources::get_Culture() + + + + + + + + + + + System.Void Yoti.Auth.Properties.Resources::set_Culture(System.Globalization.CultureInfo) + + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_DataEntryError() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_DataEntryParsingFail() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_DocDetailsMultipleConsecutiveSpaces() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_EmptyValueInvalid() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_EndpointMustBeginWithSlash() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_FormatMismatch() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_InvalidCastDateTime() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_InvalidDocumentDetails() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_IssuanceTokenMissing() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_NullHTTPContent() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_NullOrEmptyResponseContent() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_NullParsedResponse() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_UnsupportedImageType() + + + + + + + + + + + System.String Yoti.Auth.Properties.Resources::get_UseRelativePath() + + + + + + + + + + + System.Void Yoti.Auth.Properties.Resources::.ctor() + + + + + + + + + + + + + Yoti.Auth.Profile.ApplicationProfile + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.ApplicationProfile::get_Name() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.ApplicationProfile::get_URL() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<Yoti.Auth.Images.Image> Yoti.Auth.Profile.ApplicationProfile::get_Logo() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.ApplicationProfile::get_ReceiptBackgroundColor() + + + + + + + + + + + System.Void Yoti.Auth.Profile.ApplicationProfile::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Profile.ApplicationProfile::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>>) + + + + + + + + + + + + + Yoti.Auth.Profile.BaseProfile + + + + + System.Collections.Generic.Dictionary`2<System.String,Yoti.Auth.Attribute.BaseAttribute> Yoti.Auth.Profile.BaseProfile::get_Attributes() + + + + + + + + + + + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Attribute.BaseAttribute> Yoti.Auth.Profile.BaseProfile::get_AttributeCollection() + + + + + + + + + + + + + + System.Void Yoti.Auth.Profile.BaseProfile::TryAddAttribute(Yoti.Auth.Attribute.BaseAttribute) + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Profile.BaseProfile::Add(Yoti.Auth.Attribute.YotiAttribute`1<T>) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<T> Yoti.Auth.Profile.BaseProfile::GetAttributeByName(System.String) + + + + + + + + + + + + + + + + + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Attribute.YotiAttribute`1<T>> Yoti.Auth.Profile.BaseProfile::GetAttributesByName(System.String) + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<T> Yoti.Auth.Profile.BaseProfile::GetAttributeById(System.String) + + + + + + + + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Attribute.YotiAttribute`1<T>> Yoti.Auth.Profile.BaseProfile::FindAttributesStartingWith(System.String) + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Profile.BaseProfile::.ctor() + + + + + + + + + + + + + + System.Void Yoti.Auth.Profile.BaseProfile::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>>) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Profile.YotiProfile + + + + + Yoti.Auth.Attribute.YotiAttribute`1<Yoti.Auth.Images.Image> Yoti.Auth.Profile.YotiProfile::get_Selfie() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_FullName() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_GivenNames() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_FamilyName() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_MobileNumber() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_EmailAddress() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.DateTime> Yoti.Auth.Profile.YotiProfile::get_DateOfBirth() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_Address() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken>> Yoti.Auth.Profile.YotiProfile::get_StructuredPostalAddress() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_Gender() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_Nationality() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<Yoti.Auth.Document.DocumentDetails> Yoti.Auth.Profile.YotiProfile::get_DocumentDetails() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.Collections.Generic.List`1<Yoti.Auth.Images.Image>> Yoti.Auth.Profile.YotiProfile::get_DocumentImages() + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1<System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken>> Yoti.Auth.Profile.YotiProfile::get_IdentityProfileReport() + + + + + + + + + + + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Verifications.AgeVerification> Yoti.Auth.Profile.YotiProfile::get_AgeVerifications() + + + + + + + + + + + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Profile.YotiProfile::FindAgeUnderVerification(System.Int32) + + + + + + + + + + + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Profile.YotiProfile::FindAgeOverVerification(System.Int32) + + + + + + + + + + + System.Void Yoti.Auth.Profile.YotiProfile::.ctor() + + + + + + + + + + + + + System.Void Yoti.Auth.Profile.YotiProfile::.ctor(Yoti.Auth.Profile.IBaseProfile) + + + + + + + + + + + + + System.Void Yoti.Auth.Profile.YotiProfile::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>>) + + + + + + + + + + + + + + Yoti.Auth.Images.Image + + + + + System.Void Yoti.Auth.Images.Image::.ctor(System.String,System.Byte[]) + + + + + + + + + + + + + Yoti.Auth.Images.JpegImage + + + + + System.Void Yoti.Auth.Images.JpegImage::.ctor(System.Byte[]) + + + + + + + + + + + + + Yoti.Auth.Images.PngImage + + + + + System.Void Yoti.Auth.Images.PngImage::.ctor(System.Byte[]) + + + + + + + + + + + + + Yoti.Auth.Exceptions.AmlException + + + + + System.Void Yoti.Auth.Exceptions.AmlException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.AmlException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.AmlException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Exceptions.DigitalIdentityException + + + + + System.Void Yoti.Auth.Exceptions.DigitalIdentityException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.DigitalIdentityException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.DigitalIdentityException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Exceptions.DocScanException + + + + + System.Void Yoti.Auth.Exceptions.DocScanException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.DocScanException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.DocScanException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Exceptions.DynamicShareException + + + + + System.Void Yoti.Auth.Exceptions.DynamicShareException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.DynamicShareException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.DynamicShareException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Exceptions.ExtraDataException + + + + + System.Void Yoti.Auth.Exceptions.ExtraDataException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.ExtraDataException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.ExtraDataException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Exceptions.YotiException + + + + + System.Net.Http.HttpResponseMessage Yoti.Auth.Exceptions.YotiException::get_HttpResponseMessage() + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Exceptions.YotiProfileException + + + + + System.String Yoti.Auth.Exceptions.YotiProfileException::get_ResponseContent() + + + + + + + + + + + System.String Yoti.Auth.Exceptions.YotiProfileException::get_ErrorCode() + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor() + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor(System.String) + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor(System.String,System.String) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor(System.String,System.Exception) + + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetails + + + + + System.String Yoti.Auth.Document.DocumentDetails::get_IssuingCountry() + + + + + + + + + + + System.String Yoti.Auth.Document.DocumentDetails::get_DocumentNumber() + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.Document.DocumentDetails::get_ExpirationDate() + + + + + + + + + + + System.String Yoti.Auth.Document.DocumentDetails::get_DocumentType() + + + + + + + + + + + System.String Yoti.Auth.Document.DocumentDetails::get_IssuingAuthority() + + + + + + + + + + + System.String Yoti.Auth.Document.DocumentDetails::ToString() + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.Document.DocumentDetails::.ctor(System.String,System.String,System.String,System.Nullable`1<System.DateTime>,System.String) + + + + + + + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetailsAttributeParser + + + + + Yoti.Auth.Document.DocumentDetails Yoti.Auth.Document.DocumentDetailsAttributeParser::ParseFrom(System.String) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.Document.DocumentDetailsAttributeParser::GetDateSafely(System.String[],System.Int32) + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.Document.DocumentDetailsAttributeParser::GetSafely(System.String[],System.Int32) + + + + + + + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetailsBuilder + + + + + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithType(System.String) + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithIssuingCountry(System.String) + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithNumber(System.String) + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithDate(System.Nullable`1<System.DateTime>) + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithAuthority(System.String) + + + + + + + + + + + + Yoti.Auth.Document.DocumentDetails Yoti.Auth.Document.DocumentDetailsBuilder::Build() + + + + + + + + + + + + + + System.Void Yoti.Auth.Document.DocumentDetailsBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient + + + + + Yoti.Auth.DocScan.Session.Create.CreateSessionResult Yoti.Auth.DocScan.DocScanClient::CreateSession(Yoti.Auth.DocScan.Session.Create.SessionSpecification) + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult Yoti.Auth.DocScan.DocScanClient::GetSession(System.String) + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanClient::DeleteSession(System.String) + + + + + + + + + + + + Yoti.Auth.MediaValue Yoti.Auth.DocScan.DocScanClient::GetMediaContent(System.String,System.String) + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanClient::DeleteMediaContent(System.String,System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Support.SupportedDocumentsResponse Yoti.Auth.DocScan.DocScanClient::GetSupportedDocuments(System.Boolean) + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse Yoti.Auth.DocScan.DocScanClient::CreateFaceCaptureResource(System.String,Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload) + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanClient::UploadFaceCaptureImage(System.String,System.String,Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse Yoti.Auth.DocScan.DocScanClient::GetSessionConfiguration(System.String) + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanClient::.ctor(System.String,System.IO.StreamReader,System.Net.Http.HttpClient,System.Uri) + + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanClient::.ctor(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Net.Http.HttpClient,System.Uri) + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<CreateFaceCaptureResourceAsync>d__19 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<CreateFaceCaptureResourceAsync>d__19::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<CreateSessionAsync>d__6 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<CreateSessionAsync>d__6::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<DeleteMediaContentAsync>d__15 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<DeleteMediaContentAsync>d__15::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<DeleteSessionAsync>d__10 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<DeleteSessionAsync>d__10::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<GetMediaContentAsync>d__12 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<GetMediaContentAsync>d__12::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<GetSessionAsync>d__8 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<GetSessionAsync>d__8::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<GetSessionConfigurationAsync>d__23 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<GetSessionConfigurationAsync>d__23::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<GetSupportedDocumentsAsync>d__17 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<GetSupportedDocumentsAsync>d__17::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanClient/<UploadFaceCaptureImageAsync>d__21 + + + + + System.Void Yoti.Auth.DocScan.DocScanClient/<UploadFaceCaptureImageAsync>d__21::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService + + + + + System.Uri Yoti.Auth.DocScan.DocScanService::get_ApiUri() + + + + + + + + + + + System.Uri Yoti.Auth.DocScan.DocScanService::GetApiUri() + + + + + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.DocScan.DocScanService::GetSignedRequestBuilder() + + + + + + + + + + + System.String Yoti.Auth.DocScan.DocScanService::SessionEndpoint(System.String) + + + + + + + + + + + System.String Yoti.Auth.DocScan.DocScanService::MediaEndpoint(System.String,System.String) + + + + + + + + + + + Newtonsoft.Json.JsonSerializerSettings Yoti.Auth.DocScan.DocScanService::get_YotiDefaultJsonSettings() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanService::.ctor(System.Net.Http.HttpClient,System.Uri) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass10_0 + + + + + Yoti.Auth.MediaValue Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass10_0::<GetMediaContent>b__0() + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass12_0 + + + + + Yoti.Auth.DocScan.Support.SupportedDocumentsResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass12_0::<GetSupportedDocuments>b__0() + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass13_0 + + + + + Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass13_0::<CreateFaceCaptureResource>b__0() + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass15_0 + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass15_0::<GetSessionConfiguration>b__0() + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass7_0 + + + + + Yoti.Auth.DocScan.Session.Create.CreateSessionResult Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass7_0::<CreateSession>b__0() + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass8_0 + + + + + Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass8_0::<GetSession>b__0() + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<CreateFaceCaptureResource>d__13 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<CreateFaceCaptureResource>d__13::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<CreateSession>d__7 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<CreateSession>d__7::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<DeleteMediaContent>d__11 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<DeleteMediaContent>d__11::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<DeleteSession>d__9 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<DeleteSession>d__9::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<GetMediaContent>d__10 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<GetMediaContent>d__10::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<GetSession>d__8 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<GetSession>d__8::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<GetSessionConfiguration>d__15 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<GetSessionConfiguration>d__15::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<GetSupportedDocuments>d__12 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<GetSupportedDocuments>d__12::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.DocScanService/<UploadFaceCaptureImage>d__14 + + + + + System.Void Yoti.Auth.DocScan.DocScanService/<UploadFaceCaptureImage>d__14::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Support.SupportedCountry + + + + + System.String Yoti.Auth.DocScan.Support.SupportedCountry::get_Code() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedDocument> Yoti.Auth.DocScan.Support.SupportedCountry::get_SupportedDocuments() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Support.SupportedCountry::.ctor(System.String,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedDocument>) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Support.SupportedDocument + + + + + System.String Yoti.Auth.DocScan.Support.SupportedDocument::get_Type() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Support.SupportedDocument::get_IsStrictlyLatin() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Support.SupportedDocument::.ctor(System.String,System.Boolean) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Support.SupportedDocumentsResponse + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedCountry> Yoti.Auth.DocScan.Support.SupportedDocumentsResponse::get_SupportedCountries() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Support.SupportedDocumentsResponse::.ctor(System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedCountry>) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse::get_SubCheck() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse::get_Result() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse> Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse::get_Details() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ReportResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse Yoti.Auth.DocScan.Session.Retrieve.ReportResponse::get_Recommendation() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse> Yoti.Auth.DocScan.Session.Retrieve.ReportResponse::get_Breakdown() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse::get_Name() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse::get_Value() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.DocumentIdPhotoResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.DocumentIdPhotoResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureImageResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureImageResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureResourceResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureImageResponse Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureResourceResponse::get_Image() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.FaceMapResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FaceMapResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.FileResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FileResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.FrameResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FrameResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia::get_Type() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult + + + + + System.Int32 Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_ClientSessionTokenTtl() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_ClientSessionToken() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_SessionId() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_UserTrackingId() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_State() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_Checks() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_Resources() + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_BiometricConsentTimestamp() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_IdentityProfile() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_IdentityProfilePreviewResponse() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_AdvancedIdentityProfile() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_AdvancedIdentityProfilePreviewResponse() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.AuthenticityCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetAuthenticityChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.FaceMatchCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetFaceMatchChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.TextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetTextDataChecks() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.TextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetIdDocumentTextDataChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.LivenessCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetLivenessChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.IdDocumentComparisonCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetIdDocumentComparisonChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.SupplementaryDocTextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetSupplementaryDocTextDataChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.ThirdPartyIdentityCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetThirdPartyIdentityChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.ThirdPartyIdentityFraudOneCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetThirdPartyIdentityFraudOneChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistScreeningCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetWatchlistScreeningChecks() + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistAdvancedCaCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetWatchlistAdvancedCaChecks() + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_Type() + + + + + + + + + + + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_Created() + + + + + + + + + + + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_LastUpdated() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.PageResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.PageResponse::get_CaptureMethod() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.PageResponse::get_Media() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.FrameResponse> Yoti.Auth.DocScan.Session.Retrieve.PageResponse::get_Frames() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse::get_Value() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse::get_Reason() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse::get_RecoverySuggestion() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessImageResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessImageResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessImageResponse Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse::get_image() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.FaceMapResponse Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse::get_FaceMap() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.FrameResponse> Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse::get_Frames() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse::get_Type() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_State() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_Created() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_LastUpdated() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_GeneratedChecks() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia> Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_GeneratedMedia() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedTextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::GetGeneratedTextDataChecks() + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse::get_Type() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse::get_Media() + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse::get_CreatedAt() + + + + + + + + + + + System.Nullable`1<System.DateTime> Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse::get_LastUpdated() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_DocumentType() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_IssuingCountry() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.PageResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_Pages() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_DocumentFields() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.DocumentIdPhotoResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_DocumentIdPhoto() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.TextExtractionTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::GetTextExtractionTasks() + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.LivenessResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.LivenessResourceResponse::get_LivenessType() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_IdDocuments() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_SupplementaryDocuments() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.LivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_LivenessCapture() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_FaceCapture() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_ShareCodes() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_ApplicantProfiles() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_ZoomLivenessResources() + + + + + + + + + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_StaticLivenessResources() + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse::get_Id() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse::get_Tasks() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse::get_Source() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_CreatedAt() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_LastUpdated() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_LookupProfile() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_ReturnedProfile() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_IdPhoto() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_File() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.VerifyShareCodeTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::GetVerifyShareCodeTasks() + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_DocumentType() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_IssuingCountry() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.PageResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_Pages() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_DocumentFields() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.FileResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_DocumentFile() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.SupplementaryDocTextExtractionTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::GetTextExtractionTasks() + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse::get_ReasonCode() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse::get_RequirementNotMetDetails() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_SubjectId() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_Result() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_FailureReason() + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken> Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_Report() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_FailureType() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_DocumentType() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_DocumentCountryIsoCode() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_AuditId() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_Details() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse::get_Id() + + + + + + + + + + + System.Int32 Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse::get_Frames() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse + + + + + System.Int32 Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_ClientSessionTokenTtl() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_SessionId() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_RequestedChecks() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_Capture() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::get_BiometricConsent() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::get_RequiredResources() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetDocumentResourceRequirements() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetIdDocumentResourceRequirements() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetSupplementaryResourceRequirements() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetLivenessResourceRequirements() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredZoomLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetZoomLivenessResourceRequirements() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.FaceCapture.RequiredFaceCaptureResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetFaceCaptureResourceRequirements() + + + + + + + + + + + System.Collections.Generic.List`1<TResourceType> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::FilterRequiredResources() + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_State() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_AllowedSources() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_IsRelyingBusinessAllowed() + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse::get_State() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredLivenessResourceResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredLivenessResourceResponse::get_LivenessType() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.ObjectiveResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.ObjectiveResponse::get_Type() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredDocumentResourceResponse + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredDocumentResourceResponse::get_RequestedTasks() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse::get_SupportedCountries() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse::get_AllowedCaptureMethods() + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,System.Int32> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse::get_AttemptsRemaining() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse::get_DocumentTypes() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse::get_CountryCodes() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.ObjectiveResponse Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse::get_Objective() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse::get_Code() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse::get_SupportedDocuments() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse::get_IsStrictlyLatin() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_State() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_ResourcesUsed() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia> Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_GeneratedMedia() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ReportResponse Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Report() + + + + + + + + + + + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Created() + + + + + + + + + + + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_LastUpdated() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.GeneratedProfileResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.Check.GeneratedProfileResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.ProfileCheckResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.GeneratedProfileResponse Yoti.Auth.DocScan.Session.Retrieve.Check.ProfileCheckResponse::get_GeneratedProfile() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaMatchingStrategyResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaMatchingStrategyResponse::get_Type() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaSourcesResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaSourcesResponse::get_Type() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ExactMatchingStrategyResponse + + + + + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ExactMatchingStrategyResponse::get_ExactMatch() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.FuzzyMatchingStrategyResponse + + + + + System.Double Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.FuzzyMatchingStrategyResponse::get_Fuzziness() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.RawResults + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.RawResults::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ReportResponseWithSummary + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ReportResponseWithSummary::get_WatchlistSummary() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.SearchProfileSourcesResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.SearchProfileSourcesResponse::get_SearchProfile() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.TypeListSourcesResponse + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.TypeListSourcesResponse::get_Types() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_Type() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_RemoveDeceased() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_ShareUrl() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaSourcesResponse Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_Sources() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaMatchingStrategyResponse Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_MatchingStrategy() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_ApiKey() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_Monitoring() + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_Tags() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_ClientRef() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistScreeningConfig + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistScreeningConfig::get_Categories() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary + + + + + System.Int32 Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_TotalHits() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.RawResults Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_RawResults() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_AssociatedCountryCodes() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ISearchConfig Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_SearchConfig() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_SubjectId() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_Result() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.FailureReasonResponse Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_FailureReason() + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken> Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_Report() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.FailureReasonResponse + + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.FailureReasonResponse::get_ReasonCode() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfilePreview.AdvancedIdentityProfilePreviewResponse + + + + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfilePreview.AdvancedIdentityProfilePreviewResponse::get_Media() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfile + + + + + System.String Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_FullName() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_DateOfBirth() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_NamePrefix() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_StructuredPostalAddress() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.ApplicantProfile::.ctor(System.String,System.String,System.String,Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithFullName(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithDateOfBirth(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithNamePrefix(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithStructuredPostalAddress(Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfile Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::Build() + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.AttemptsConfiguration + + + + + System.Collections.Generic.Dictionary`2<System.String,System.Int32> Yoti.Auth.DocScan.Session.Create.AttemptsConfiguration::get_IdDocumentTextDataExtraction() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.CreateSessionResult + + + + + System.Int32 Yoti.Auth.DocScan.Session.Create.CreateSessionResult::get_ClientSessionTokenTtl() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.CreateSessionResult::get_ClientSessionToken() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.CreateSessionResult::get_SessionId() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_AuthToken() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_AuthType() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_Endpoint() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_Topics() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.NotificationConfig::.ctor(System.String,System.String,System.Collections.Generic.List`1<System.String>,System.String) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithAuthToken(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithAuthTypeBearer() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithAuthTypeBasic() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithEndpoint(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForResourceUpdate() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForTaskCompletion() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForCheckCompletion() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForSessionCompletion() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForClientSessionCompletion() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithTopic(System.String) + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfig Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer + + + + + Yoti.Auth.DocScan.Session.Create.ApplicantProfile Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer::get_ApplicantProfile() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer::.ctor(Yoti.Auth.DocScan.Session.Create.ApplicantProfile) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder + + + + + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder::WithApplicantProfile(Yoti.Auth.DocScan.Session.Create.ApplicantProfile) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_AllowedCaptureMethods() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_PrimaryColour() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_SecondaryColour() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_FontColour() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_Locale() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_PresetIssuingCountry() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_SuccessUrl() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_ErrorUrl() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_PrivacyPolicyUrl() + + + + + + + + + + + System.Nullable`1<System.Boolean> Yoti.Auth.DocScan.Session.Create.SdkConfig::get_AllowHandoff() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.AttemptsConfiguration Yoti.Auth.DocScan.Session.Create.SdkConfig::get_AttemptsConfiguration() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.SdkConfig::.ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Nullable`1<System.Boolean>,System.Collections.Generic.Dictionary`2<System.String,System.Int32>) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowsCamera() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowsCameraAndUpload() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowedCaptureMethods(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithPrimaryColour(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithSecondaryColour(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithFontColour(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithLocale(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithPresetIssuingCountry(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithSuccessUrl(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithErrorUrl(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithPrivacyPolicyUrl(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowHandoff(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithIdDocumentTextExtractionCategoryAttempts(System.String,System.Int32) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithIdDocumentTextExtractionReclassificationAttempts(System.Int32) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithIdDocumentTextExtractionGenericAttempts(System.Int32) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfig Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::Build() + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecification + + + + + System.Nullable`1<System.Int32> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_ClientSessionTokenTtl() + + + + + + + + + + + System.Nullable`1<System.Int32> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_ResourcesTtl() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_UserTrackingId() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.NotificationConfig Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_Notifications() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Check.BaseRequestedCheck> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_RequestedChecks() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Task.BaseRequestedTask> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_RequestedTasks() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SdkConfig Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_SdkConfig() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.RequiredDocument> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_RequiredDocuments() + + + + + + + + + + + System.Nullable`1<System.Boolean> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_BlockBiometricConsent() + + + + + + + + + + + System.Nullable`1<System.DateTimeOffset> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_SessionDeadline() + + + + + + + + + + + System.Object Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_IdentityProfileRequirements() + + + + + + + + + + + System.Object Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_Subject() + + + + + + + + + + + System.Object Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_AdvancedIdentityProfileRequirements() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_Resources() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.SessionSpecification::.ctor(System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.String,Yoti.Auth.DocScan.Session.Create.NotificationConfig,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Check.BaseRequestedCheck>,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Task.BaseRequestedTask>,Yoti.Auth.DocScan.Session.Create.SdkConfig,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.RequiredDocument>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.DateTimeOffset>,System.Object,System.Object,System.Boolean,System.Object,Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithClientSessionTokenTtl(System.Int32) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithResourcesTtl(System.Int32) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithUserTrackingId(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithNotifications(Yoti.Auth.DocScan.Session.Create.NotificationConfig) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithRequestedCheck(Yoti.Auth.DocScan.Session.Create.Check.BaseRequestedCheck) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithRequestedTask(Yoti.Auth.DocScan.Session.Create.Task.BaseRequestedTask) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithSdkConfig(Yoti.Auth.DocScan.Session.Create.SdkConfig) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithRequiredDocument(Yoti.Auth.DocScan.Session.Create.Filter.RequiredDocument) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithBlockBiometricConsent(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithSessionDeadline(System.DateTimeOffset) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithIdentityProfileRequirements(System.Object) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithSubject(System.Object) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithCreateIdentityProfilePreview(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithAdvancedIdentityProfileRequirements(System.Object) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithResources(Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.SessionSpecification Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::Build() + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress + + + + + System.Nullable`1<System.Int32> Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_AddressFormat() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_BuildingNumber() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_AddressLine1() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_TownCity() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_PostalCode() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_CountryIso() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_Country() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_FormattedAddress() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::.ctor(System.Nullable`1<System.Int32>,System.String,System.String,System.String,System.String,System.String,System.String,System.String) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithAddressFormat(System.Int32) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithBuildingNumber(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithAddressLine1(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithTownCity(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithPostalCode(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithCountryIso(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithCountry(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithFormattedAddress(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::Build() + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask::.ctor(Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::WithManualCheckAlways() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::WithManualCheckFallback() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::WithManualCheckNever() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig::get_ManualCheck() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask::.ctor(Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithManualCheckAlways() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithManualCheckFallback() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithManualCheckNever() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithChipDataDesired() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithChipDataIgnore() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::Build() + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig::get_ManualCheck() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig::get_ChipData() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig::.ctor(System.String,System.String) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Objectives.Objective + + + + + System.String Yoti.Auth.DocScan.Session.Create.Objectives.Objective::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Objectives.Objective::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjective + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjective::.ctor() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjectiveBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjective Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjectiveBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction + + + + + System.String Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction::get_Inclusion() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction::get_CountryCodes() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction::.ctor(System.String,System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter + + + + + System.String Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter::.ctor(System.String) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction::get_CountryCodes() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction::get_DocumentTypes() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction::.ctor(System.Collections.Generic.List`1<System.String>,System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder::WithCountries(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder::WithDocumentTypes(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter + + + + + System.String Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::get_Inclusion() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction> Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::get_Documents() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::get_AllowExpiredDocuments() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::.ctor(System.String,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction>,System.Boolean) + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::ForIncludeList() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::ForExcludeList() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::WithDocumentRestriction(System.Collections.Generic.List`1<System.String>,System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::WithDocumentRestriction(Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::withAllowExpiredDocuments() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::withDenyExpiredDocuments() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::Build() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter + + + + + Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_CountryRestriction() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_TypeRestriction() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_AllowExpiredDocuments() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_AllowNonLatinDocuments() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::.ctor(Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction,Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction,System.Boolean,System.Boolean) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithIncludedCountries(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithExcludedCountries(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithIncludedDocumentTypes(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithExcludedDocumentTypes(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::isAllowNonLatinDocuments(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::withAllowExpiredDocuments() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::withDenyExpiredDocuments() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument::get_Filter() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument::.ctor(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder::WithFilter(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument + + + + + Yoti.Auth.DocScan.Session.Create.Objectives.Objective Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_Objective() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_DocumentTypes() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_CountryCodes() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::.ctor(Yoti.Auth.DocScan.Session.Create.Objectives.Objective,System.Collections.Generic.List`1<System.String>,System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::WithObjective(Yoti.Auth.DocScan.Session.Create.Objectives.Objective) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::WithDocumentTypes(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::WithCountries(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction + + + + + System.String Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction::get_Inclusion() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction::get_DocumentTypes() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction::.ctor(System.String,System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload + + + + + System.String Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload::get_RequirementId() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder::WithRequirementId(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload + + + + + System.String Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload::get_ImageContentType() + + + + + + + + + + + System.Byte[] Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload::get_ImageContents() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload::.ctor(System.String,System.Byte[]) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::ForJpeg() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::ForPng() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::WithImageContents(System.Byte[]) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck::get_Requested() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck::get_Filter() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck::.ctor(System.Boolean,Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder::WithRequested(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder::WithFilter(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithManualCheckAlways() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithManualCheckFallback() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithManualCheckNever() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithIssuingAuthoritySubCheck() + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithIssuingAuthoritySubCheck(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::Build() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig::get_ManualCheck() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig::get_IssuingAuthoritySubCheck() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig::.ctor(System.String,Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck) + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder::WithManualCheckNever() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder::Build() + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig::get_ManualCheck() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::WithManualCheckAlways() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::WithManualCheckFallback() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::WithManualCheckNever() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::Build() + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig::get_ManualCheck() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheckBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig::.ctor() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::ForZoomLiveness() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::ForStaticLiveness() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::WithManualCheck(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::ForLivenessType(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::WithMaxRetries(System.Int32) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::Build() + + + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::get_LivenessType() + + + + + + + + + + + System.Int32 Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::get_MaxRetries() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::get_ManualCheck() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::.ctor(System.Int32,System.String,System.String) + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckBuilder::Build() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig::.ctor() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithRemoveDeceased(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithShareUrl(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithSources(Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithMatchingStrategy(Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy) + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithApiKey(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithMonitoring(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithTags(System.Collections.Generic.Dictionary`2<System.String,System.String>) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithClientRef(System.String) + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::Build() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderYotiAccount + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderYotiAccount::Build() + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_RemoveDeceased() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_ShareUrl() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_Sources() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_MatchingStrategy() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::.ctor(System.Boolean,System.Boolean,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck::get_Config() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::ForSanctions() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::ForAdverseMedia() + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::WithCategory(System.String) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::Build() + + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig::get_Categories() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig::.ctor(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedExactMatchingStrategy + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedExactMatchingStrategy::get_Type() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedExactMatchingStrategy::get_ExactMatch() + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy::get_Type() + + + + + + + + + + + System.Double Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy::get_Fuzziness() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy::.ctor(System.Double) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources::get_SearchProfile() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources::get_Type() + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources::get_Types() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources::.ctor(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_Type() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_ApiKey() + + + + + + + + + + + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_Monitoring() + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,System.String> Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_Tags() + + + + + + + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_ClientRef() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::.ctor(System.Boolean,System.Boolean,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy,System.String,System.Boolean,System.Collections.Generic.Dictionary`2<System.String,System.String>,System.String) + + + + + + + + + + + + + + + + + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigYotiAccount + + + + + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigYotiAccount::get_Type() + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigYotiAccount::.ctor(System.Boolean,System.Boolean,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.CreateQrResult + + + + + System.String Yoti.Auth.DigitalIdentity.CreateQrResult::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.CreateQrResult::get_Uri() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService + + + + + System.String Yoti.Auth.DigitalIdentity.DigitalIdentityService::Base64ToBase64URL(System.String) + + + + + + + + + + + + + + + + + + + System.ValueTuple`3<Yoti.Auth.ProtoBuf.Attribute.AttributeList,System.Byte[],System.Exception> Yoti.Auth.DigitalIdentity.DigitalIdentityService::DecryptReceiptContent(Yoti.Auth.DigitalIdentity.Content,System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass11_0 + + + + + Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass11_0::<GetReceiptItemKey>b__0() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass4_0 + + + + + Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass4_0::<CreateShareSession>b__0() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass5_0 + + + + + Yoti.Auth.DigitalIdentity.GetSessionResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass5_0::<GetSession>b__0() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass6_0 + + + + + Yoti.Auth.DigitalIdentity.CreateQrResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass6_0::<CreateQrCode>b__0() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass7_0 + + + + + Yoti.Auth.DigitalIdentity.GetQrCodeResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass7_0::<GetQrCode>b__0() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass8_0 + + + + + Yoti.Auth.DigitalIdentity.ReceiptResponse Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass8_0::<GetReceipt>b__0() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateQrCode>d__6 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateQrCode>d__6::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateShareSession>d__4 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateShareSession>d__4::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetQrCode>d__7 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetQrCode>d__7::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceipt>d__8 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceipt>d__8::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceiptItemKey>d__11 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceiptItemKey>d__11::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetSession>d__5 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetSession>d__5::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetShareReceipt>d__10 + + + + + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetShareReceipt>d__10::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ErrorDetails + + + + + Yoti.Auth.DigitalIdentity.ErrorReason Yoti.Auth.DigitalIdentity.ErrorDetails::get_ErrorReason() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ErrorReason Yoti.Auth.DigitalIdentity.ErrorDetails::GetErrorReason() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ErrorReason + + + + + Yoti.DigitalIdentity.RequirementNotMetDetails Yoti.Auth.DigitalIdentity.ErrorReason::get_RequirementNotMetDetails() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.GetQrCodeResult + + + + + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Expiry() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Policy() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Extensions.BaseExtension> Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Extensions() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Session() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_RedirectUri() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Content + + + + + System.Byte[] Yoti.Auth.DigitalIdentity.Content::get_Profile() + + + + + + + + + + + System.Byte[] Yoti.Auth.DigitalIdentity.Content::get_ExtraData() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ReceiptResponse + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_ID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_SessionID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_Timestamp() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_RememberMeID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_ParentRememberMeID() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Content Yoti.Auth.DigitalIdentity.ReceiptResponse::get_Content() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Content Yoti.Auth.DigitalIdentity.ReceiptResponse::get_OtherPartyContent() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_WrappedItemKeyId() + + + + + + + + + + + System.Byte[] Yoti.Auth.DigitalIdentity.ReceiptResponse::get_WrappedKey() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_Error() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ErrorDetails Yoti.Auth.DigitalIdentity.ReceiptResponse::get_ErrorDetails() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.GetSessionResult + + + + + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Status() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Expiry() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Created() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Updated() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.qrCode Yoti.Auth.DigitalIdentity.GetSessionResult::get_QrCode() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.receipt Yoti.Auth.DigitalIdentity.GetSessionResult::get_Receipt() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.qrCode + + + + + System.String Yoti.Auth.DigitalIdentity.qrCode::get_Id() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.receipt + + + + + System.String Yoti.Auth.DigitalIdentity.receipt::get_Id() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.QrRequest + + + + + System.String Yoti.Auth.DigitalIdentity.QrRequest::get_DisplayMode() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.QrRequest::get_Transport() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.QrRequest::.ctor(System.String,System.String) + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.QrRequestBuilder + + + + + Yoti.Auth.DigitalIdentity.QrRequestBuilder Yoti.Auth.DigitalIdentity.QrRequestBuilder::WithTransport(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.QrRequestBuilder Yoti.Auth.DigitalIdentity.QrRequestBuilder::WithDisplayMode(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.QrRequest Yoti.Auth.DigitalIdentity.QrRequestBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.QrRequestBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse + + + + + System.String Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse::get_ID() + + + + + + + + + + + System.Byte[] Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse::get_Iv() + + + + + + + + + + + System.Byte[] Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse::get_Value() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.SharedReceiptResponse + + + + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_SessionID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_RememberMeID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ParentRememberMeID() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_Timestamp() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_Error() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ErrorDetails Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ErrorDetails() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.UserContent Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_UserContent() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ApplicationContent Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ApplicationContent() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ApplicationContent + + + + + Yoti.Auth.Profile.ApplicationProfile Yoti.Auth.DigitalIdentity.ApplicationContent::get_ApplicationProfile() + + + + + + + + + + + Yoti.Auth.Share.ExtraData Yoti.Auth.DigitalIdentity.ApplicationContent::get_ExtraData() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.UserContent + + + + + Yoti.Auth.Profile.YotiProfile Yoti.Auth.DigitalIdentity.UserContent::get_UserProfile() + + + + + + + + + + + Yoti.Auth.Share.ExtraData Yoti.Auth.DigitalIdentity.UserContent::get_ExtraData() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequest + + + + + System.String Yoti.Auth.DigitalIdentity.ShareSessionRequest::get__redirectUri() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Notification Yoti.Auth.DigitalIdentity.ShareSessionRequest::get__notification() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Policy Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_DynamicPolicy() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Extensions.BaseExtension> Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_Extensions() + + + + + + + + + + + System.Object Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_Subject() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_RedirectUri() + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Notification Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_Notification() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.ShareSessionRequest::.ctor(Yoti.Auth.DigitalIdentity.Policy.Policy,System.String,Yoti.Auth.DigitalIdentity.Policy.Notification,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Extensions.BaseExtension>,System.Object) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithRedirectUri(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithPolicy(Yoti.Auth.DigitalIdentity.Policy.Policy) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithNotification(Yoti.Auth.DigitalIdentity.Policy.Notification) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithExtension(Yoti.Auth.DigitalIdentity.Extensions.BaseExtension) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithSubject(System.Object) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionRequest Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.ShareSessionResult + + + + + System.String Yoti.Auth.DigitalIdentity.ShareSessionResult::get_Id() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ShareSessionResult::get_Status() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.ShareSessionResult::get_Expiry() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.AdvancedIdentityProfile + + + + + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Profile> Yoti.Auth.DigitalIdentity.Policy.AdvancedIdentityProfile::get_Profiles() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Profile + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Profile::get_TrustFramework() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Scheme> Yoti.Auth.DigitalIdentity.Policy.Profile::get_Schemes() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Scheme + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Scheme::get_Label() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Scheme::get_Objective() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Scheme::get_Type() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Constraint + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Constraint::get_ConstraintType() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.Constraint::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Notification + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Notification::get_Url() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.Notification::get_Method() + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,System.String> Yoti.Auth.DigitalIdentity.Policy.Notification::get_Headers() + + + + + + + + + + + System.Boolean Yoti.Auth.DigitalIdentity.Policy.Notification::get_VerifyTls() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.Notification::.ctor(System.String,System.String,System.Collections.Generic.Dictionary`2<System.String,System.String>,System.Boolean) + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder + + + + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithUrl(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithMethod(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithHeaders(System.Collections.Generic.Dictionary`2<System.String,System.String>) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithVerifyTls(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Notification Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::Build() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Policy + + + + + System.Collections.Generic.ICollection`1<Yoti.Auth.DigitalIdentity.Policy.WantedAttribute> Yoti.Auth.DigitalIdentity.Policy.Policy::get_WantedAttributes() + + + + + + + + + + + System.Collections.Generic.HashSet`1<System.Int32> Yoti.Auth.DigitalIdentity.Policy.Policy::get_WantedAuthTypes() + + + + + + + + + + + System.Boolean Yoti.Auth.DigitalIdentity.Policy.Policy::get_WantedRememberMeId() + + + + + + + + + + + System.Object Yoti.Auth.DigitalIdentity.Policy.Policy::get_IdentityProfileRequirements() + + + + + + + + + + + System.Object Yoti.Auth.DigitalIdentity.Policy.Policy::get_AdvancedIdentityProfileRequirements() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.Policy::.ctor(System.Collections.Generic.ICollection`1<Yoti.Auth.DigitalIdentity.Policy.WantedAttribute>,System.Collections.Generic.HashSet`1<System.Int32>,System.Boolean,System.Object,System.Object) + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithWantedAttribute(Yoti.Auth.DigitalIdentity.Policy.WantedAttribute) + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithWantedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithFamilyName(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithGivenNames(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithFullName(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithDateOfBirth(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAgeOver(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAgeUnder(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAgeDerivedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithGender(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithStructuredPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithNationality(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithPhoneNumber(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithSelfie(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithEmail(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithDocumentDetails(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithDocumentImages(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithSelfieAuthentication(System.Boolean) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithPinAuthentication(System.Boolean) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAuthType(System.Int32,System.Boolean) + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithRememberMeId(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithIdentityProfileRequirements(System.Object) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAdvancedIdentityProfileRequirements(Yoti.Auth.DigitalIdentity.Policy.AdvancedIdentityProfile) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.Policy Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.PreferredSources + + + + + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.WantedAnchor> Yoti.Auth.DigitalIdentity.Policy.PreferredSources::get_WantedAnchors() + + + + + + + + + + + System.Boolean Yoti.Auth.DigitalIdentity.Policy.PreferredSources::get_SoftPreference() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.PreferredSources::.ctor(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.WantedAnchor>,System.Boolean) + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraint + + + + + Yoti.Auth.DigitalIdentity.Policy.PreferredSources Yoti.Auth.DigitalIdentity.Policy.SourceConstraint::get_PreferredSources() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.SourceConstraint::.ctor(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.WantedAnchor>,System.Boolean) + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithAnchor(Yoti.Auth.DigitalIdentity.Policy.WantedAnchor) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithSoftPreference(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithAnchorByValue(System.String,System.String) + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithPassport(System.String) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithDrivingLicense(System.String) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithNationalId(System.String) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithPasscard(System.String) + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraint Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::Build() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAnchor + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.WantedAnchor::get_Name() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.WantedAnchor::get_SubType() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.WantedAnchor::.ctor(System.String,System.String) + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder::WithValue(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder::WithSubType(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAnchor Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder::Build() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttribute + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Name() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Derivation() + + + + + + + + + + + System.Nullable`1<System.Boolean> Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Optional() + + + + + + + + + + + System.Nullable`1<System.Boolean> Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_AcceptSelfAsserted() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint> Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Constraints() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::.ctor(System.String,System.String,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>) + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithName(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithOptional(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithDerivation(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithConstraint(Yoti.Auth.DigitalIdentity.Policy.Constraint) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithConstraints(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithAcceptSelfAsserted(System.Boolean) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Policy.WantedAttribute Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::Build() + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::.ctor() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.BaseExtension + + + + + System.String Yoti.Auth.DigitalIdentity.Extensions.BaseExtension::get_ExtensionType() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.BaseExtension::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation + + + + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_Latitude() + + + + + + + + + + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_Longitude() + + + + + + + + + + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_Radius() + + + + + + + + + + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_MaxUncertainty() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::.ctor(System.Double,System.Double,System.Double,System.Double) + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.Extension`1 + + + + + T Yoti.Auth.DigitalIdentity.Extensions.Extension`1::get_Content() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.Extension`1::.ctor(System.String,T) + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1 + + + + + Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1<T> Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1::WithType(System.String) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1<T> Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1::WithContent(T) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<T> Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1::Build() + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent + + + + + Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent::get_ExpectedDeviceLocation() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent::.ctor(System.Double,System.Double,System.Double,System.Double) + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder + + + + + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithLatitude(System.Double) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithLongitude(System.Double) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithRadius(System.Double) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithMaxUncertainty(System.Double) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent> Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::Build() + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::.ctor() + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent + + + + + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent::get_Definitions() + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent::get_ExpiryDate() + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent::.ctor(System.DateTime,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder + + + + + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::WithExpiryDate(System.DateTime) + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinition(System.String) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinitions(System.Collections.Generic.List`1<System.String>) + + + + + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent> Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::Build() + + + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::.ctor() + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1 + + + + + Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1<T> Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1::WithContent(T) + + + + + + + + + + + + + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<T> Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1::Build() + + + + + + + + + + + + Yoti.Auth.DataObjects.ProfileDO + + + + + Yoti.Auth.DataObjects.ReceiptDO Yoti.Auth.DataObjects.ProfileDO::get_Receipt() + + + + + + + + + + + + Yoti.Auth.DataObjects.ReceiptDO + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ReceiptId() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_OtherPartyProfileContent() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ProfileContent() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_OtherPartyExtraDataContent() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ExtraDataContent() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_WrappedReceiptKey() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_PolicyURI() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_PersonalKey() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_RememberMeId() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ParentRememberMeId() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_SharingOutcome() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_Timestamp() + + + + + + + + + + + + Yoti.Auth.Constants.Api + + + + + System.Void Yoti.Auth.Constants.Api::.cctor() + + + + + + + + + + + + + + Yoti.Auth.Attribute.AttributeConverter + + + + + System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>> Yoti.Auth.Attribute.AttributeConverter::ConvertToBaseAttributes(Yoti.Auth.ProtoBuf.Attribute.AttributeList) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Attribute.BaseAttribute Yoti.Auth.Attribute.AttributeConverter::ConvertToBaseAttribute(Yoti.Auth.ProtoBuf.Attribute.Attribute) + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Attribute.BaseAttribute Yoti.Auth.Attribute.AttributeConverter::CreateYotiAttribute(Yoti.Auth.ProtoBuf.Attribute.Attribute,NLog.Logger,System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Object Yoti.Auth.Attribute.AttributeConverter::ParseAttributeValue(Yoti.Auth.ProtoBuf.Attribute.ContentType,NLog.Logger,System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.AttributeConverter::ParseAnchors(Yoti.Auth.ProtoBuf.Attribute.Attribute) + + + + + + + + + + + + + + + + + System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken> Yoti.Auth.Attribute.AttributeConverter::GetJsonValue(System.Byte[]) + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Attribute.MultiValueItem> Yoti.Auth.Attribute.AttributeConverter::ConvertMultiValue(System.Byte[]) + + + + + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Images.Image> Yoti.Auth.Attribute.AttributeConverter::CreateImageListFromMultiValue(System.Collections.Generic.List`1<Yoti.Auth.Attribute.MultiValueItem>) + + + + + + + + + + + + + + + + + + + + + + + + + System.DateTime Yoti.Auth.Attribute.AttributeConverter::GetDateValue(System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Attribute.BaseAttribute + + + + + System.String Yoti.Auth.Attribute.BaseAttribute::GetName() + + + + + + + + + + + System.String Yoti.Auth.Attribute.BaseAttribute::GetId() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.BaseAttribute::GetAnchors() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.BaseAttribute::GetSources() + + + + + + + + + + + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.BaseAttribute::GetVerifiers() + + + + + + + + + + + System.Void Yoti.Auth.Attribute.BaseAttribute::.ctor(System.String,System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor>,System.String) + + + + + + + + + + + + + + + + Yoti.Auth.Attribute.MultiValueItem + + + + + System.Object Yoti.Auth.Attribute.MultiValueItem::get_Value() + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.Attribute.MultiValueItem::get_ContentType() + + + + + + + + + + + System.Void Yoti.Auth.Attribute.MultiValueItem::.ctor(System.Object,Yoti.Auth.ProtoBuf.Attribute.ContentType) + + + + + + + + + + + + + + + Yoti.Auth.Attribute.YotiAttribute`1 + + + + + T Yoti.Auth.Attribute.YotiAttribute`1::GetValue() + + + + + + + + + + + System.Void Yoti.Auth.Attribute.YotiAttribute`1::.ctor(System.String,T,System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor>,System.String) + + + + + + + + + + + + + + Yoti.Auth.Anchors.Anchor + + + + + System.Collections.Generic.List`1<System.Security.Cryptography.X509Certificates.X509Certificate2> Yoti.Auth.Anchors.Anchor::ConvertRawCertToX509List(Google.Protobuf.Collections.RepeatedField`1<Google.Protobuf.ByteString>) + + + + + + + + + + + + + + + + + + Yoti.Auth.Anchors.AnchorType Yoti.Auth.Anchors.Anchor::GetAnchorType() + + + + + + + + + + + System.String Yoti.Auth.Anchors.Anchor::GetValue() + + + + + + + + + + + System.Collections.Generic.List`1<System.Security.Cryptography.X509Certificates.X509Certificate2> Yoti.Auth.Anchors.Anchor::GetOriginServerCerts() + + + + + + + + + + + System.Byte[] Yoti.Auth.Anchors.Anchor::GetSignature() + + + + + + + + + + + Yoti.Auth.Anchors.SignedTimestamp Yoti.Auth.Anchors.Anchor::GetSignedTimeStamp() + + + + + + + + + + + System.String Yoti.Auth.Anchors.Anchor::GetSubType() + + + + + + + + + + + System.Void Yoti.Auth.Anchors.Anchor::.ctor(Yoti.Auth.ProtoBuf.Attribute.Anchor) + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Anchors.AnchorCertificateParser + + + + + Yoti.Auth.Anchors.AnchorVerifierSourceData Yoti.Auth.Anchors.AnchorCertificateParser::GetTypesFromAnchor(Yoti.Auth.ProtoBuf.Attribute.Anchor) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Collections.Generic.List`1<System.String> Yoti.Auth.Anchors.AnchorCertificateParser::GetListOfStringsFromExtension(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.Anchors.AnchorCertificateParser::ExtensionOid(System.Enum) + + + + + + + + + + + + + + + + + + Yoti.Auth.Anchors.AnchorVerifierSourceData + + + + + System.Collections.Generic.HashSet`1<System.String> Yoti.Auth.Anchors.AnchorVerifierSourceData::GetEntries() + + + + + + + + + + + Yoti.Auth.Anchors.AnchorType Yoti.Auth.Anchors.AnchorVerifierSourceData::GetAnchorType() + + + + + + + + + + + System.Void Yoti.Auth.Anchors.AnchorVerifierSourceData::.ctor(System.Collections.Generic.HashSet`1<System.String>,Yoti.Auth.Anchors.AnchorType) + + + + + + + + + + + + + + + Yoti.Auth.Anchors.ExtensionOidAttribute + + + + + System.Void Yoti.Auth.Anchors.ExtensionOidAttribute::.ctor(System.String) + + + + + + + + + + + + + + Yoti.Auth.Anchors.SignedTimestamp + + + + + System.DateTime Yoti.Auth.Anchors.SignedTimestamp::ConvertMicroSecondsSinceEpochToDateTime(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) + + + + + + + + + + + + + + System.Int32 Yoti.Auth.Anchors.SignedTimestamp::GetVersion() + + + + + + + + + + + System.DateTime Yoti.Auth.Anchors.SignedTimestamp::GetTimestamp() + + + + + + + + + + + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetMessageDigest() + + + + + + + + + + + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetChainDigest() + + + + + + + + + + + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetChainDigestSkip1() + + + + + + + + + + + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetChainDigestSkip2() + + + + + + + + + + + System.Void Yoti.Auth.Anchors.SignedTimestamp::.ctor(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) + + + + + + + + + + + + + + + + + + + + Yoti.Auth.Aml.AmlAddress + + + + + System.String Yoti.Auth.Aml.AmlAddress::GetCountry() + + + + + + + + + + + System.String Yoti.Auth.Aml.AmlAddress::GetPostcode() + + + + + + + + + + + System.Void Yoti.Auth.Aml.AmlAddress::.ctor(System.String,System.String) + + + + + + + + + + + + + + + Yoti.Auth.Aml.AmlProfile + + + + + Yoti.Auth.Aml.IAmlAddress Yoti.Auth.Aml.AmlProfile::GetAmlAddress() + + + + + + + + + + + System.String Yoti.Auth.Aml.AmlProfile::GetFamilyName() + + + + + + + + + + + System.String Yoti.Auth.Aml.AmlProfile::GetGivenNames() + + + + + + + + + + + System.String Yoti.Auth.Aml.AmlProfile::GetSsn() + + + + + + + + + + + System.Void Yoti.Auth.Aml.AmlProfile::.ctor(System.String,System.String,Yoti.Auth.Aml.AmlAddress,System.String) + + + + + + + + + + + + + + + + + Yoti.Auth.Aml.AmlResult + + + + + System.Boolean Yoti.Auth.Aml.AmlResult::IsOnFraudList() + + + + + + + + + + + System.Boolean Yoti.Auth.Aml.AmlResult::IsOnPepList() + + + + + + + + + + + System.Boolean Yoti.Auth.Aml.AmlResult::IsOnWatchList() + + + + + + + + + + + + Yoti.Auth.Aml.RemoteAmlService/<PerformCheck>d__0 + + + + + System.Void Yoti.Auth.Aml.RemoteAmlService/<PerformCheck>d__0::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 3d8b3633ecd503331625b725ebe247a6e18384ff Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 15 May 2026 11:00:52 +0100 Subject: [PATCH 45/50] SDK-2806 Fix DigitalIdentityService QR-code URL construction Replace `string.Format($"/v2/.../{0}", id)` with pure interpolation in CreateQrCode and GetQrCode endpoints. The original form mixed an interpolated string with string.Format placeholders, so the {0} was consumed by the interpolator (rendering the integer literal 0) before string.Format ran, silently dropping the sessionId / qrCodeId argument. Every request went to `/v2/sessions/0/qr-codes` or `/v2/qr-codes/0`, making DigitalIdentityService non-functional since 3.19.0. Add RequestUri assertions to the two existing tests so this class of regression can't recur silently. --- src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs | 4 ++-- test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 3043fca8..422c6900 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -116,7 +116,7 @@ internal static async Task CreateQrCode(HttpClient httpClient, U .WithKeyPair(keyPair) .WithBaseUri(apiUrl) .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(string.Format($"/v2/sessions/{0}/qr-codes", sessionId)) + .WithEndpoint($"/v2/sessions/{sessionId}/qr-codes") .WithQueryParam("appId", sdkId) .WithHttpMethod(HttpMethod.Post) .WithContent(body) @@ -148,7 +148,7 @@ internal static async Task GetQrCode(HttpClient httpClient, Uri .WithKeyPair(keyPair) .WithBaseUri(apiUrl) .WithHeader(yotiAuthId, sdkId) - .WithEndpoint(string.Format($"/v2/qr-codes/{0}", qrCodeId)) + .WithEndpoint($"/v2/qr-codes/{qrCodeId}") .WithQueryParam("appId", sdkId) .WithHttpMethod(HttpMethod.Get) .Build(); diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs index 8dddfe73..db61d858 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -58,6 +58,7 @@ public async Task CreateQrCodeAsyncShouldReturnCorrectValues() Assert.IsNotNull(result); Assert.AreEqual(qrCodeId, result.Id); Assert.AreEqual(qrCodeUri, result.Uri); + Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.Contains($"/v2/sessions/{sessionId}/qr-codes")); } [TestMethod] @@ -79,6 +80,7 @@ public async Task GetQrCodeAsyncShouldReturnCorrectValues() Assert.AreEqual(qrCodeId, result.Id); Assert.AreEqual(expiry, result.Expiry); Assert.AreEqual(policy, result.Policy); + Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.Contains($"/v2/qr-codes/{qrCodeId}")); } [TestMethod] From cd8112cabc3fc712259722aa4d28121b68c4175a Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Fri, 15 May 2026 11:11:45 +0100 Subject: [PATCH 46/50] SDK-2806 Address Copilot review: validate sessionId, tighten URL asserts - CreateQrCode: add Validation.NotNull(sessionId, ...) so a null sessionId throws ArgumentNullException instead of silently building `/v2/sessions//qr-codes`, matching the existing pattern in GetSession and GetQrCode. - DigitalIdentityClientEngineTests: replace AbsolutePath.Contains(...) with AbsolutePath.EndsWith(...) for both QR-code endpoint assertions so misplaced or extra path segments can no longer pass silently. --- src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs | 1 + test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 422c6900..464f9b14 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -102,6 +102,7 @@ internal static async Task CreateQrCode(HttpClient httpClient, U Validation.NotNull(apiUrl, nameof(apiUrl)); Validation.NotNull(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); + Validation.NotNull(sessionId, nameof(sessionId)); string serializedQrCode = JsonConvert.SerializeObject( qrRequestPayload, diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs index db61d858..d59f308a 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -58,7 +58,7 @@ public async Task CreateQrCodeAsyncShouldReturnCorrectValues() Assert.IsNotNull(result); Assert.AreEqual(qrCodeId, result.Id); Assert.AreEqual(qrCodeUri, result.Uri); - Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.Contains($"/v2/sessions/{sessionId}/qr-codes")); + Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.EndsWith($"/v2/sessions/{sessionId}/qr-codes")); } [TestMethod] @@ -80,7 +80,7 @@ public async Task GetQrCodeAsyncShouldReturnCorrectValues() Assert.AreEqual(qrCodeId, result.Id); Assert.AreEqual(expiry, result.Expiry); Assert.AreEqual(policy, result.Policy); - Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.Contains($"/v2/qr-codes/{qrCodeId}")); + Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.EndsWith($"/v2/qr-codes/{qrCodeId}")); } [TestMethod] From 51b3c3c0aba9541794580a700f455184824c5f6c Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 26 May 2026 16:05:02 +0100 Subject: [PATCH 47/50] addedd null check test --- .../Aml/AmlExample/AmlExample.csproj.lscache | 222 + .../Controllers/HomeController.cs | 15 +- .../DigitalIdentityExample.csproj.lscache | 435 ++ .../DocScanExample.csproj.lscache | 445 ++ .../CoreExample/CoreExample.csproj.lscache | 403 ++ src/Yoti.Auth/Yoti.Auth.csproj.lscache | 4465 +++++++++++++++++ .../Yoti.Auth.Tests.Common.csproj.lscache | 251 + .../DigitalIdentityClientEngineTests.cs | 13 + .../Yoti.Auth.Tests.csproj.lscache | 390 ++ 9 files changed, 6638 insertions(+), 1 deletion(-) create mode 100644 src/Examples/Aml/AmlExample/AmlExample.csproj.lscache create mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache create mode 100644 src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache create mode 100644 src/Examples/Profile/CoreExample/CoreExample.csproj.lscache create mode 100644 src/Yoti.Auth/Yoti.Auth.csproj.lscache create mode 100644 test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache create mode 100644 test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache diff --git a/src/Examples/Aml/AmlExample/AmlExample.csproj.lscache b/src/Examples/Aml/AmlExample/AmlExample.csproj.lscache new file mode 100644 index 00000000..ed2e26ce --- /dev/null +++ b/src/Examples/Aml/AmlExample/AmlExample.csproj.lscache @@ -0,0 +1,222 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +primary +lastDtbSucceeded + +[properties] +AssemblyName=AmlExample +CommandLineArgsForDesignTimeEvaluation=-langversion:8.0 -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=8.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=AmlExample +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/netcoreapp3.1/AmlExample.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=netcoreapp3.1 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:3 +/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:portable +/filealign:512 +/optimize- +/out:obj/Debug/netcoreapp3.1/AmlExample.dll +/target:exe +/warnaserror+ +/utf8output +/deterministic+ +/langversion:8.0 + +[sourceFiles] +obj/Debug/netcoreapp3.1/ + .NETCoreApp,Version=v3.1.AssemblyAttributes.cs + AmlExample.AssemblyInfo.cs +Program.cs + +[metadataReferences] +../../../Yoti.Auth/bin/Debug/netcoreapp3.1/Yoti.Auth.dll +/ + dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll + google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll + newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + sprache/2.3.1/lib/netstandard2.1/Sprache.dll + +[analyzerConfigFiles] +obj/Debug/netcoreapp3.1/AmlExample.GeneratedMSBuildEditorConfig.editorconfig diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs index 04a06bfa..57a9bf36 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Yoti.Auth; @@ -22,7 +23,7 @@ public HomeController(ILogger logger) // GET: /generate-share [Route("generate-share")] - public IActionResult DigitalIdentity() + public async Task DigitalIdentity() { try { @@ -73,6 +74,18 @@ public IActionResult DigitalIdentity() ViewBag.YotiClientSdkId = _clientSdkId; ViewBag.sessionID = SessionResult.Id; + var qr = await yotiClient.CreateQrCode(SessionResult.Id, new QrRequest()); + Console.WriteLine($"Id: {qr.Id}"); + Console.WriteLine($"Uri: {qr.Uri}"); + + + +var fetched = await yotiClient.GetQrCode(qr.Id); + + Console.WriteLine($"Id: {fetched.Id}"); + Console.WriteLine($"Session Id: {fetched.Session?.Id}"); + + return View("DigitalIdentity", sharedReceiptResponse); } catch (Exception e) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache new file mode 100644 index 00000000..0d6a96ea --- /dev/null +++ b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache @@ -0,0 +1,435 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +primary +lastDtbSucceeded + +[properties] +AssemblyName=DigitalIdentityExample +CommandLineArgsForDesignTimeEvaluation=-langversion:10.0 -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=10.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=DigitalIdentityExample +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/net6.0/DigitalIdentityExample.dll +TargetRefPath=obj/Debug/net6.0/ref/DigitalIdentityExample.dll +TemporaryDependencyNodeTargetIdentifier=net6.0 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:6 +/define:TRACE;DEBUG;NET;NET6_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:portable +/filealign:512 +/optimize- +/out:obj/Debug/net6.0/DigitalIdentityExample.dll +/refout:obj/Debug/net6.0/refint/DigitalIdentityExample.dll +/target:exe +/warnaserror+ +/utf8output +/deterministic+ +/langversion:10.0 + +[sourceFiles] +Controllers/ + AdvancedIdentityShareController.cs + DbsController.cs + HomeController.cs + SuccessController.cs +GlobalSuppressions.cs +Models/ + DisplayAttribute.cs + DisplayAttributes.cs +obj/Debug/net6.0/ + .NETCoreApp,Version=v6.0.AssemblyAttributes.cs + DigitalIdentityExample.AssemblyInfo.cs + DigitalIdentityExample.RazorAssemblyInfo.cs +Program.cs +Startup.cs + +[metadataReferences] +../../../Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll +/ + dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll + google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.aspnetcore.app.ref/6.0.36/ref/net6.0/ + Microsoft.AspNetCore.Antiforgery.dll + Microsoft.AspNetCore.Authentication.Abstractions.dll + Microsoft.AspNetCore.Authentication.Cookies.dll + Microsoft.AspNetCore.Authentication.Core.dll + Microsoft.AspNetCore.Authentication.dll + Microsoft.AspNetCore.Authentication.OAuth.dll + Microsoft.AspNetCore.Authorization.dll + Microsoft.AspNetCore.Authorization.Policy.dll + Microsoft.AspNetCore.Components.Authorization.dll + Microsoft.AspNetCore.Components.dll + Microsoft.AspNetCore.Components.Forms.dll + Microsoft.AspNetCore.Components.Server.dll + Microsoft.AspNetCore.Components.Web.dll + Microsoft.AspNetCore.Connections.Abstractions.dll + Microsoft.AspNetCore.CookiePolicy.dll + Microsoft.AspNetCore.Cors.dll + Microsoft.AspNetCore.Cryptography.Internal.dll + Microsoft.AspNetCore.Cryptography.KeyDerivation.dll + Microsoft.AspNetCore.DataProtection.Abstractions.dll + Microsoft.AspNetCore.DataProtection.dll + Microsoft.AspNetCore.DataProtection.Extensions.dll + Microsoft.AspNetCore.Diagnostics.Abstractions.dll + Microsoft.AspNetCore.Diagnostics.dll + Microsoft.AspNetCore.Diagnostics.HealthChecks.dll + Microsoft.AspNetCore.dll + Microsoft.AspNetCore.HostFiltering.dll + Microsoft.AspNetCore.Hosting.Abstractions.dll + Microsoft.AspNetCore.Hosting.dll + Microsoft.AspNetCore.Hosting.Server.Abstractions.dll + Microsoft.AspNetCore.Html.Abstractions.dll + Microsoft.AspNetCore.Http.Abstractions.dll + Microsoft.AspNetCore.Http.Connections.Common.dll + Microsoft.AspNetCore.Http.Connections.dll + Microsoft.AspNetCore.Http.dll + Microsoft.AspNetCore.Http.Extensions.dll + Microsoft.AspNetCore.Http.Features.dll + Microsoft.AspNetCore.Http.Results.dll + Microsoft.AspNetCore.HttpLogging.dll + Microsoft.AspNetCore.HttpOverrides.dll + Microsoft.AspNetCore.HttpsPolicy.dll + Microsoft.AspNetCore.Identity.dll + Microsoft.AspNetCore.Localization.dll + Microsoft.AspNetCore.Localization.Routing.dll + Microsoft.AspNetCore.Metadata.dll + Microsoft.AspNetCore.Mvc.Abstractions.dll + Microsoft.AspNetCore.Mvc.ApiExplorer.dll + Microsoft.AspNetCore.Mvc.Core.dll + Microsoft.AspNetCore.Mvc.Cors.dll + Microsoft.AspNetCore.Mvc.DataAnnotations.dll + Microsoft.AspNetCore.Mvc.dll + Microsoft.AspNetCore.Mvc.Formatters.Json.dll + Microsoft.AspNetCore.Mvc.Formatters.Xml.dll + Microsoft.AspNetCore.Mvc.Localization.dll + Microsoft.AspNetCore.Mvc.Razor.dll + Microsoft.AspNetCore.Mvc.RazorPages.dll + Microsoft.AspNetCore.Mvc.TagHelpers.dll + Microsoft.AspNetCore.Mvc.ViewFeatures.dll + Microsoft.AspNetCore.Razor.dll + Microsoft.AspNetCore.Razor.Runtime.dll + Microsoft.AspNetCore.ResponseCaching.Abstractions.dll + Microsoft.AspNetCore.ResponseCaching.dll + Microsoft.AspNetCore.ResponseCompression.dll + Microsoft.AspNetCore.Rewrite.dll + Microsoft.AspNetCore.Routing.Abstractions.dll + Microsoft.AspNetCore.Routing.dll + Microsoft.AspNetCore.Server.HttpSys.dll + Microsoft.AspNetCore.Server.IIS.dll + Microsoft.AspNetCore.Server.IISIntegration.dll + Microsoft.AspNetCore.Server.Kestrel.Core.dll + Microsoft.AspNetCore.Server.Kestrel.dll + Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll + Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll + Microsoft.AspNetCore.Session.dll + Microsoft.AspNetCore.SignalR.Common.dll + Microsoft.AspNetCore.SignalR.Core.dll + Microsoft.AspNetCore.SignalR.dll + Microsoft.AspNetCore.SignalR.Protocols.Json.dll + Microsoft.AspNetCore.StaticFiles.dll + Microsoft.AspNetCore.WebSockets.dll + Microsoft.AspNetCore.WebUtilities.dll + Microsoft.Extensions.Caching.Abstractions.dll + Microsoft.Extensions.Caching.Memory.dll + Microsoft.Extensions.Configuration.Abstractions.dll + Microsoft.Extensions.Configuration.Binder.dll + Microsoft.Extensions.Configuration.CommandLine.dll + Microsoft.Extensions.Configuration.dll + Microsoft.Extensions.Configuration.EnvironmentVariables.dll + Microsoft.Extensions.Configuration.FileExtensions.dll + Microsoft.Extensions.Configuration.Ini.dll + Microsoft.Extensions.Configuration.Json.dll + Microsoft.Extensions.Configuration.KeyPerFile.dll + Microsoft.Extensions.Configuration.UserSecrets.dll + Microsoft.Extensions.Configuration.Xml.dll + Microsoft.Extensions.DependencyInjection.Abstractions.dll + Microsoft.Extensions.DependencyInjection.dll + Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll + Microsoft.Extensions.Diagnostics.HealthChecks.dll + Microsoft.Extensions.Features.dll + Microsoft.Extensions.FileProviders.Abstractions.dll + Microsoft.Extensions.FileProviders.Composite.dll + Microsoft.Extensions.FileProviders.Embedded.dll + Microsoft.Extensions.FileProviders.Physical.dll + Microsoft.Extensions.FileSystemGlobbing.dll + Microsoft.Extensions.Hosting.Abstractions.dll + Microsoft.Extensions.Hosting.dll + Microsoft.Extensions.Http.dll + Microsoft.Extensions.Identity.Core.dll + Microsoft.Extensions.Identity.Stores.dll + Microsoft.Extensions.Localization.Abstractions.dll + Microsoft.Extensions.Localization.dll + Microsoft.Extensions.Logging.Abstractions.dll + Microsoft.Extensions.Logging.Configuration.dll + Microsoft.Extensions.Logging.Console.dll + Microsoft.Extensions.Logging.Debug.dll + Microsoft.Extensions.Logging.dll + Microsoft.Extensions.Logging.EventLog.dll + Microsoft.Extensions.Logging.EventSource.dll + Microsoft.Extensions.Logging.TraceSource.dll + Microsoft.Extensions.ObjectPool.dll + Microsoft.Extensions.Options.ConfigurationExtensions.dll + Microsoft.Extensions.Options.DataAnnotations.dll + Microsoft.Extensions.Options.dll + Microsoft.Extensions.Primitives.dll + Microsoft.Extensions.WebEncoders.dll + Microsoft.JSInterop.dll + Microsoft.Net.Http.Headers.dll + System.Diagnostics.EventLog.dll + System.IO.Pipelines.dll + System.Security.Cryptography.Xml.dll + microsoft.aspnetcore.razor.language/3.1.0/lib/netstandard2.0/Microsoft.AspNetCore.Razor.Language.dll + microsoft.bcl.asyncinterfaces/6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll + microsoft.codeanalysis.common/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll + microsoft.codeanalysis.csharp.workspaces/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll + microsoft.codeanalysis.csharp/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll + microsoft.codeanalysis.razor/3.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Razor.dll + microsoft.codeanalysis.workspaces.common/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll + microsoft.netcore.app.ref/6.0.36/ref/net6.0/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + Microsoft.Win32.Registry.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Formats.Asn1.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.AccessControl.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.AccessControl.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.Http.Json.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.AccessControl.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Cng.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.OpenSsl.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.Principal.Windows.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll + microsoft.visualstudio.web.codegeneration.contracts/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll + microsoft.visualstudio.web.codegeneration.core/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll + microsoft.visualstudio.web.codegeneration.design/3.1.4/lib/netcoreapp3.1/dotnet-aspnet-codegenerator-design.dll + microsoft.visualstudio.web.codegeneration.entityframeworkcore/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll + microsoft.visualstudio.web.codegeneration.templating/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll + microsoft.visualstudio.web.codegeneration.utils/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll + microsoft.visualstudio.web.codegeneration/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.dll + microsoft.visualstudio.web.codegenerators.mvc/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll + newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + nuget.frameworks/4.7.0/lib/netstandard1.6/NuGet.Frameworks.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + sprache/2.3.1/lib/netstandard2.1/Sprache.dll + system.composition.attributedmodel/6.0.0/lib/net6.0/System.Composition.AttributedModel.dll + system.composition.convention/6.0.0/lib/net6.0/System.Composition.Convention.dll + system.composition.hosting/6.0.0/lib/net6.0/System.Composition.Hosting.dll + system.composition.runtime/6.0.0/lib/net6.0/System.Composition.Runtime.dll + system.composition.typedparts/6.0.0/lib/net6.0/System.Composition.TypedParts.dll + +[analyzerReferences] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Razor/source-generators/ + Microsoft.AspNetCore.Razor.Utilities.Shared.dll + Microsoft.CodeAnalysis.Razor.Compiler.dll + Microsoft.Extensions.ObjectPool.dll + System.Collections.Immutable.dll +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/ + Microsoft.AspNetCore.Analyzers.dll + Microsoft.AspNetCore.Components.SdkAnalyzers.dll + Microsoft.AspNetCore.Mvc.Analyzers.dll +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll +/microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/cs/ + Microsoft.AspNetCore.App.Analyzers.dll + Microsoft.AspNetCore.App.CodeFixes.dll +/ + microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll + microsoft.codeanalysis.analyzers/3.3.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.Analyzers.dll + Microsoft.CodeAnalysis.CSharp.Analyzers.dll + microsoft.netcore.app.ref/6.0.36/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll + +[analyzerConfigFiles] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_6_default.globalconfig +obj/Debug/net6.0/DigitalIdentityExample.GeneratedMSBuildEditorConfig.editorconfig + +[additionalFiles] +Views/ + AdvancedIdentityShare/AdvancedIdentityShare.cshtml + Dbs/Dbs.cshtml + Home/DigitalIdentity.cshtml + Success/ + Error.cshtml + SuccessResult.cshtml + +[dynamicFiles] +Views/ + AdvancedIdentityShare/AdvancedIdentityShare.cshtml + Dbs/Dbs.cshtml + Home/DigitalIdentity.cshtml + Success/ + Error.cshtml + SuccessResult.cshtml diff --git a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache new file mode 100644 index 00000000..1bfc3662 --- /dev/null +++ b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache @@ -0,0 +1,445 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +primary +lastDtbSucceeded + +[properties] +CommandLineArgsForDesignTimeEvaluation=-langversion:10.0 -define:TRACE +MaxSupportedLangVersion=10.0 +TargetPath=bin/Debug/net6.0/DocScanExample.dll +TargetRefPath=obj/Debug/net6.0/ref/DocScanExample.dll +TemporaryDependencyNodeTargetIdentifier=net6.0 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:6 +/define:TRACE;DEBUG;NET;NET6_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:portable +/filealign:512 +/optimize- +/out:obj/Debug/net6.0/DocScanExample.dll +/refout:obj/Debug/net6.0/refint/DocScanExample.dll +/target:exe +/warnaserror- +/utf8output +/deterministic+ +/langversion:10.0 +/warnaserror+:NU1605 + +[sourceFiles] +Controllers/ + AdvancedIdentityController.cs + DbsController.cs + HomeController.cs + IdentityProfileController.cs + IdVerifyController.cs +Models/ + DisplayHelper.cs + ErrorViewModel.cs +obj/Debug/net6.0/ + .NETCoreApp,Version=v6.0.AssemblyAttributes.cs + DocScanExample.AssemblyInfo.cs + DocScanExample.RazorAssemblyInfo.cs +Program.cs +Startup.cs + +[metadataReferences] +../../../Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll +/ + dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll + google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.aspnetcore.app.ref/6.0.36/ref/net6.0/ + Microsoft.AspNetCore.Antiforgery.dll + Microsoft.AspNetCore.Authentication.Abstractions.dll + Microsoft.AspNetCore.Authentication.Cookies.dll + Microsoft.AspNetCore.Authentication.Core.dll + Microsoft.AspNetCore.Authentication.dll + Microsoft.AspNetCore.Authentication.OAuth.dll + Microsoft.AspNetCore.Authorization.dll + Microsoft.AspNetCore.Authorization.Policy.dll + Microsoft.AspNetCore.Components.Authorization.dll + Microsoft.AspNetCore.Components.dll + Microsoft.AspNetCore.Components.Forms.dll + Microsoft.AspNetCore.Components.Server.dll + Microsoft.AspNetCore.Components.Web.dll + Microsoft.AspNetCore.Connections.Abstractions.dll + Microsoft.AspNetCore.CookiePolicy.dll + Microsoft.AspNetCore.Cors.dll + Microsoft.AspNetCore.Cryptography.Internal.dll + Microsoft.AspNetCore.Cryptography.KeyDerivation.dll + Microsoft.AspNetCore.DataProtection.Abstractions.dll + Microsoft.AspNetCore.DataProtection.dll + Microsoft.AspNetCore.DataProtection.Extensions.dll + Microsoft.AspNetCore.Diagnostics.Abstractions.dll + Microsoft.AspNetCore.Diagnostics.dll + Microsoft.AspNetCore.Diagnostics.HealthChecks.dll + Microsoft.AspNetCore.dll + Microsoft.AspNetCore.HostFiltering.dll + Microsoft.AspNetCore.Hosting.Abstractions.dll + Microsoft.AspNetCore.Hosting.dll + Microsoft.AspNetCore.Hosting.Server.Abstractions.dll + Microsoft.AspNetCore.Html.Abstractions.dll + Microsoft.AspNetCore.Http.Abstractions.dll + Microsoft.AspNetCore.Http.Connections.Common.dll + Microsoft.AspNetCore.Http.Connections.dll + Microsoft.AspNetCore.Http.dll + Microsoft.AspNetCore.Http.Extensions.dll + Microsoft.AspNetCore.Http.Features.dll + Microsoft.AspNetCore.Http.Results.dll + Microsoft.AspNetCore.HttpLogging.dll + Microsoft.AspNetCore.HttpOverrides.dll + Microsoft.AspNetCore.HttpsPolicy.dll + Microsoft.AspNetCore.Identity.dll + Microsoft.AspNetCore.Localization.dll + Microsoft.AspNetCore.Localization.Routing.dll + Microsoft.AspNetCore.Metadata.dll + Microsoft.AspNetCore.Mvc.Abstractions.dll + Microsoft.AspNetCore.Mvc.ApiExplorer.dll + Microsoft.AspNetCore.Mvc.Core.dll + Microsoft.AspNetCore.Mvc.Cors.dll + Microsoft.AspNetCore.Mvc.DataAnnotations.dll + Microsoft.AspNetCore.Mvc.dll + Microsoft.AspNetCore.Mvc.Formatters.Json.dll + Microsoft.AspNetCore.Mvc.Formatters.Xml.dll + Microsoft.AspNetCore.Mvc.Localization.dll + Microsoft.AspNetCore.Mvc.Razor.dll + Microsoft.AspNetCore.Mvc.RazorPages.dll + Microsoft.AspNetCore.Mvc.TagHelpers.dll + Microsoft.AspNetCore.Mvc.ViewFeatures.dll + Microsoft.AspNetCore.Razor.dll + Microsoft.AspNetCore.Razor.Runtime.dll + Microsoft.AspNetCore.ResponseCaching.Abstractions.dll + Microsoft.AspNetCore.ResponseCaching.dll + Microsoft.AspNetCore.ResponseCompression.dll + Microsoft.AspNetCore.Rewrite.dll + Microsoft.AspNetCore.Routing.Abstractions.dll + Microsoft.AspNetCore.Routing.dll + Microsoft.AspNetCore.Server.HttpSys.dll + Microsoft.AspNetCore.Server.IIS.dll + Microsoft.AspNetCore.Server.IISIntegration.dll + Microsoft.AspNetCore.Server.Kestrel.Core.dll + Microsoft.AspNetCore.Server.Kestrel.dll + Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll + Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll + Microsoft.AspNetCore.Session.dll + Microsoft.AspNetCore.SignalR.Common.dll + Microsoft.AspNetCore.SignalR.Core.dll + Microsoft.AspNetCore.SignalR.dll + Microsoft.AspNetCore.SignalR.Protocols.Json.dll + Microsoft.AspNetCore.StaticFiles.dll + Microsoft.AspNetCore.WebSockets.dll + Microsoft.AspNetCore.WebUtilities.dll + Microsoft.Extensions.Caching.Abstractions.dll + Microsoft.Extensions.Caching.Memory.dll + Microsoft.Extensions.Configuration.Abstractions.dll + Microsoft.Extensions.Configuration.Binder.dll + Microsoft.Extensions.Configuration.CommandLine.dll + Microsoft.Extensions.Configuration.dll + Microsoft.Extensions.Configuration.EnvironmentVariables.dll + Microsoft.Extensions.Configuration.FileExtensions.dll + Microsoft.Extensions.Configuration.Ini.dll + Microsoft.Extensions.Configuration.Json.dll + Microsoft.Extensions.Configuration.KeyPerFile.dll + Microsoft.Extensions.Configuration.UserSecrets.dll + Microsoft.Extensions.Configuration.Xml.dll + Microsoft.Extensions.DependencyInjection.Abstractions.dll + Microsoft.Extensions.DependencyInjection.dll + Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll + Microsoft.Extensions.Diagnostics.HealthChecks.dll + Microsoft.Extensions.Features.dll + Microsoft.Extensions.FileProviders.Abstractions.dll + Microsoft.Extensions.FileProviders.Composite.dll + Microsoft.Extensions.FileProviders.Embedded.dll + Microsoft.Extensions.FileProviders.Physical.dll + Microsoft.Extensions.FileSystemGlobbing.dll + Microsoft.Extensions.Hosting.Abstractions.dll + Microsoft.Extensions.Hosting.dll + Microsoft.Extensions.Http.dll + Microsoft.Extensions.Identity.Core.dll + Microsoft.Extensions.Identity.Stores.dll + Microsoft.Extensions.Localization.Abstractions.dll + Microsoft.Extensions.Localization.dll + Microsoft.Extensions.Logging.Abstractions.dll + Microsoft.Extensions.Logging.Configuration.dll + Microsoft.Extensions.Logging.Console.dll + Microsoft.Extensions.Logging.Debug.dll + Microsoft.Extensions.Logging.dll + Microsoft.Extensions.Logging.EventLog.dll + Microsoft.Extensions.Logging.EventSource.dll + Microsoft.Extensions.Logging.TraceSource.dll + Microsoft.Extensions.ObjectPool.dll + Microsoft.Extensions.Options.ConfigurationExtensions.dll + Microsoft.Extensions.Options.DataAnnotations.dll + Microsoft.Extensions.Options.dll + Microsoft.Extensions.Primitives.dll + Microsoft.Extensions.WebEncoders.dll + Microsoft.JSInterop.dll + Microsoft.Net.Http.Headers.dll + System.Diagnostics.EventLog.dll + System.IO.Pipelines.dll + System.Security.Cryptography.Xml.dll + microsoft.aspnetcore.razor.language/3.1.0/lib/netstandard2.0/Microsoft.AspNetCore.Razor.Language.dll + microsoft.codeanalysis.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.dll + microsoft.codeanalysis.csharp.workspaces/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll + microsoft.codeanalysis.csharp/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll + microsoft.codeanalysis.razor/3.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Razor.dll + microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll + microsoft.netcore.app.ref/6.0.36/ref/net6.0/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + Microsoft.Win32.Registry.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Formats.Asn1.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.AccessControl.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.AccessControl.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.Http.Json.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.AccessControl.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Cng.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.OpenSsl.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.Principal.Windows.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll + microsoft.visualstudio.web.codegeneration.contracts/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll + microsoft.visualstudio.web.codegeneration.core/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll + microsoft.visualstudio.web.codegeneration.design/3.1.4/lib/netcoreapp3.1/dotnet-aspnet-codegenerator-design.dll + microsoft.visualstudio.web.codegeneration.entityframeworkcore/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll + microsoft.visualstudio.web.codegeneration.templating/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll + microsoft.visualstudio.web.codegeneration.utils/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll + microsoft.visualstudio.web.codegeneration/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.dll + microsoft.visualstudio.web.codegenerators.mvc/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll + newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + nuget.frameworks/4.7.0/lib/netstandard1.6/NuGet.Frameworks.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + sprache/2.3.1/lib/netstandard2.1/Sprache.dll + system.composition.attributedmodel/1.0.31/lib/netstandard1.0/System.Composition.AttributedModel.dll + system.composition.convention/1.0.31/lib/netstandard1.0/System.Composition.Convention.dll + system.composition.hosting/1.0.31/lib/netstandard1.0/System.Composition.Hosting.dll + system.composition.runtime/1.0.31/lib/netstandard1.0/System.Composition.Runtime.dll + system.composition.typedparts/1.0.31/lib/netstandard1.0/System.Composition.TypedParts.dll + +[analyzerReferences] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Razor/source-generators/ + Microsoft.AspNetCore.Razor.Utilities.Shared.dll + Microsoft.CodeAnalysis.Razor.Compiler.dll + Microsoft.Extensions.ObjectPool.dll + System.Collections.Immutable.dll +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/ + Microsoft.AspNetCore.Analyzers.dll + Microsoft.AspNetCore.Components.SdkAnalyzers.dll + Microsoft.AspNetCore.Mvc.Analyzers.dll +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll +/microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/cs/ + Microsoft.AspNetCore.App.Analyzers.dll + Microsoft.AspNetCore.App.CodeFixes.dll +/ + microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll + microsoft.codeanalysis.analyzers/2.9.4/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.Analyzers.dll + Microsoft.CodeAnalysis.CSharp.Analyzers.dll + microsoft.netcore.app.ref/6.0.36/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll + +[analyzerConfigFiles] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_6_default.globalconfig +obj/Debug/net6.0/DocScanExample.GeneratedMSBuildEditorConfig.editorconfig + +[additionalFiles] +Views/ + AdvancedIdentityProfile/Index.cshtml + Dbs/Index.cshtml + Home/ + Index.cshtml + PrivacyPolicy.cshtml + IdentityProfile/Index.cshtml + IdVerify/Success.cshtml + Shared/ + Error.cshtml + _Check.cshtml + _Layout.cshtml + _Task.cshtml + _ValidationScriptsPartial.cshtml + _ViewImports.cshtml + _ViewStart.cshtml + +[dynamicFiles] +Views/ + AdvancedIdentityProfile/Index.cshtml + Dbs/Index.cshtml + Home/ + Index.cshtml + PrivacyPolicy.cshtml + IdentityProfile/Index.cshtml + IdVerify/Success.cshtml + Shared/ + Error.cshtml + _Check.cshtml + _Layout.cshtml + _Task.cshtml + _ValidationScriptsPartial.cshtml + _ViewImports.cshtml + _ViewStart.cshtml diff --git a/src/Examples/Profile/CoreExample/CoreExample.csproj.lscache b/src/Examples/Profile/CoreExample/CoreExample.csproj.lscache new file mode 100644 index 00000000..0a31fbc1 --- /dev/null +++ b/src/Examples/Profile/CoreExample/CoreExample.csproj.lscache @@ -0,0 +1,403 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +primary +lastDtbSucceeded + +[properties] +AssemblyName=CoreExample +CommandLineArgsForDesignTimeEvaluation=-langversion:8.0 -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=8.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=CoreExample +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/netcoreapp3.1/CoreExample.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=netcoreapp3.1 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:3 +/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:portable +/filealign:512 +/optimize- +/out:obj/Debug/netcoreapp3.1/CoreExample.dll +/target:exe +/warnaserror+ +/utf8output +/deterministic+ +/langversion:8.0 + +[sourceFiles] +Controllers/ + AccountController.cs + HomeController.cs +GlobalSuppressions.cs +Models/ + DisplayAttribute.cs + DisplayAttributes.cs +obj/Debug/netcoreapp3.1/ + .NETCoreApp,Version=v3.1.AssemblyAttributes.cs + CoreExample.AssemblyInfo.cs + CoreExample.RazorAssemblyInfo.cs +Program.cs +Startup.cs + +[metadataReferences] +../../../Yoti.Auth/bin/Debug/netcoreapp3.1/Yoti.Auth.dll +/ + dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll + google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.aspnetcore.app.ref/3.1.10/ref/netcoreapp3.1/ + Microsoft.AspNetCore.Antiforgery.dll + Microsoft.AspNetCore.Authentication.Abstractions.dll + Microsoft.AspNetCore.Authentication.Cookies.dll + Microsoft.AspNetCore.Authentication.Core.dll + Microsoft.AspNetCore.Authentication.dll + Microsoft.AspNetCore.Authentication.OAuth.dll + Microsoft.AspNetCore.Authorization.dll + Microsoft.AspNetCore.Authorization.Policy.dll + Microsoft.AspNetCore.Components.Authorization.dll + Microsoft.AspNetCore.Components.dll + Microsoft.AspNetCore.Components.Forms.dll + Microsoft.AspNetCore.Components.Server.dll + Microsoft.AspNetCore.Components.Web.dll + Microsoft.AspNetCore.Connections.Abstractions.dll + Microsoft.AspNetCore.CookiePolicy.dll + Microsoft.AspNetCore.Cors.dll + Microsoft.AspNetCore.Cryptography.Internal.dll + Microsoft.AspNetCore.Cryptography.KeyDerivation.dll + Microsoft.AspNetCore.DataProtection.Abstractions.dll + Microsoft.AspNetCore.DataProtection.dll + Microsoft.AspNetCore.DataProtection.Extensions.dll + Microsoft.AspNetCore.Diagnostics.Abstractions.dll + Microsoft.AspNetCore.Diagnostics.dll + Microsoft.AspNetCore.Diagnostics.HealthChecks.dll + Microsoft.AspNetCore.dll + Microsoft.AspNetCore.HostFiltering.dll + Microsoft.AspNetCore.Hosting.Abstractions.dll + Microsoft.AspNetCore.Hosting.dll + Microsoft.AspNetCore.Hosting.Server.Abstractions.dll + Microsoft.AspNetCore.Html.Abstractions.dll + Microsoft.AspNetCore.Http.Abstractions.dll + Microsoft.AspNetCore.Http.Connections.Common.dll + Microsoft.AspNetCore.Http.Connections.dll + Microsoft.AspNetCore.Http.dll + Microsoft.AspNetCore.Http.Extensions.dll + Microsoft.AspNetCore.Http.Features.dll + Microsoft.AspNetCore.HttpOverrides.dll + Microsoft.AspNetCore.HttpsPolicy.dll + Microsoft.AspNetCore.Identity.dll + Microsoft.AspNetCore.Localization.dll + Microsoft.AspNetCore.Localization.Routing.dll + Microsoft.AspNetCore.Metadata.dll + Microsoft.AspNetCore.Mvc.Abstractions.dll + Microsoft.AspNetCore.Mvc.ApiExplorer.dll + Microsoft.AspNetCore.Mvc.Core.dll + Microsoft.AspNetCore.Mvc.Cors.dll + Microsoft.AspNetCore.Mvc.DataAnnotations.dll + Microsoft.AspNetCore.Mvc.dll + Microsoft.AspNetCore.Mvc.Formatters.Json.dll + Microsoft.AspNetCore.Mvc.Formatters.Xml.dll + Microsoft.AspNetCore.Mvc.Localization.dll + Microsoft.AspNetCore.Mvc.Razor.dll + Microsoft.AspNetCore.Mvc.RazorPages.dll + Microsoft.AspNetCore.Mvc.TagHelpers.dll + Microsoft.AspNetCore.Mvc.ViewFeatures.dll + Microsoft.AspNetCore.Razor.dll + Microsoft.AspNetCore.Razor.Runtime.dll + Microsoft.AspNetCore.ResponseCaching.Abstractions.dll + Microsoft.AspNetCore.ResponseCaching.dll + Microsoft.AspNetCore.ResponseCompression.dll + Microsoft.AspNetCore.Rewrite.dll + Microsoft.AspNetCore.Routing.Abstractions.dll + Microsoft.AspNetCore.Routing.dll + Microsoft.AspNetCore.Server.HttpSys.dll + Microsoft.AspNetCore.Server.IIS.dll + Microsoft.AspNetCore.Server.IISIntegration.dll + Microsoft.AspNetCore.Server.Kestrel.Core.dll + Microsoft.AspNetCore.Server.Kestrel.dll + Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll + Microsoft.AspNetCore.Session.dll + Microsoft.AspNetCore.SignalR.Common.dll + Microsoft.AspNetCore.SignalR.Core.dll + Microsoft.AspNetCore.SignalR.dll + Microsoft.AspNetCore.SignalR.Protocols.Json.dll + Microsoft.AspNetCore.StaticFiles.dll + Microsoft.AspNetCore.WebSockets.dll + Microsoft.AspNetCore.WebUtilities.dll + Microsoft.Extensions.Caching.Abstractions.dll + Microsoft.Extensions.Caching.Memory.dll + Microsoft.Extensions.Configuration.Abstractions.dll + Microsoft.Extensions.Configuration.Binder.dll + Microsoft.Extensions.Configuration.CommandLine.dll + Microsoft.Extensions.Configuration.dll + Microsoft.Extensions.Configuration.EnvironmentVariables.dll + Microsoft.Extensions.Configuration.FileExtensions.dll + Microsoft.Extensions.Configuration.Ini.dll + Microsoft.Extensions.Configuration.Json.dll + Microsoft.Extensions.Configuration.KeyPerFile.dll + Microsoft.Extensions.Configuration.UserSecrets.dll + Microsoft.Extensions.Configuration.Xml.dll + Microsoft.Extensions.DependencyInjection.Abstractions.dll + Microsoft.Extensions.DependencyInjection.dll + Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll + Microsoft.Extensions.Diagnostics.HealthChecks.dll + Microsoft.Extensions.FileProviders.Abstractions.dll + Microsoft.Extensions.FileProviders.Composite.dll + Microsoft.Extensions.FileProviders.Embedded.dll + Microsoft.Extensions.FileProviders.Physical.dll + Microsoft.Extensions.FileSystemGlobbing.dll + Microsoft.Extensions.Hosting.Abstractions.dll + Microsoft.Extensions.Hosting.dll + Microsoft.Extensions.Http.dll + Microsoft.Extensions.Identity.Core.dll + Microsoft.Extensions.Identity.Stores.dll + Microsoft.Extensions.Localization.Abstractions.dll + Microsoft.Extensions.Localization.dll + Microsoft.Extensions.Logging.Abstractions.dll + Microsoft.Extensions.Logging.Configuration.dll + Microsoft.Extensions.Logging.Console.dll + Microsoft.Extensions.Logging.Debug.dll + Microsoft.Extensions.Logging.dll + Microsoft.Extensions.Logging.EventLog.dll + Microsoft.Extensions.Logging.EventSource.dll + Microsoft.Extensions.Logging.TraceSource.dll + Microsoft.Extensions.ObjectPool.dll + Microsoft.Extensions.Options.ConfigurationExtensions.dll + Microsoft.Extensions.Options.DataAnnotations.dll + Microsoft.Extensions.Options.dll + Microsoft.Extensions.Primitives.dll + Microsoft.Extensions.WebEncoders.dll + Microsoft.JSInterop.dll + Microsoft.Net.Http.Headers.dll + Microsoft.Win32.Registry.dll + System.Diagnostics.EventLog.dll + System.Security.AccessControl.dll + System.Security.Cryptography.Cng.dll + System.Security.Cryptography.Xml.dll + System.Security.Permissions.dll + System.Security.Principal.Windows.dll + System.Windows.Extensions.dll + microsoft.aspnetcore.razor.language/3.1.0/lib/netstandard2.0/Microsoft.AspNetCore.Razor.Language.dll + microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll + microsoft.codeanalysis.common/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.dll + microsoft.codeanalysis.csharp.workspaces/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll + microsoft.codeanalysis.csharp/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll + microsoft.codeanalysis.razor/3.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Razor.dll + microsoft.codeanalysis.workspaces.common/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll + microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll + microsoft.visualstudio.web.codegeneration.contracts/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll + microsoft.visualstudio.web.codegeneration.core/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll + microsoft.visualstudio.web.codegeneration.design/3.1.4/lib/netcoreapp3.1/dotnet-aspnet-codegenerator-design.dll + microsoft.visualstudio.web.codegeneration.entityframeworkcore/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll + microsoft.visualstudio.web.codegeneration.templating/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll + microsoft.visualstudio.web.codegeneration.utils/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll + microsoft.visualstudio.web.codegeneration/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.dll + microsoft.visualstudio.web.codegenerators.mvc/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll + newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + nuget.frameworks/4.7.0/lib/netstandard1.6/NuGet.Frameworks.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + sprache/2.3.1/lib/netstandard2.1/Sprache.dll + system.collections.immutable/8.0.0/lib/netstandard2.0/System.Collections.Immutable.dll + system.composition.attributedmodel/8.0.0/lib/netstandard2.0/System.Composition.AttributedModel.dll + system.composition.convention/8.0.0/lib/netstandard2.0/System.Composition.Convention.dll + system.composition.hosting/8.0.0/lib/netstandard2.0/System.Composition.Hosting.dll + system.composition.runtime/8.0.0/lib/netstandard2.0/System.Composition.Runtime.dll + system.composition.typedparts/8.0.0/lib/netstandard2.0/System.Composition.TypedParts.dll + system.io.pipelines/8.0.0/lib/netstandard2.0/System.IO.Pipelines.dll + system.reflection.metadata/8.0.0/lib/netstandard2.0/System.Reflection.Metadata.dll + system.runtime.compilerservices.unsafe/6.0.0/lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll + system.text.encoding.codepages/8.0.0/lib/netstandard2.0/System.Text.Encoding.CodePages.dll + system.threading.channels/8.0.0/lib/netstandard2.1/System.Threading.Channels.dll + +[analyzerReferences] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/ + Microsoft.AspNetCore.Analyzers.dll + Microsoft.AspNetCore.Components.SdkAnalyzers.dll + Microsoft.AspNetCore.Mvc.Analyzers.dll +/microsoft.codeanalysis.analyzers/3.3.4/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.Analyzers.dll + Microsoft.CodeAnalysis.CSharp.Analyzers.dll + +[analyzerConfigFiles] +obj/Debug/netcoreapp3.1/CoreExample.GeneratedMSBuildEditorConfig.editorconfig + +[dynamicFiles] +Views/Account/ + Connect.cshtml + Error.cshtml +Views/Home/ + DBSCheck.cshtml + DynamicScenario.cshtml + Index.cshtml +Views/_ViewImports.cshtml diff --git a/src/Yoti.Auth/Yoti.Auth.csproj.lscache b/src/Yoti.Auth/Yoti.Auth.csproj.lscache new file mode 100644 index 00000000..2c48600c --- /dev/null +++ b/src/Yoti.Auth/Yoti.Auth.csproj.lscache @@ -0,0 +1,4465 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=net452 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=7.3 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETFramework +TargetPath=bin/Debug/net452/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=net452 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:4 +/define:TRACE;DEBUG;NETFRAMEWORK;NET452;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/net452/Yoti.Auth.dll +/subsystemversion:6.00 +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/net452/ + .NETFramework,Version=v4.5.2.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/ + google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/net45/JsonSubTypes.dll + microsoft.netframework.referenceassemblies.net452/1.0.3/build/.NETFramework/v4.5.2/Facades/ + System.Collections.Concurrent.dll + System.Collections.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.Tools.dll + System.Diagnostics.Tracing.dll + System.Dynamic.Runtime.dll + System.Globalization.dll + System.IO.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Net.NetworkInformation.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.ObjectModel.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Primitives.dll + System.Resources.ResourceManager.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Principal.dll + System.ServiceModel.Duplex.dll + System.ServiceModel.Http.dll + System.ServiceModel.NetTcp.dll + System.ServiceModel.Primitives.dll + System.ServiceModel.Security.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.RegularExpressions.dll + System.Threading.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Timer.dll + System.Xml.ReaderWriter.dll + System.Xml.XDocument.dll + System.Xml.XmlSerializer.dll + microsoft.netframework.referenceassemblies.net452/1.0.3/build/.NETFramework/v4.5.2/ + Microsoft.CSharp.dll + mscorlib.dll + System.Configuration.dll + System.Core.dll + System.Data.dll + System.dll + System.Drawing.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.Net.Http.dll + System.Numerics.dll + System.Runtime.Serialization.dll + System.Xml.dll + System.Xml.Linq.dll + newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll + nlog/5.0.1/lib/net45/NLog.dll + portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll + system.buffers/4.4.0/ref/netstandard1.1/System.Buffers.dll + system.memory/4.5.3/lib/netstandard1.1/System.Memory.dll + system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll + system.valuetuple/4.5.0/ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/net452/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=net462 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=7.3 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETFramework +TargetPath=bin/Debug/net462/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=net462 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:4 +/define:TRACE;DEBUG;NETFRAMEWORK;NET462;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/net462/Yoti.Auth.dll +/subsystemversion:6.00 +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/net462/ + .NETFramework,Version=v4.6.2.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/sdk/8.0.414/Microsoft/Microsoft.NET.Build.Extensions/net461/lib/ + Microsoft.Win32.Primitives.dll + netfx.force.conflicts.dll + netstandard.dll + System.AppContext.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Console.dll + System.Data.Common.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Net.Http.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.Sockets.dll + System.Net.WebHeaderCollection.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.ObjectModel.dll + System.Reflection.dll + System.Reflection.Extensions.dll + System.Reflection.Primitives.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.RegularExpressions.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Xml.ReaderWriter.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll +/sdk/8.0.414/Microsoft/Microsoft.NET.Build.Extensions/net462/lib/System.Runtime.InteropServices.RuntimeInformation.dll +/ + google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/net46/JsonSubTypes.dll + microsoft.netframework.referenceassemblies.net462/1.0.3/build/.NETFramework/v4.6.2/Facades/ + System.ComponentModel.Annotations.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.ServiceModel.Duplex.dll + System.ServiceModel.Http.dll + System.ServiceModel.NetTcp.dll + System.ServiceModel.Primitives.dll + System.ServiceModel.Security.dll + microsoft.netframework.referenceassemblies.net462/1.0.3/build/.NETFramework/v4.6.2/ + Microsoft.CSharp.dll + mscorlib.dll + System.Configuration.dll + System.Core.dll + System.Data.dll + System.dll + System.Drawing.dll + System.IO.Compression.FileSystem.dll + System.Numerics.dll + System.Runtime.Serialization.dll + System.Xml.dll + System.Xml.Linq.dll + newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll + nlog/5.0.1/lib/net46/NLog.dll + portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll + system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll + system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll + system.numerics.vectors/4.4.0/ref/net46/System.Numerics.Vectors.dll + system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll + system.valuetuple/4.5.0/ref/net461/System.ValueTuple.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/net462/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=net472 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=7.3 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETFramework +TargetPath=bin/Debug/net472/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=net472 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:4 +/define:TRACE;DEBUG;NETFRAMEWORK;NET472;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER;NET47_OR_GREATER;NET471_OR_GREATER;NET472_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/net472/Yoti.Auth.dll +/subsystemversion:6.00 +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/net472/ + .NETFramework,Version=v4.7.2.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/ + google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/net47/JsonSubTypes.dll + microsoft.netframework.referenceassemblies.net472/1.0.3/build/.NETFramework/v4.7.2/Facades/ + Microsoft.Win32.Primitives.dll + netstandard.dll + System.AppContext.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Console.dll + System.Data.Common.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Net.Http.Rtc.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.Sockets.dll + System.Net.WebHeaderCollection.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.ObjectModel.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Primitives.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.ServiceModel.Duplex.dll + System.ServiceModel.Http.dll + System.ServiceModel.NetTcp.dll + System.ServiceModel.Primitives.dll + System.ServiceModel.Security.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.RegularExpressions.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Xml.ReaderWriter.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + microsoft.netframework.referenceassemblies.net472/1.0.3/build/.NETFramework/v4.7.2/ + Microsoft.CSharp.dll + mscorlib.dll + System.ComponentModel.Composition.dll + System.Configuration.dll + System.Core.dll + System.Data.dll + System.dll + System.Drawing.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.Net.Http.dll + System.Numerics.dll + System.Runtime.Serialization.dll + System.Xml.dll + System.Xml.Linq.dll + newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll + nlog/5.0.1/lib/net46/NLog.dll + portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll + system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll + system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll + system.numerics.vectors/4.4.0/ref/net46/System.Numerics.Vectors.dll + system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll + system.valuetuple/4.5.0/ref/net47/System.ValueTuple.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/net472/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=net48 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=7.3 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETFramework +TargetPath=bin/Debug/net48/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=net48 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:4 +/define:TRACE;DEBUG;NETFRAMEWORK;NET48;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER;NET47_OR_GREATER;NET471_OR_GREATER;NET472_OR_GREATER;NET48_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/net48/Yoti.Auth.dll +/subsystemversion:6.00 +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/net48/ + .NETFramework,Version=v4.8.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/ + google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/net47/JsonSubTypes.dll + microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/ + Microsoft.Win32.Primitives.dll + netstandard.dll + System.AppContext.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Console.dll + System.Data.Common.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Net.Http.Rtc.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.Sockets.dll + System.Net.WebHeaderCollection.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.ObjectModel.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Primitives.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.ServiceModel.Duplex.dll + System.ServiceModel.Http.dll + System.ServiceModel.NetTcp.dll + System.ServiceModel.Primitives.dll + System.ServiceModel.Security.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.RegularExpressions.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Xml.ReaderWriter.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/ + Microsoft.CSharp.dll + mscorlib.dll + System.ComponentModel.Composition.dll + System.Configuration.dll + System.Core.dll + System.Data.dll + System.dll + System.Drawing.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.Net.Http.dll + System.Numerics.dll + System.Runtime.Serialization.dll + System.Xml.dll + System.Xml.Linq.dll + newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll + nlog/5.0.1/lib/net46/NLog.dll + portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll + system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll + system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll + system.numerics.vectors/4.4.0/ref/net46/System.Numerics.Vectors.dll + system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll + system.valuetuple/4.5.0/ref/net47/System.ValueTuple.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/net48/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=net6.0 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=10.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/net6.0/Yoti.Auth.dll +TargetRefPath=obj/Debug/net6.0/ref/Yoti.Auth.dll +TemporaryDependencyNodeTargetIdentifier=net6.0 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:6 +/define:TRACE;DEBUG;NET;NET6_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/net6.0/Yoti.Auth.dll +/refout:obj/Debug/net6.0/refint/Yoti.Auth.dll +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/net6.0/ + .NETCoreApp,Version=v6.0.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/ + google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.netcore.app.ref/6.0.36/ref/net6.0/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + Microsoft.Win32.Registry.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Formats.Asn1.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.AccessControl.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.AccessControl.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.Http.Json.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.AccessControl.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Cng.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.OpenSsl.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.Principal.Windows.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll + newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll +/microsoft.netcore.app.ref/6.0.36/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll + +[analyzerConfigFiles] +.editorconfig +/microsoft.codeanalysis.netanalyzers/7.0.3/build/config/analysislevel_6_default.editorconfig +obj/Debug/net6.0/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=netcoreapp3.1 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=8.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/netcoreapp3.1/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=netcoreapp3.1 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:3 +/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/netcoreapp3.1/Yoti.Auth.dll +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/netcoreapp3.1/ + .NETCoreApp,Version=v3.1.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/ + google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.InteropServices.WindowsRuntime.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll + newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/netcoreapp3.1/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +primary +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=netstandard1.6 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=7.3 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETStandard +TargetPath=bin/Debug/netstandard1.6/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=netstandard1.6 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD1_6;NETSTANDARD1_0_OR_GREATER;NETSTANDARD1_1_OR_GREATER;NETSTANDARD1_2_OR_GREATER;NETSTANDARD1_3_OR_GREATER;NETSTANDARD1_4_OR_GREATER;NETSTANDARD1_5_OR_GREATER;NETSTANDARD1_6_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/netstandard1.6/Yoti.Auth.dll +/target:library +/warnaserror+ +/utf8output +/deterministic+ +/langversion:latest + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/netstandard1.6/ + .NETStandard,Version=v1.6.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/ + google.protobuf/3.26.1/lib/netstandard1.1/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard1.3/JsonSubTypes.dll + microsoft.csharp/4.7.0/ref/netstandard1.0/Microsoft.CSharp.dll + microsoft.win32.primitives/4.3.0/ref/netstandard1.3/Microsoft.Win32.Primitives.dll + newtonsoft.json/13.0.3/lib/netstandard1.3/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard1.5/NLog.dll + portable.bouncycastle/1.8.5/lib/netstandard1.3/BouncyCastle.Crypto.dll + system.appcontext/4.3.0/ref/netstandard1.6/System.AppContext.dll + system.buffers/4.4.0/ref/netstandard1.1/System.Buffers.dll + system.collections.concurrent/4.3.0/ref/netstandard1.3/System.Collections.Concurrent.dll + system.collections.nongeneric/4.3.0/ref/netstandard1.3/System.Collections.NonGeneric.dll + system.collections/4.3.0/ref/netstandard1.3/System.Collections.dll + system.componentmodel.primitives/4.3.0/ref/netstandard1.0/System.ComponentModel.Primitives.dll + system.componentmodel.typeconverter/4.3.0/ref/netstandard1.5/System.ComponentModel.TypeConverter.dll + system.componentmodel/4.3.0/ref/netstandard1.0/System.ComponentModel.dll + system.console/4.3.0/ref/netstandard1.3/System.Console.dll + system.data.common/4.3.0/ref/netstandard1.2/System.Data.Common.dll + system.diagnostics.debug/4.3.0/ref/netstandard1.3/System.Diagnostics.Debug.dll + system.diagnostics.process/4.3.0/ref/netstandard1.4/System.Diagnostics.Process.dll + system.diagnostics.stacktrace/4.3.0/ref/netstandard1.3/System.Diagnostics.StackTrace.dll + system.diagnostics.tools/4.3.0/ref/netstandard1.0/System.Diagnostics.Tools.dll + system.diagnostics.tracesource/4.3.0/ref/netstandard1.3/System.Diagnostics.TraceSource.dll + system.diagnostics.tracing/4.3.0/ref/netstandard1.5/System.Diagnostics.Tracing.dll + system.dynamic.runtime/4.3.0/ref/netstandard1.3/System.Dynamic.Runtime.dll + system.globalization.calendars/4.3.0/ref/netstandard1.3/System.Globalization.Calendars.dll + system.globalization/4.3.0/ref/netstandard1.3/System.Globalization.dll + system.io.compression.zipfile/4.3.0/ref/netstandard1.3/System.IO.Compression.ZipFile.dll + system.io.compression/4.3.0/ref/netstandard1.3/System.IO.Compression.dll + system.io.filesystem.primitives/4.3.0/ref/netstandard1.3/System.IO.FileSystem.Primitives.dll + system.io.filesystem.watcher/4.3.0/ref/netstandard1.3/System.IO.FileSystem.Watcher.dll + system.io.filesystem/4.3.0/ref/netstandard1.3/System.IO.FileSystem.dll + system.io/4.3.0/ref/netstandard1.5/System.IO.dll + system.linq.expressions/4.3.0/ref/netstandard1.6/System.Linq.Expressions.dll + system.linq/4.3.0/ref/netstandard1.6/System.Linq.dll + system.memory/4.5.3/lib/netstandard1.1/System.Memory.dll + system.net.http/4.3.4/ref/netstandard1.3/System.Net.Http.dll + system.net.nameresolution/4.3.0/ref/netstandard1.3/System.Net.NameResolution.dll + system.net.primitives/4.3.0/ref/netstandard1.3/System.Net.Primitives.dll + system.net.requests/4.3.0/ref/netstandard1.3/System.Net.Requests.dll + system.net.sockets/4.3.0/ref/netstandard1.3/System.Net.Sockets.dll + system.net.webheadercollection/4.3.0/ref/netstandard1.3/System.Net.WebHeaderCollection.dll + system.objectmodel/4.3.0/ref/netstandard1.3/System.ObjectModel.dll + system.reflection.extensions/4.3.0/ref/netstandard1.0/System.Reflection.Extensions.dll + system.reflection.primitives/4.3.0/ref/netstandard1.0/System.Reflection.Primitives.dll + system.reflection.typeextensions/4.7.0/ref/netstandard1.5/System.Reflection.TypeExtensions.dll + system.reflection/4.3.0/ref/netstandard1.5/System.Reflection.dll + system.resources.resourcemanager/4.3.0/ref/netstandard1.0/System.Resources.ResourceManager.dll + system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll + system.runtime.extensions/4.3.1/ref/netstandard1.5/System.Runtime.Extensions.dll + system.runtime.handles/4.3.0/ref/netstandard1.3/System.Runtime.Handles.dll + system.runtime.interopservices.runtimeinformation/4.3.0/ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll + system.runtime.interopservices/4.3.0/ref/netstandard1.5/System.Runtime.InteropServices.dll + system.runtime.loader/4.3.0/ref/netstandard1.5/System.Runtime.Loader.dll + system.runtime.numerics/4.3.0/ref/netstandard1.1/System.Runtime.Numerics.dll + system.runtime.serialization.formatters/4.3.0/ref/netstandard1.3/System.Runtime.Serialization.Formatters.dll + system.runtime.serialization.primitives/4.3.0/ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll + system.runtime/4.3.1/ref/netstandard1.5/System.Runtime.dll + system.security.cryptography.algorithms/4.3.0/ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll + system.security.cryptography.encoding/4.3.0/ref/netstandard1.3/System.Security.Cryptography.Encoding.dll + system.security.cryptography.primitives/4.3.0/ref/netstandard1.3/System.Security.Cryptography.Primitives.dll + system.security.cryptography.x509certificates/4.3.0/ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll + system.text.encoding.extensions/4.3.0/ref/netstandard1.3/System.Text.Encoding.Extensions.dll + system.text.encoding/4.3.0/ref/netstandard1.3/System.Text.Encoding.dll + system.text.regularexpressions/4.3.1/ref/netstandard1.6/System.Text.RegularExpressions.dll + system.threading.tasks/4.3.0/ref/netstandard1.3/System.Threading.Tasks.dll + system.threading.thread/4.3.0/ref/netstandard1.3/System.Threading.Thread.dll + system.threading.timer/4.3.0/ref/netstandard1.2/System.Threading.Timer.dll + system.threading/4.3.0/ref/netstandard1.3/System.Threading.dll + system.valuetuple/4.5.0/lib/netstandard1.0/System.ValueTuple.dll + system.xml.readerwriter/4.3.0/ref/netstandard1.3/System.Xml.ReaderWriter.dll + system.xml.xdocument/4.3.0/ref/netstandard1.3/System.Xml.XDocument.dll + system.xml.xmldocument/4.3.0/ref/netstandard1.3/System.Xml.XmlDocument.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/netstandard1.6/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig + +--- + +[project] +language=C# +lastDtbSucceeded + +[sliceDimensions] +TargetFramework=netstandard2.1 + +[properties] +AssemblyName=Yoti.Auth +CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=8.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETStandard +TargetPath=bin/Debug/netstandard2.1/Yoti.Auth.dll +TargetRefPath= +TemporaryDependencyNodeTargetIdentifier=netstandard2.1 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_1;NETSTANDARD1_0_OR_GREATER;NETSTANDARD1_1_OR_GREATER;NETSTANDARD1_2_OR_GREATER;NETSTANDARD1_3_OR_GREATER;NETSTANDARD1_4_OR_GREATER;NETSTANDARD1_5_OR_GREATER;NETSTANDARD1_6_OR_GREATER;NETSTANDARD2_0_OR_GREATER;NETSTANDARD2_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/netstandard2.1/Yoti.Auth.dll +/target:library +/warnaserror- +/utf8output +/deterministic+ +/langversion:latest +/warnaserror+:NU1605 + +[sourceFiles] +ActivityDetails.cs +ActivityDetailsParser.cs +Aml/ + AmlAddress.cs + AmlProfile.cs + AmlResult.cs + IAmlAddress.cs + IAmlProfile.cs + IAmlResult.cs + IRemoteAmlService.cs + RemoteAmlService.cs +Anchors/ + Anchor.cs + AnchorCertificateParser.cs + AnchorType.cs + AnchorVerifierSourceData.cs + ExtensionOidAttribute.cs + SignedTimestamp.cs +Attribute/ + AttributeConverter.cs + BaseAttribute.cs + MultiValueItem.cs + YotiAttribute.cs +Constants/ + Api.cs + ApplicationProfile.cs + DocScanConstants.cs + DocumentDetails.cs + Extension.cs + Format.cs + UserProfile.cs +Conversion.cs +CryptoEngine.cs +DataObjects/ + ProfileDO.cs + ReceiptDO.cs +DigitalIdentity/ + CreateQrResult.cs + DigitalIdentityService.cs + ErrorDetails.cs + ErrorReason.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + GetQrCodeResult.cs + GetReceipt.cs + GetSessionResult.cs + Policy/ + AdvancedIdentityProfile.cs + Constraint.cs + Notification.cs + NotificationBuilder.cs + Policy.cs + PolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + QrRequest.cs + QrRequestBuilder.cs + ReceiptItemKeyResponse.cs + RequirementNotMetDetails.cs + SharedReceiptResponse.cs + ShareSessionRequest.cs + ShareSessionRequestBuilder.cs + ShareSessionResult.cs +DigitalIdentityClient.cs +DigitalIdentityClientEngine.cs +DocScan/ + DocScanClient.cs + DocScanService.cs + Session/Create/ + AdvancedIdentityProfile.cs + ApplicantProfile.cs + ApplicantProfileBuilder.cs + AttemptsConfiguration.cs + Check/Advanced/ + RequestedCaMatchingStrategy.cs + RequestedCaSources.cs + RequestedExactMatchingStrategy.cs + RequestedFuzzyMatchingStrategy.cs + RequestedSearchProfileSources.cs + RequestedTypeListSources.cs + RequestedWatchlistAdvancedCaConfigCustomAccount.cs + RequestedWatchlistAdvancedCaConfigYotiAccount.cs + Check/ + BaseRequestedCheck.cs + IssuingAuthoritySubCheck.cs + IssuingAuthoritySubCheckBuilder.cs + RequestedCheck.cs + RequestedCheckConfig.cs + RequestedDocumentAuthenticityCheck.cs + RequestedDocumentAuthenticityCheckBuilder.cs + RequestedDocumentAuthenticityConfig.cs + RequestedFaceComparisonCheck.cs + RequestedFaceComparisonCheckBuilder.cs + RequestedFaceComparisonConfig.cs + RequestedFaceMatchCheck.cs + RequestedFaceMatchCheckBuilder.cs + RequestedFaceMatchConfig.cs + RequestedIdDocumentComparisonCheck.cs + RequestedIdDocumentComparisonCheckBuilder.cs + RequestedIdDocumentComparisonConfig.cs + RequestedLivenessCheck.cs + RequestedLivenessCheckBuilder.cs + RequestedLivenessConfig.cs + RequestedThirdPartyIdentityCheck.cs + RequestedThirdPartyIdentityCheckBuilder.cs + RequestedThirdPartyIdentityConfig.cs + RequestedWatchlistAdvancedCaCheck.cs + RequestedWatchlistAdvancedCaCheckBuilder.cs + RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs + RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs + RequestedWatchlistAdvancedCaConfig.cs + RequestedWatchlistScreeningCheck.cs + RequestedWatchlistScreeningCheckBuilder.cs + RequestedWatchlistScreeningConfig.cs + CreateSessionResult.cs + FaceCapture/ + CreateFaceCaptureResourcePayload.cs + CreateFaceCaptureResourcePayloadBuilder.cs + UploadFaceCaptureImagePayload.cs + UploadFaceCaptureImagePayloadBuilder.cs + Filter/ + CountryRestriction.cs + DocumentFilter.cs + DocumentRestriction.cs + DocumentRestrictionBuilder.cs + DocumentRestrictionsFilter.cs + DocumentRestrictionsFilterBuilder.cs + OrthogonalRestrictionsFilter.cs + OrthogonalRestrictionsFilterBuilder.cs + RequiredDocument.cs + RequiredIdDocument.cs + RequiredIdDocumentBuilder.cs + RequiredSupplementaryDocument.cs + RequiredSupplementaryDocumentBuilder.cs + TypeRestriction.cs + NotificationConfig.cs + NotificationConfigBuilder.cs + Objectives/ + Objective.cs + ProofOfAddressObjective.cs + ProofOfAddressObjectiveBuilder.cs + ResourceCreationContainer.cs + ResourceCreationContainerBuilder.cs + SdkConfig.cs + SdkConfigBuilder.cs + SessionSpecification.cs + SessionSpecificationBuilder.cs + StructuredPostalAddress.cs + StructuredPostalAddressBuilder.cs + Task/ + BaseRequestedTask.cs + RequestedSupplementaryDocTextExtractionTask.cs + RequestedSupplementaryDocTextExtractionTaskBuilder.cs + RequestedSupplementaryDocTextExtractionTaskConfig.cs + RequestedTask.cs + RequestedTaskConfig.cs + RequestedTextExtractionTask.cs + RequestedTextExtractionTaskBuilder.cs + RequestedTextExtractionTaskConfig.cs + Session/Retrieve/AdvancedIdentityProfile/ + AdvancedIdentityProfilePreviewResponse.cs + AdvancedIdentityProfileResponse.cs + FailureReasonResponse.cs + Session/Retrieve/ + BreakdownResponse.cs + Check/ + AuthenticityCheckResponse.cs + CheckResponse.cs + FaceMatchCheckResponse.cs + GeneratedProfileResponse.cs + IdDocumentComparisonCheckResponse.cs + LivenessCheckResponse.cs + ProfileCheckResponse.cs + ReportResponse.cs + SupplementaryDocTextDataCheckResponse.cs + TextDataCheckResponse.cs + ThirdPartyIdentityCheckResponse.cs + ThirdPartyIdentityFraudOneCheckResponse.cs + WatchlistAdvancedCaCheckResponse.cs + WatchlistScreeningCheckResponse.cs + WatchlistSummary/ + CaMatchingStrategyResponse.cs + CaSourcesResponse.cs + ExactMatchingStrategyResponse.cs + FuzzyMatchingStrategyResponse.cs + ISearchConfig.cs + RawResults.cs + ReportResponseWithSummary.cs + SearchProfileSourcesResponse.cs + TypeListSourcesResponse.cs + WatchlistAdvancedCaSearchConfigResponse.cs + WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs + WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs + WatchlistScreeningConfig.cs + WatchlistSummary.cs + WatchlistSummaryReportBaseCheckResponse.cs + Configuration/Capture/ + CaptureResponse.cs + Document/ + ObjectiveResponse.cs + RequiredDocumentResourceResponse.cs + RequiredIdDocumentResourceResponse.cs + RequiredSupplementaryDocumentResourceResponse.cs + SupportedCountryResponse.cs + SupportedDocumentResponse.cs + FaceCapture/RequiredFaceCaptureResourceResponse.cs + Liveness/ + RequiredLivenessResourceResponse.cs + RequiredZoomLivenessResourceResponse.cs + UnknownRequiredLivenessResourceResponse.cs + RequiredResourceResponse.cs + Source/ + EndUserAllowedSourceResponse.cs + IbvAllowedSourceResponse.cs + RelyingBusinessAllowedSourceResponse.cs + UnknownAllowedSourceResponse.cs + Task/ + RequestedIdDocTaskResponse.cs + RequestedSupplementaryDocTaskResponse.cs + RequestedTaskResponse.cs + UnknownRequestedTaskResponse.cs + UnknownRequiredResourceResponse.cs + Configuration/SessionConfigurationResponse.cs + CreateFaceCaptureResourceResponse.cs + DetailsResponse.cs + DocumentFieldsResponse.cs + DocumentIdPhotoResponse.cs + ExpandedDocumentFieldResponse.cs + FaceCaptureImageResponse.cs + FaceCaptureResourceResponse.cs + FaceMapResponse.cs + FileResponse.cs + FrameResponse.cs + GeneratedMedia.cs + GetSessionResult.cs + IdentityProfile/ + FailureReasonResponse.cs + IdentityProfilePreviewResponse.cs + IdentityProfileResponse.cs + RequirementNotMetDetails.cs + IResponseWithMediaProperty.cs + MediaResponse.cs + PageResponse.cs + RecommendationResponse.cs + Resource/ + AllowedSourceResponse.cs + ApplicantProfileResourceResponse.cs + IdDocumentResourceResponse.cs + LivenessResourceResponse.cs + ResourceContainer.cs + ResourceResponse.cs + ShareCodeResourceResponse.cs + SupplementaryDocResourceResponse.cs + ShareCodeMediaResponse.cs + StaticLivenessImageResponse.cs + StaticLivenessResourceResponse.cs + Task/ + GeneratedCheckResponse.cs + GeneratedSupplementaryDocTextDataCheckResponse.cs + GeneratedTextDataCheckResponse.cs + SupplementaryDocTextExtractionTaskResponse.cs + TaskResponse.cs + TextExtractionTaskResponse.cs + VerifyShareCodeTaskResponse.cs + ZoomLivenessResourceResponse.cs + Support/ + SupportedCountry.cs + SupportedDocument.cs + SupportedDocumentsResponse.cs +Document/ + DocumentDetails.cs + DocumentDetailsAttributeParser.cs + DocumentDetailsBuilder.cs +Exceptions/ + AmlException.cs + DigitalIdentityException.cs + DocScanException.cs + DynamicShareException.cs + ExtraDataException.cs + YotiException.cs + YotiProfileException.cs +GlobalSuppressions.cs +Images/ + Image.cs + JpegImage.cs + PngImage.cs +MediaValue.cs +obj/Debug/netstandard2.1/ + .NETStandard,Version=v2.1.AssemblyAttributes.cs + Yoti.Auth.AssemblyInfo.cs +Profile/ + ApplicationProfile.cs + BaseProfile.cs + IBaseProfile.cs + YotiProfile.cs +Properties/ + AssemblyInfo.cs + Resources.Designer.cs +ProtoBuf/Attribute/ + Attribute.cs + ContentType.cs + List.cs + Signing.cs +ProtoBuf/Common/ + EncryptedData.cs + SignedTimestamp.cs +ProtoBuf/Share/ + DataEntry.cs + ExtraData.cs + IssuingAttributes.cs + ThirdPartyAttribute.cs +Share/ + DataEntryConverter.cs + ExtraData.cs + ExtraDataConverter.cs + ThirdParty/ + AttributeDefinition.cs + AttributeIssuanceDetails.cs + IssuingAttributes.cs + ThirdPartyAttributeConverter.cs +ShareUrl/ + DynamicScenario.cs + DynamicScenarioBuilder.cs + DynamicSharingService.cs + Extensions/ + BaseExtension.cs + DeviceLocation.cs + Extension.cs + ExtensionBuilder.cs + LocationConstraintContent.cs + LocationConstraintExtensionBuilder.cs + ThirdPartyAttributeContent.cs + ThirdPartyAttributeExtensionBuilder.cs + TransactionalFlowExtensionBuilder.cs + Policy/ + Constraint.cs + DynamicPolicy.cs + DynamicPolicyBuilder.cs + PreferredSources.cs + SourceConstraint.cs + SourceConstraintBuilder.cs + WantedAnchor.cs + WantedAnchorBuilder.cs + WantedAttribute.cs + WantedAttributeBuilder.cs + ShareUrlResult.cs +Validation.cs +Verifications/ + AgeVerification.cs + AgeVerificationParser.cs +Web/ + HeadersFactory.cs + Request.cs + RequestBuilder.cs + Response.cs + SignedMessageFactory.cs + YotiHttpResponse.cs +YotiClient.cs +YotiClientEngine.cs + +[metadataReferences] +/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/ + Microsoft.Win32.Primitives.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Composition.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.Sockets.dll + System.Net.WebHeaderCollection.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Primitives.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.Principal.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.RegularExpressions.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.ValueTuple.dll + System.Web.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll +/ + google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.csharp/4.7.0/ref/netstandard2.0/Microsoft.CSharp.dll + newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll + +[analyzerReferences] +/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +.editorconfig +obj/Debug/netstandard2.1/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig diff --git a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache new file mode 100644 index 00000000..174ce943 --- /dev/null +++ b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache @@ -0,0 +1,251 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +primary +lastDtbSucceeded + +[properties] +AssemblyName=Yoti.Auth.Tests.Common +CommandLineArgsForDesignTimeEvaluation=-langversion:12.0 -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=12.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth.Tests.Common +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/net8.0/Yoti.Auth.Tests.Common.dll +TargetRefPath=obj/Debug/net8.0/ref/Yoti.Auth.Tests.Common.dll +TemporaryDependencyNodeTargetIdentifier=net8.0 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:8 +/define:TRACE;DEBUG;NET;NET8_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:portable +/filealign:512 +/optimize- +/out:obj/Debug/net8.0/Yoti.Auth.Tests.Common.dll +/refout:obj/Debug/net8.0/refint/Yoti.Auth.Tests.Common.dll +/target:library +/warnaserror+ +/utf8output +/deterministic+ +/langversion:12.0 +/warnaserror+:SYSLIB0011 + +[sourceFiles] +Http.cs +KeyPair.cs +obj/Debug/net8.0/ + .NETCoreApp,Version=v8.0.AssemblyAttributes.cs + Yoti.Auth.Tests.Common.AssemblyInfo.cs + +[metadataReferences] +../../src/Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll +/packs/Microsoft.NETCore.App.Ref/8.0.20/ref/net8.0/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + Microsoft.Win32.Registry.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Formats.Asn1.dll + System.Formats.Tar.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.AccessControl.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.AccessControl.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.Http.Json.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Quic.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.JavaScript.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.AccessControl.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Cng.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.OpenSsl.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.Principal.Windows.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll +/ + castle.core/5.0.0/lib/net6.0/Castle.Core.dll + google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + moq/4.18.1/lib/net6.0/Moq.dll + newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + system.diagnostics.eventlog/6.0.0/lib/net6.0/System.Diagnostics.EventLog.dll + +[analyzerReferences] +/packs/Microsoft.NETCore.App.Ref/8.0.20/analyzers/dotnet/cs/ + Microsoft.Interop.ComInterfaceGenerator.dll + Microsoft.Interop.JavaScript.JSImportGenerator.dll + Microsoft.Interop.LibraryImportGenerator.dll + Microsoft.Interop.SourceGeneration.dll + System.Text.Json.SourceGeneration.dll + System.Text.RegularExpressions.Generator.dll +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_8_default.globalconfig +obj/Debug/net8.0/Yoti.Auth.Tests.Common.GeneratedMSBuildEditorConfig.editorconfig diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs index d59f308a..0b9179d5 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -61,6 +61,19 @@ public async Task CreateQrCodeAsyncShouldReturnCorrectValues() Assert.IsTrue(_httpRequestMessage.RequestUri.AbsolutePath.EndsWith($"/v2/sessions/{sessionId}/qr-codes")); } + [TestMethod] + public async Task CreateQrCodeAsyncShouldThrowArgumentNullExceptionWhenSessionIdIsNull() + { + Mock handlerMock = SetupMockMessageHandler( + HttpStatusCode.OK, + "{\"id\":\"test-qr-code-id\",\"uri\":\"https://code.yoti.com/test\"}"); + var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); + QrRequest qrRequest = TestTools.CreateQr.CreateQrStandard(); + ArgumentNullException exception = await Assert.ThrowsExceptionAsync( + () => engine.CreateQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), null, qrRequest)); + Assert.AreEqual("sessionId", exception.ParamName); + } + [TestMethod] public async Task GetQrCodeAsyncShouldReturnCorrectValues() { diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache new file mode 100644 index 00000000..d5858c8d --- /dev/null +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache @@ -0,0 +1,390 @@ +version=1 + +# This file caches language service data to improve the performance of C# Dev Kit. +# It is not intended for manual editing. It can safely be deleted and will be +# regenerated automatically. For more information, see https://aka.ms/lscache +# +# To control where cache files are stored, use the following VS Code setting: +# "dotnet.projectsystem.cacheInProjectFolder": true + +[project] +language=C# +primary +lastDtbSucceeded + +[properties] +AssemblyName=Yoti.Auth.Tests +CommandLineArgsForDesignTimeEvaluation=-langversion:12.0 -define:TRACE +CompilerGeneratedFilesOutputPath= +MaxSupportedLangVersion=12.0 +ProjectAssetsFile=obj/project.assets.json +RootNamespace=Yoti.Auth.Tests +RunAnalyzers= +RunAnalyzersDuringLiveAnalysis= +SolutionPath=*Undefined* +TargetFrameworkIdentifier=.NETCoreApp +TargetPath=bin/Debug/net8.0/Yoti.Auth.Tests.dll +TargetRefPath=obj/Debug/net8.0/ref/Yoti.Auth.Tests.dll +TemporaryDependencyNodeTargetIdentifier=net8.0 + +[commandLineArguments] +/noconfig +/unsafe- +/checked- +/nowarn:1701,1702,1701,1702 +/fullpaths +/nostdlib+ +/errorreport:prompt +/warn:8 +/define:TRACE;DEBUG;NET;NET8_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER +/highentropyva+ +/debug+ +/debug:Full +/filealign:512 +/optimize- +/out:obj/Debug/net8.0/Yoti.Auth.Tests.dll +/refout:obj/Debug/net8.0/refint/Yoti.Auth.Tests.dll +/target:exe +/warnaserror+ +/utf8output +/deterministic+ +/langversion:12.0 +/warnaserror+:SYSLIB0011 + +[sourceFiles] +/microsoft.net.test.sdk/17.2.0/build/netcoreapp2.1/Microsoft.NET.Test.Sdk.Program.cs + @folderNames=..,..,..,..,..,..,.nuget,packages,microsoft.net.test.sdk,17.2.0,build,netcoreapp2.1 +ActivityDetailsParserTests.cs +ActivityTests.cs +AmlProfileTests.cs +Anchors/ + AnchorTests.cs + SignedTimestampTests.cs +ApplicationProfileTests.cs +AttributeConverterTests.cs +CryptoEngineTests.cs +DigitalIdentity/ + DigitalIdentityServiceTests.cs + ErrorReasonTests.cs + Extensions/ + ExtensionBuilderTests.cs + LocationConstraintExtensionBuilderTests.cs + ThirdPartyAttributeExtensionBuilderTests.cs + TransactionalFlowExtensionBuilderTests.cs + Policy/ + DynamicPolicyBuilderTests.cs + WantedAttributeBuilderTests.cs + WantedAttributeMatcher.cs + QrRequestBuilderTests.cs + RequirementNotMetDetails.cs + ShareSessionRequestBuilderTests.cs +DigitalIdentityClientEngineTests.cs +DigitalIdentityClientTests.cs +DigitalIdentityExceptionTests.cs +DocScan/ + DocScanClientTests.cs + DocScanServiceTests.cs + Session/Create/ + ApplicantProfileBuilderTests.cs + Check/ + IssuingAuthoritySubCheckBuilderTests.cs + RequestedDocumentAuthenticityCheckBuilderTests.cs + RequestedFaceComparionCheckBuilderTests.cs + RequestedFaceMatchCheckBuilderTests.cs + RequestedIDDocumentComparisonCheckBuilderTests.cs + RequestedLivenessCheckBuilderTests.cs + RequestedThirdPartyIdentityCheckBuilderTests.cs + RequestedWatchlistAdvancedCaCheckBuilderTests.cs + RequestedWatchlistScreeningCheckBuilderTests.cs + FaceCapture/ + CreateFaceCaptureResourcePayloadBuilderTests.cs + UploadFaceCaptureImagePayloadBuilderTests.cs + Filter/ + DocumentRestrictionsBuilderTests.cs + DocumentRestrictionsFilterBuilderTests.cs + OrthogonalRestrictionsFilterBuilderTests.cs + RequiredSupplementaryDocumentBuilderTests.cs + NotificationConfigBuilderTests.cs + NotificationConfigTests.cs + ResourceCreationContainerBuilderTests.cs + SdkConfigBuilderTests.cs + SessionSpecificationBuilderTests.cs + StructuredPostalAddressBuilderTests.cs + Task/ + RequestedSupplementaryDocTextExtractionTaskBuilderTests.cs + RequestedTextExtractionTaskBuilderTests.cs + Session/Retrieve/ + Check/CheckResponseTests.cs + GetSessionResultTests.cs + IdentityProfile/FailureReasonResponseTest.cs + Resource/ + ApplicantProfileResourceResponseTests.cs + LivenessResourceResponseTests.cs + ShareCodeResourceResponseTests.cs + Task/ + IdDocumentResourceResponseTests.cs + SupplementaryDocResourceResponseTests.cs + TaskResponseTests.cs + VerifyShareCodeTaskResponseTests.cs +DocumentDetailsAttributeParserTests.cs +GlobalSuppressions.cs +obj/Debug/net8.0/ + .NETCoreApp,Version=v8.0.AssemblyAttributes.cs + Yoti.Auth.Tests.AssemblyInfo.cs +Share/ + DataEntryConverterTests.cs + ExtraDataConverterTests.cs + ExtraDataTests.cs + ThirdParty/ + AttributeIssuanceDetailsTests.cs + ThirdPartyAttributeConverterTests.cs +ShareUrl/ + DynamicScenarioBuilderTests.cs + DynamicSharingServiceTests.cs + Extensions/ + ExtensionBuilderTests.cs + LocationConstraintExtensionBuilderTests.cs + ThirdPartyAttributeExtensionBuilderTests.cs + TransactionalFlowExtensionBuilderTests.cs + Policy/ + DynamicPolicyBuilderTests.cs + WantedAttributeBuilderTests.cs + WantedAttributeMatcher.cs +TestData/ + IdentityProfiles.cs + TestActivityDetails.cs + TestAnchors.cs + TestAttributes.cs +TestTools/ + Aml.cs + Anchors.cs + Assert.cs + AssertExtensions.cs + Attributes.cs + CreateQr.cs + Exceptions.cs + ImageComparer.cs + Profile.cs + Protobuf.cs + ShareSession.cs + ShareUrl.cs +UserProfileTests.cs +ValidationTests.cs +Verifications/AgeVerificationTests.cs +Web/ + HeadersFactoryTests.cs + RequestBuilderTests.cs + SignedMessageFactoryTests.cs + YotiHttpResponseTests.cs +YotiAttributeTests.cs +YotiClientEngineTests.cs +YotiClientTests.cs +YotiProfileTests.cs + +[metadataReferences] +../ + ../src/Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll + Yoti.Auth.Tests.Common/obj/Debug/net8.0/ref/Yoti.Auth.Tests.Common.dll +/packs/Microsoft.NETCore.App.Ref/8.0.20/ref/net8.0/ + Microsoft.CSharp.dll + Microsoft.VisualBasic.Core.dll + Microsoft.VisualBasic.dll + Microsoft.Win32.Primitives.dll + Microsoft.Win32.Registry.dll + mscorlib.dll + netstandard.dll + System.AppContext.dll + System.Buffers.dll + System.Collections.Concurrent.dll + System.Collections.dll + System.Collections.Immutable.dll + System.Collections.NonGeneric.dll + System.Collections.Specialized.dll + System.ComponentModel.Annotations.dll + System.ComponentModel.DataAnnotations.dll + System.ComponentModel.dll + System.ComponentModel.EventBasedAsync.dll + System.ComponentModel.Primitives.dll + System.ComponentModel.TypeConverter.dll + System.Configuration.dll + System.Console.dll + System.Core.dll + System.Data.Common.dll + System.Data.DataSetExtensions.dll + System.Data.dll + System.Diagnostics.Contracts.dll + System.Diagnostics.Debug.dll + System.Diagnostics.DiagnosticSource.dll + System.Diagnostics.FileVersionInfo.dll + System.Diagnostics.Process.dll + System.Diagnostics.StackTrace.dll + System.Diagnostics.TextWriterTraceListener.dll + System.Diagnostics.Tools.dll + System.Diagnostics.TraceSource.dll + System.Diagnostics.Tracing.dll + System.dll + System.Drawing.dll + System.Drawing.Primitives.dll + System.Dynamic.Runtime.dll + System.Formats.Asn1.dll + System.Formats.Tar.dll + System.Globalization.Calendars.dll + System.Globalization.dll + System.Globalization.Extensions.dll + System.IO.Compression.Brotli.dll + System.IO.Compression.dll + System.IO.Compression.FileSystem.dll + System.IO.Compression.ZipFile.dll + System.IO.dll + System.IO.FileSystem.AccessControl.dll + System.IO.FileSystem.dll + System.IO.FileSystem.DriveInfo.dll + System.IO.FileSystem.Primitives.dll + System.IO.FileSystem.Watcher.dll + System.IO.IsolatedStorage.dll + System.IO.MemoryMappedFiles.dll + System.IO.Pipes.AccessControl.dll + System.IO.Pipes.dll + System.IO.UnmanagedMemoryStream.dll + System.Linq.dll + System.Linq.Expressions.dll + System.Linq.Parallel.dll + System.Linq.Queryable.dll + System.Memory.dll + System.Net.dll + System.Net.Http.dll + System.Net.Http.Json.dll + System.Net.HttpListener.dll + System.Net.Mail.dll + System.Net.NameResolution.dll + System.Net.NetworkInformation.dll + System.Net.Ping.dll + System.Net.Primitives.dll + System.Net.Quic.dll + System.Net.Requests.dll + System.Net.Security.dll + System.Net.ServicePoint.dll + System.Net.Sockets.dll + System.Net.WebClient.dll + System.Net.WebHeaderCollection.dll + System.Net.WebProxy.dll + System.Net.WebSockets.Client.dll + System.Net.WebSockets.dll + System.Numerics.dll + System.Numerics.Vectors.dll + System.ObjectModel.dll + System.Reflection.DispatchProxy.dll + System.Reflection.dll + System.Reflection.Emit.dll + System.Reflection.Emit.ILGeneration.dll + System.Reflection.Emit.Lightweight.dll + System.Reflection.Extensions.dll + System.Reflection.Metadata.dll + System.Reflection.Primitives.dll + System.Reflection.TypeExtensions.dll + System.Resources.Reader.dll + System.Resources.ResourceManager.dll + System.Resources.Writer.dll + System.Runtime.CompilerServices.Unsafe.dll + System.Runtime.CompilerServices.VisualC.dll + System.Runtime.dll + System.Runtime.Extensions.dll + System.Runtime.Handles.dll + System.Runtime.InteropServices.dll + System.Runtime.InteropServices.JavaScript.dll + System.Runtime.InteropServices.RuntimeInformation.dll + System.Runtime.Intrinsics.dll + System.Runtime.Loader.dll + System.Runtime.Numerics.dll + System.Runtime.Serialization.dll + System.Runtime.Serialization.Formatters.dll + System.Runtime.Serialization.Json.dll + System.Runtime.Serialization.Primitives.dll + System.Runtime.Serialization.Xml.dll + System.Security.AccessControl.dll + System.Security.Claims.dll + System.Security.Cryptography.Algorithms.dll + System.Security.Cryptography.Cng.dll + System.Security.Cryptography.Csp.dll + System.Security.Cryptography.dll + System.Security.Cryptography.Encoding.dll + System.Security.Cryptography.OpenSsl.dll + System.Security.Cryptography.Primitives.dll + System.Security.Cryptography.X509Certificates.dll + System.Security.dll + System.Security.Principal.dll + System.Security.Principal.Windows.dll + System.Security.SecureString.dll + System.ServiceModel.Web.dll + System.ServiceProcess.dll + System.Text.Encoding.CodePages.dll + System.Text.Encoding.dll + System.Text.Encoding.Extensions.dll + System.Text.Encodings.Web.dll + System.Text.Json.dll + System.Text.RegularExpressions.dll + System.Threading.Channels.dll + System.Threading.dll + System.Threading.Overlapped.dll + System.Threading.Tasks.Dataflow.dll + System.Threading.Tasks.dll + System.Threading.Tasks.Extensions.dll + System.Threading.Tasks.Parallel.dll + System.Threading.Thread.dll + System.Threading.ThreadPool.dll + System.Threading.Timer.dll + System.Transactions.dll + System.Transactions.Local.dll + System.ValueTuple.dll + System.Web.dll + System.Web.HttpUtility.dll + System.Windows.dll + System.Xml.dll + System.Xml.Linq.dll + System.Xml.ReaderWriter.dll + System.Xml.Serialization.dll + System.Xml.XDocument.dll + System.Xml.XmlDocument.dll + System.Xml.XmlSerializer.dll + System.Xml.XPath.dll + System.Xml.XPath.XDocument.dll + WindowsBase.dll +/ + castle.core/5.0.0/lib/net6.0/Castle.Core.dll + google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll + jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll + microsoft.codecoverage/17.2.0/lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll + microsoft.testplatform.testhost/17.2.0/lib/netcoreapp2.1/ + Microsoft.TestPlatform.CommunicationUtilities.dll + Microsoft.TestPlatform.CoreUtilities.dll + Microsoft.TestPlatform.CrossPlatEngine.dll + Microsoft.TestPlatform.PlatformAbstractions.dll + Microsoft.TestPlatform.Utilities.dll + Microsoft.VisualStudio.TestPlatform.Common.dll + Microsoft.VisualStudio.TestPlatform.ObjectModel.dll + testhost.dll + moq/4.18.1/lib/net6.0/Moq.dll + mstest.testframework/2.2.10/ + build/net5.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + lib/net5.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll + newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll + nlog/5.0.1/lib/netstandard2.0/NLog.dll + nuget.frameworks/5.11.0/lib/netstandard2.0/NuGet.Frameworks.dll + portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll + system.diagnostics.eventlog/6.0.0/lib/net6.0/System.Diagnostics.EventLog.dll + +[analyzerReferences] +/packs/Microsoft.NETCore.App.Ref/8.0.20/analyzers/dotnet/cs/ + Microsoft.Interop.ComInterfaceGenerator.dll + Microsoft.Interop.JavaScript.JSImportGenerator.dll + Microsoft.Interop.LibraryImportGenerator.dll + Microsoft.Interop.SourceGeneration.dll + System.Text.Json.SourceGeneration.dll + System.Text.RegularExpressions.Generator.dll +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ + Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll + Microsoft.CodeAnalysis.NetAnalyzers.dll + +[analyzerConfigFiles] +/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_8_default.globalconfig +obj/Debug/net8.0/Yoti.Auth.Tests.GeneratedMSBuildEditorConfig.editorconfig From 88a7eb9ceb21081d5afa97f27314d8a3a3cdef65 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 26 May 2026 16:28:16 +0100 Subject: [PATCH 48/50] updated version number to 3.20 --- .gitignore | 1 + azure-pipelines-sonar-only.yml | 4 +- azure-pipelines.yml | 2 +- .../Aml/AmlExample/AmlExample.csproj.lscache | 222 - .../DigitalIdentityExample.csproj.lscache | 435 -- .../DocScanExample.csproj.lscache | 445 -- .../CoreExample/CoreExample.csproj.lscache | 403 -- src/Yoti.Auth/Yoti.Auth.csproj | 2 +- src/Yoti.Auth/Yoti.Auth.csproj.lscache | 4465 ----------------- .../Yoti.Auth.Tests.Common.csproj.lscache | 251 - .../Yoti.Auth.Tests.csproj.lscache | 390 -- 11 files changed, 5 insertions(+), 6615 deletions(-) delete mode 100644 src/Examples/Aml/AmlExample/AmlExample.csproj.lscache delete mode 100644 src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache delete mode 100644 src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache delete mode 100644 src/Examples/Profile/CoreExample/CoreExample.csproj.lscache delete mode 100644 src/Yoti.Auth/Yoti.Auth.csproj.lscache delete mode 100644 test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache delete mode 100644 test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache diff --git a/.gitignore b/.gitignore index 6e27c66c..1e328cae 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ src/tools/ # Code Coverage Results src/TestResults/ +*.lscache diff --git a/azure-pipelines-sonar-only.yml b/azure-pipelines-sonar-only.yml index 0fb021c7..43f46a49 100644 --- a/azure-pipelines-sonar-only.yml +++ b/azure-pipelines-sonar-only.yml @@ -4,7 +4,7 @@ trigger: branches: include: - - release/3.19.0 + - release/3.20.0 pool: vmImage: 'windows-latest' @@ -22,7 +22,7 @@ steps: scannerMode: 'MSBuild' projectKey: 'getyoti:dotnet' projectName: '.NET SDK' - projectVersion: '3.19.0' + projectVersion: '3.20.0' extraProperties: | sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1bf2aa62..4ff12b88 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -32,7 +32,7 @@ steps: scannerMode: 'MSBuild' projectKey: 'getyoti:dotnet' projectName: '.NET SDK' - projectVersion: '3.19.0' + projectVersion: '3.20.0' extraProperties: | sonar.cs.opencover.reportsPaths="**/coverage.opencover.xml" sonar.links.scm = https://github.com/getyoti/yoti-dotnet-sdk diff --git a/src/Examples/Aml/AmlExample/AmlExample.csproj.lscache b/src/Examples/Aml/AmlExample/AmlExample.csproj.lscache deleted file mode 100644 index ed2e26ce..00000000 --- a/src/Examples/Aml/AmlExample/AmlExample.csproj.lscache +++ /dev/null @@ -1,222 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -primary -lastDtbSucceeded - -[properties] -AssemblyName=AmlExample -CommandLineArgsForDesignTimeEvaluation=-langversion:8.0 -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=8.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=AmlExample -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/netcoreapp3.1/AmlExample.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=netcoreapp3.1 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:3 -/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:portable -/filealign:512 -/optimize- -/out:obj/Debug/netcoreapp3.1/AmlExample.dll -/target:exe -/warnaserror+ -/utf8output -/deterministic+ -/langversion:8.0 - -[sourceFiles] -obj/Debug/netcoreapp3.1/ - .NETCoreApp,Version=v3.1.AssemblyAttributes.cs - AmlExample.AssemblyInfo.cs -Program.cs - -[metadataReferences] -../../../Yoti.Auth/bin/Debug/netcoreapp3.1/Yoti.Auth.dll -/ - dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll - google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll - newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - sprache/2.3.1/lib/netstandard2.1/Sprache.dll - -[analyzerConfigFiles] -obj/Debug/netcoreapp3.1/AmlExample.GeneratedMSBuildEditorConfig.editorconfig diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache deleted file mode 100644 index 0d6a96ea..00000000 --- a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj.lscache +++ /dev/null @@ -1,435 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -primary -lastDtbSucceeded - -[properties] -AssemblyName=DigitalIdentityExample -CommandLineArgsForDesignTimeEvaluation=-langversion:10.0 -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=10.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=DigitalIdentityExample -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/net6.0/DigitalIdentityExample.dll -TargetRefPath=obj/Debug/net6.0/ref/DigitalIdentityExample.dll -TemporaryDependencyNodeTargetIdentifier=net6.0 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:6 -/define:TRACE;DEBUG;NET;NET6_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:portable -/filealign:512 -/optimize- -/out:obj/Debug/net6.0/DigitalIdentityExample.dll -/refout:obj/Debug/net6.0/refint/DigitalIdentityExample.dll -/target:exe -/warnaserror+ -/utf8output -/deterministic+ -/langversion:10.0 - -[sourceFiles] -Controllers/ - AdvancedIdentityShareController.cs - DbsController.cs - HomeController.cs - SuccessController.cs -GlobalSuppressions.cs -Models/ - DisplayAttribute.cs - DisplayAttributes.cs -obj/Debug/net6.0/ - .NETCoreApp,Version=v6.0.AssemblyAttributes.cs - DigitalIdentityExample.AssemblyInfo.cs - DigitalIdentityExample.RazorAssemblyInfo.cs -Program.cs -Startup.cs - -[metadataReferences] -../../../Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll -/ - dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll - google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.aspnetcore.app.ref/6.0.36/ref/net6.0/ - Microsoft.AspNetCore.Antiforgery.dll - Microsoft.AspNetCore.Authentication.Abstractions.dll - Microsoft.AspNetCore.Authentication.Cookies.dll - Microsoft.AspNetCore.Authentication.Core.dll - Microsoft.AspNetCore.Authentication.dll - Microsoft.AspNetCore.Authentication.OAuth.dll - Microsoft.AspNetCore.Authorization.dll - Microsoft.AspNetCore.Authorization.Policy.dll - Microsoft.AspNetCore.Components.Authorization.dll - Microsoft.AspNetCore.Components.dll - Microsoft.AspNetCore.Components.Forms.dll - Microsoft.AspNetCore.Components.Server.dll - Microsoft.AspNetCore.Components.Web.dll - Microsoft.AspNetCore.Connections.Abstractions.dll - Microsoft.AspNetCore.CookiePolicy.dll - Microsoft.AspNetCore.Cors.dll - Microsoft.AspNetCore.Cryptography.Internal.dll - Microsoft.AspNetCore.Cryptography.KeyDerivation.dll - Microsoft.AspNetCore.DataProtection.Abstractions.dll - Microsoft.AspNetCore.DataProtection.dll - Microsoft.AspNetCore.DataProtection.Extensions.dll - Microsoft.AspNetCore.Diagnostics.Abstractions.dll - Microsoft.AspNetCore.Diagnostics.dll - Microsoft.AspNetCore.Diagnostics.HealthChecks.dll - Microsoft.AspNetCore.dll - Microsoft.AspNetCore.HostFiltering.dll - Microsoft.AspNetCore.Hosting.Abstractions.dll - Microsoft.AspNetCore.Hosting.dll - Microsoft.AspNetCore.Hosting.Server.Abstractions.dll - Microsoft.AspNetCore.Html.Abstractions.dll - Microsoft.AspNetCore.Http.Abstractions.dll - Microsoft.AspNetCore.Http.Connections.Common.dll - Microsoft.AspNetCore.Http.Connections.dll - Microsoft.AspNetCore.Http.dll - Microsoft.AspNetCore.Http.Extensions.dll - Microsoft.AspNetCore.Http.Features.dll - Microsoft.AspNetCore.Http.Results.dll - Microsoft.AspNetCore.HttpLogging.dll - Microsoft.AspNetCore.HttpOverrides.dll - Microsoft.AspNetCore.HttpsPolicy.dll - Microsoft.AspNetCore.Identity.dll - Microsoft.AspNetCore.Localization.dll - Microsoft.AspNetCore.Localization.Routing.dll - Microsoft.AspNetCore.Metadata.dll - Microsoft.AspNetCore.Mvc.Abstractions.dll - Microsoft.AspNetCore.Mvc.ApiExplorer.dll - Microsoft.AspNetCore.Mvc.Core.dll - Microsoft.AspNetCore.Mvc.Cors.dll - Microsoft.AspNetCore.Mvc.DataAnnotations.dll - Microsoft.AspNetCore.Mvc.dll - Microsoft.AspNetCore.Mvc.Formatters.Json.dll - Microsoft.AspNetCore.Mvc.Formatters.Xml.dll - Microsoft.AspNetCore.Mvc.Localization.dll - Microsoft.AspNetCore.Mvc.Razor.dll - Microsoft.AspNetCore.Mvc.RazorPages.dll - Microsoft.AspNetCore.Mvc.TagHelpers.dll - Microsoft.AspNetCore.Mvc.ViewFeatures.dll - Microsoft.AspNetCore.Razor.dll - Microsoft.AspNetCore.Razor.Runtime.dll - Microsoft.AspNetCore.ResponseCaching.Abstractions.dll - Microsoft.AspNetCore.ResponseCaching.dll - Microsoft.AspNetCore.ResponseCompression.dll - Microsoft.AspNetCore.Rewrite.dll - Microsoft.AspNetCore.Routing.Abstractions.dll - Microsoft.AspNetCore.Routing.dll - Microsoft.AspNetCore.Server.HttpSys.dll - Microsoft.AspNetCore.Server.IIS.dll - Microsoft.AspNetCore.Server.IISIntegration.dll - Microsoft.AspNetCore.Server.Kestrel.Core.dll - Microsoft.AspNetCore.Server.Kestrel.dll - Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll - Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll - Microsoft.AspNetCore.Session.dll - Microsoft.AspNetCore.SignalR.Common.dll - Microsoft.AspNetCore.SignalR.Core.dll - Microsoft.AspNetCore.SignalR.dll - Microsoft.AspNetCore.SignalR.Protocols.Json.dll - Microsoft.AspNetCore.StaticFiles.dll - Microsoft.AspNetCore.WebSockets.dll - Microsoft.AspNetCore.WebUtilities.dll - Microsoft.Extensions.Caching.Abstractions.dll - Microsoft.Extensions.Caching.Memory.dll - Microsoft.Extensions.Configuration.Abstractions.dll - Microsoft.Extensions.Configuration.Binder.dll - Microsoft.Extensions.Configuration.CommandLine.dll - Microsoft.Extensions.Configuration.dll - Microsoft.Extensions.Configuration.EnvironmentVariables.dll - Microsoft.Extensions.Configuration.FileExtensions.dll - Microsoft.Extensions.Configuration.Ini.dll - Microsoft.Extensions.Configuration.Json.dll - Microsoft.Extensions.Configuration.KeyPerFile.dll - Microsoft.Extensions.Configuration.UserSecrets.dll - Microsoft.Extensions.Configuration.Xml.dll - Microsoft.Extensions.DependencyInjection.Abstractions.dll - Microsoft.Extensions.DependencyInjection.dll - Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll - Microsoft.Extensions.Diagnostics.HealthChecks.dll - Microsoft.Extensions.Features.dll - Microsoft.Extensions.FileProviders.Abstractions.dll - Microsoft.Extensions.FileProviders.Composite.dll - Microsoft.Extensions.FileProviders.Embedded.dll - Microsoft.Extensions.FileProviders.Physical.dll - Microsoft.Extensions.FileSystemGlobbing.dll - Microsoft.Extensions.Hosting.Abstractions.dll - Microsoft.Extensions.Hosting.dll - Microsoft.Extensions.Http.dll - Microsoft.Extensions.Identity.Core.dll - Microsoft.Extensions.Identity.Stores.dll - Microsoft.Extensions.Localization.Abstractions.dll - Microsoft.Extensions.Localization.dll - Microsoft.Extensions.Logging.Abstractions.dll - Microsoft.Extensions.Logging.Configuration.dll - Microsoft.Extensions.Logging.Console.dll - Microsoft.Extensions.Logging.Debug.dll - Microsoft.Extensions.Logging.dll - Microsoft.Extensions.Logging.EventLog.dll - Microsoft.Extensions.Logging.EventSource.dll - Microsoft.Extensions.Logging.TraceSource.dll - Microsoft.Extensions.ObjectPool.dll - Microsoft.Extensions.Options.ConfigurationExtensions.dll - Microsoft.Extensions.Options.DataAnnotations.dll - Microsoft.Extensions.Options.dll - Microsoft.Extensions.Primitives.dll - Microsoft.Extensions.WebEncoders.dll - Microsoft.JSInterop.dll - Microsoft.Net.Http.Headers.dll - System.Diagnostics.EventLog.dll - System.IO.Pipelines.dll - System.Security.Cryptography.Xml.dll - microsoft.aspnetcore.razor.language/3.1.0/lib/netstandard2.0/Microsoft.AspNetCore.Razor.Language.dll - microsoft.bcl.asyncinterfaces/6.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll - microsoft.codeanalysis.common/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll - microsoft.codeanalysis.csharp.workspaces/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll - microsoft.codeanalysis.csharp/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll - microsoft.codeanalysis.razor/3.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Razor.dll - microsoft.codeanalysis.workspaces.common/4.2.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll - microsoft.netcore.app.ref/6.0.36/ref/net6.0/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - Microsoft.Win32.Registry.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Formats.Asn1.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.AccessControl.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.AccessControl.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.Http.Json.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.AccessControl.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Cng.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.OpenSsl.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.Principal.Windows.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll - microsoft.visualstudio.web.codegeneration.contracts/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll - microsoft.visualstudio.web.codegeneration.core/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll - microsoft.visualstudio.web.codegeneration.design/3.1.4/lib/netcoreapp3.1/dotnet-aspnet-codegenerator-design.dll - microsoft.visualstudio.web.codegeneration.entityframeworkcore/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll - microsoft.visualstudio.web.codegeneration.templating/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll - microsoft.visualstudio.web.codegeneration.utils/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll - microsoft.visualstudio.web.codegeneration/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.dll - microsoft.visualstudio.web.codegenerators.mvc/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll - newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - nuget.frameworks/4.7.0/lib/netstandard1.6/NuGet.Frameworks.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - sprache/2.3.1/lib/netstandard2.1/Sprache.dll - system.composition.attributedmodel/6.0.0/lib/net6.0/System.Composition.AttributedModel.dll - system.composition.convention/6.0.0/lib/net6.0/System.Composition.Convention.dll - system.composition.hosting/6.0.0/lib/net6.0/System.Composition.Hosting.dll - system.composition.runtime/6.0.0/lib/net6.0/System.Composition.Runtime.dll - system.composition.typedparts/6.0.0/lib/net6.0/System.Composition.TypedParts.dll - -[analyzerReferences] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Razor/source-generators/ - Microsoft.AspNetCore.Razor.Utilities.Shared.dll - Microsoft.CodeAnalysis.Razor.Compiler.dll - Microsoft.Extensions.ObjectPool.dll - System.Collections.Immutable.dll -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/ - Microsoft.AspNetCore.Analyzers.dll - Microsoft.AspNetCore.Components.SdkAnalyzers.dll - Microsoft.AspNetCore.Mvc.Analyzers.dll -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll -/microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/cs/ - Microsoft.AspNetCore.App.Analyzers.dll - Microsoft.AspNetCore.App.CodeFixes.dll -/ - microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll - microsoft.codeanalysis.analyzers/3.3.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.Analyzers.dll - Microsoft.CodeAnalysis.CSharp.Analyzers.dll - microsoft.netcore.app.ref/6.0.36/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll - -[analyzerConfigFiles] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_6_default.globalconfig -obj/Debug/net6.0/DigitalIdentityExample.GeneratedMSBuildEditorConfig.editorconfig - -[additionalFiles] -Views/ - AdvancedIdentityShare/AdvancedIdentityShare.cshtml - Dbs/Dbs.cshtml - Home/DigitalIdentity.cshtml - Success/ - Error.cshtml - SuccessResult.cshtml - -[dynamicFiles] -Views/ - AdvancedIdentityShare/AdvancedIdentityShare.cshtml - Dbs/Dbs.cshtml - Home/DigitalIdentity.cshtml - Success/ - Error.cshtml - SuccessResult.cshtml diff --git a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache deleted file mode 100644 index 1bfc3662..00000000 --- a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj.lscache +++ /dev/null @@ -1,445 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -primary -lastDtbSucceeded - -[properties] -CommandLineArgsForDesignTimeEvaluation=-langversion:10.0 -define:TRACE -MaxSupportedLangVersion=10.0 -TargetPath=bin/Debug/net6.0/DocScanExample.dll -TargetRefPath=obj/Debug/net6.0/ref/DocScanExample.dll -TemporaryDependencyNodeTargetIdentifier=net6.0 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:6 -/define:TRACE;DEBUG;NET;NET6_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:portable -/filealign:512 -/optimize- -/out:obj/Debug/net6.0/DocScanExample.dll -/refout:obj/Debug/net6.0/refint/DocScanExample.dll -/target:exe -/warnaserror- -/utf8output -/deterministic+ -/langversion:10.0 -/warnaserror+:NU1605 - -[sourceFiles] -Controllers/ - AdvancedIdentityController.cs - DbsController.cs - HomeController.cs - IdentityProfileController.cs - IdVerifyController.cs -Models/ - DisplayHelper.cs - ErrorViewModel.cs -obj/Debug/net6.0/ - .NETCoreApp,Version=v6.0.AssemblyAttributes.cs - DocScanExample.AssemblyInfo.cs - DocScanExample.RazorAssemblyInfo.cs -Program.cs -Startup.cs - -[metadataReferences] -../../../Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll -/ - dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll - google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.aspnetcore.app.ref/6.0.36/ref/net6.0/ - Microsoft.AspNetCore.Antiforgery.dll - Microsoft.AspNetCore.Authentication.Abstractions.dll - Microsoft.AspNetCore.Authentication.Cookies.dll - Microsoft.AspNetCore.Authentication.Core.dll - Microsoft.AspNetCore.Authentication.dll - Microsoft.AspNetCore.Authentication.OAuth.dll - Microsoft.AspNetCore.Authorization.dll - Microsoft.AspNetCore.Authorization.Policy.dll - Microsoft.AspNetCore.Components.Authorization.dll - Microsoft.AspNetCore.Components.dll - Microsoft.AspNetCore.Components.Forms.dll - Microsoft.AspNetCore.Components.Server.dll - Microsoft.AspNetCore.Components.Web.dll - Microsoft.AspNetCore.Connections.Abstractions.dll - Microsoft.AspNetCore.CookiePolicy.dll - Microsoft.AspNetCore.Cors.dll - Microsoft.AspNetCore.Cryptography.Internal.dll - Microsoft.AspNetCore.Cryptography.KeyDerivation.dll - Microsoft.AspNetCore.DataProtection.Abstractions.dll - Microsoft.AspNetCore.DataProtection.dll - Microsoft.AspNetCore.DataProtection.Extensions.dll - Microsoft.AspNetCore.Diagnostics.Abstractions.dll - Microsoft.AspNetCore.Diagnostics.dll - Microsoft.AspNetCore.Diagnostics.HealthChecks.dll - Microsoft.AspNetCore.dll - Microsoft.AspNetCore.HostFiltering.dll - Microsoft.AspNetCore.Hosting.Abstractions.dll - Microsoft.AspNetCore.Hosting.dll - Microsoft.AspNetCore.Hosting.Server.Abstractions.dll - Microsoft.AspNetCore.Html.Abstractions.dll - Microsoft.AspNetCore.Http.Abstractions.dll - Microsoft.AspNetCore.Http.Connections.Common.dll - Microsoft.AspNetCore.Http.Connections.dll - Microsoft.AspNetCore.Http.dll - Microsoft.AspNetCore.Http.Extensions.dll - Microsoft.AspNetCore.Http.Features.dll - Microsoft.AspNetCore.Http.Results.dll - Microsoft.AspNetCore.HttpLogging.dll - Microsoft.AspNetCore.HttpOverrides.dll - Microsoft.AspNetCore.HttpsPolicy.dll - Microsoft.AspNetCore.Identity.dll - Microsoft.AspNetCore.Localization.dll - Microsoft.AspNetCore.Localization.Routing.dll - Microsoft.AspNetCore.Metadata.dll - Microsoft.AspNetCore.Mvc.Abstractions.dll - Microsoft.AspNetCore.Mvc.ApiExplorer.dll - Microsoft.AspNetCore.Mvc.Core.dll - Microsoft.AspNetCore.Mvc.Cors.dll - Microsoft.AspNetCore.Mvc.DataAnnotations.dll - Microsoft.AspNetCore.Mvc.dll - Microsoft.AspNetCore.Mvc.Formatters.Json.dll - Microsoft.AspNetCore.Mvc.Formatters.Xml.dll - Microsoft.AspNetCore.Mvc.Localization.dll - Microsoft.AspNetCore.Mvc.Razor.dll - Microsoft.AspNetCore.Mvc.RazorPages.dll - Microsoft.AspNetCore.Mvc.TagHelpers.dll - Microsoft.AspNetCore.Mvc.ViewFeatures.dll - Microsoft.AspNetCore.Razor.dll - Microsoft.AspNetCore.Razor.Runtime.dll - Microsoft.AspNetCore.ResponseCaching.Abstractions.dll - Microsoft.AspNetCore.ResponseCaching.dll - Microsoft.AspNetCore.ResponseCompression.dll - Microsoft.AspNetCore.Rewrite.dll - Microsoft.AspNetCore.Routing.Abstractions.dll - Microsoft.AspNetCore.Routing.dll - Microsoft.AspNetCore.Server.HttpSys.dll - Microsoft.AspNetCore.Server.IIS.dll - Microsoft.AspNetCore.Server.IISIntegration.dll - Microsoft.AspNetCore.Server.Kestrel.Core.dll - Microsoft.AspNetCore.Server.Kestrel.dll - Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll - Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll - Microsoft.AspNetCore.Session.dll - Microsoft.AspNetCore.SignalR.Common.dll - Microsoft.AspNetCore.SignalR.Core.dll - Microsoft.AspNetCore.SignalR.dll - Microsoft.AspNetCore.SignalR.Protocols.Json.dll - Microsoft.AspNetCore.StaticFiles.dll - Microsoft.AspNetCore.WebSockets.dll - Microsoft.AspNetCore.WebUtilities.dll - Microsoft.Extensions.Caching.Abstractions.dll - Microsoft.Extensions.Caching.Memory.dll - Microsoft.Extensions.Configuration.Abstractions.dll - Microsoft.Extensions.Configuration.Binder.dll - Microsoft.Extensions.Configuration.CommandLine.dll - Microsoft.Extensions.Configuration.dll - Microsoft.Extensions.Configuration.EnvironmentVariables.dll - Microsoft.Extensions.Configuration.FileExtensions.dll - Microsoft.Extensions.Configuration.Ini.dll - Microsoft.Extensions.Configuration.Json.dll - Microsoft.Extensions.Configuration.KeyPerFile.dll - Microsoft.Extensions.Configuration.UserSecrets.dll - Microsoft.Extensions.Configuration.Xml.dll - Microsoft.Extensions.DependencyInjection.Abstractions.dll - Microsoft.Extensions.DependencyInjection.dll - Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll - Microsoft.Extensions.Diagnostics.HealthChecks.dll - Microsoft.Extensions.Features.dll - Microsoft.Extensions.FileProviders.Abstractions.dll - Microsoft.Extensions.FileProviders.Composite.dll - Microsoft.Extensions.FileProviders.Embedded.dll - Microsoft.Extensions.FileProviders.Physical.dll - Microsoft.Extensions.FileSystemGlobbing.dll - Microsoft.Extensions.Hosting.Abstractions.dll - Microsoft.Extensions.Hosting.dll - Microsoft.Extensions.Http.dll - Microsoft.Extensions.Identity.Core.dll - Microsoft.Extensions.Identity.Stores.dll - Microsoft.Extensions.Localization.Abstractions.dll - Microsoft.Extensions.Localization.dll - Microsoft.Extensions.Logging.Abstractions.dll - Microsoft.Extensions.Logging.Configuration.dll - Microsoft.Extensions.Logging.Console.dll - Microsoft.Extensions.Logging.Debug.dll - Microsoft.Extensions.Logging.dll - Microsoft.Extensions.Logging.EventLog.dll - Microsoft.Extensions.Logging.EventSource.dll - Microsoft.Extensions.Logging.TraceSource.dll - Microsoft.Extensions.ObjectPool.dll - Microsoft.Extensions.Options.ConfigurationExtensions.dll - Microsoft.Extensions.Options.DataAnnotations.dll - Microsoft.Extensions.Options.dll - Microsoft.Extensions.Primitives.dll - Microsoft.Extensions.WebEncoders.dll - Microsoft.JSInterop.dll - Microsoft.Net.Http.Headers.dll - System.Diagnostics.EventLog.dll - System.IO.Pipelines.dll - System.Security.Cryptography.Xml.dll - microsoft.aspnetcore.razor.language/3.1.0/lib/netstandard2.0/Microsoft.AspNetCore.Razor.Language.dll - microsoft.codeanalysis.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.dll - microsoft.codeanalysis.csharp.workspaces/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll - microsoft.codeanalysis.csharp/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll - microsoft.codeanalysis.razor/3.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Razor.dll - microsoft.codeanalysis.workspaces.common/3.3.1/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll - microsoft.netcore.app.ref/6.0.36/ref/net6.0/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - Microsoft.Win32.Registry.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Formats.Asn1.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.AccessControl.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.AccessControl.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.Http.Json.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.AccessControl.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Cng.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.OpenSsl.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.Principal.Windows.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll - microsoft.visualstudio.web.codegeneration.contracts/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll - microsoft.visualstudio.web.codegeneration.core/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll - microsoft.visualstudio.web.codegeneration.design/3.1.4/lib/netcoreapp3.1/dotnet-aspnet-codegenerator-design.dll - microsoft.visualstudio.web.codegeneration.entityframeworkcore/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll - microsoft.visualstudio.web.codegeneration.templating/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll - microsoft.visualstudio.web.codegeneration.utils/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll - microsoft.visualstudio.web.codegeneration/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.dll - microsoft.visualstudio.web.codegenerators.mvc/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll - newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - nuget.frameworks/4.7.0/lib/netstandard1.6/NuGet.Frameworks.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - sprache/2.3.1/lib/netstandard2.1/Sprache.dll - system.composition.attributedmodel/1.0.31/lib/netstandard1.0/System.Composition.AttributedModel.dll - system.composition.convention/1.0.31/lib/netstandard1.0/System.Composition.Convention.dll - system.composition.hosting/1.0.31/lib/netstandard1.0/System.Composition.Hosting.dll - system.composition.runtime/1.0.31/lib/netstandard1.0/System.Composition.Runtime.dll - system.composition.typedparts/1.0.31/lib/netstandard1.0/System.Composition.TypedParts.dll - -[analyzerReferences] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Razor/source-generators/ - Microsoft.AspNetCore.Razor.Utilities.Shared.dll - Microsoft.CodeAnalysis.Razor.Compiler.dll - Microsoft.Extensions.ObjectPool.dll - System.Collections.Immutable.dll -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/ - Microsoft.AspNetCore.Analyzers.dll - Microsoft.AspNetCore.Components.SdkAnalyzers.dll - Microsoft.AspNetCore.Mvc.Analyzers.dll -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll -/microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/cs/ - Microsoft.AspNetCore.App.Analyzers.dll - Microsoft.AspNetCore.App.CodeFixes.dll -/ - microsoft.aspnetcore.app.ref/6.0.36/analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll - microsoft.codeanalysis.analyzers/2.9.4/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.Analyzers.dll - Microsoft.CodeAnalysis.CSharp.Analyzers.dll - microsoft.netcore.app.ref/6.0.36/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll - -[analyzerConfigFiles] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_6_default.globalconfig -obj/Debug/net6.0/DocScanExample.GeneratedMSBuildEditorConfig.editorconfig - -[additionalFiles] -Views/ - AdvancedIdentityProfile/Index.cshtml - Dbs/Index.cshtml - Home/ - Index.cshtml - PrivacyPolicy.cshtml - IdentityProfile/Index.cshtml - IdVerify/Success.cshtml - Shared/ - Error.cshtml - _Check.cshtml - _Layout.cshtml - _Task.cshtml - _ValidationScriptsPartial.cshtml - _ViewImports.cshtml - _ViewStart.cshtml - -[dynamicFiles] -Views/ - AdvancedIdentityProfile/Index.cshtml - Dbs/Index.cshtml - Home/ - Index.cshtml - PrivacyPolicy.cshtml - IdentityProfile/Index.cshtml - IdVerify/Success.cshtml - Shared/ - Error.cshtml - _Check.cshtml - _Layout.cshtml - _Task.cshtml - _ValidationScriptsPartial.cshtml - _ViewImports.cshtml - _ViewStart.cshtml diff --git a/src/Examples/Profile/CoreExample/CoreExample.csproj.lscache b/src/Examples/Profile/CoreExample/CoreExample.csproj.lscache deleted file mode 100644 index 0a31fbc1..00000000 --- a/src/Examples/Profile/CoreExample/CoreExample.csproj.lscache +++ /dev/null @@ -1,403 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -primary -lastDtbSucceeded - -[properties] -AssemblyName=CoreExample -CommandLineArgsForDesignTimeEvaluation=-langversion:8.0 -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=8.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=CoreExample -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/netcoreapp3.1/CoreExample.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=netcoreapp3.1 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:3 -/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:portable -/filealign:512 -/optimize- -/out:obj/Debug/netcoreapp3.1/CoreExample.dll -/target:exe -/warnaserror+ -/utf8output -/deterministic+ -/langversion:8.0 - -[sourceFiles] -Controllers/ - AccountController.cs - HomeController.cs -GlobalSuppressions.cs -Models/ - DisplayAttribute.cs - DisplayAttributes.cs -obj/Debug/netcoreapp3.1/ - .NETCoreApp,Version=v3.1.AssemblyAttributes.cs - CoreExample.AssemblyInfo.cs - CoreExample.RazorAssemblyInfo.cs -Program.cs -Startup.cs - -[metadataReferences] -../../../Yoti.Auth/bin/Debug/netcoreapp3.1/Yoti.Auth.dll -/ - dotnetenv/2.3.0/lib/netstandard1.3/DotNetEnv.dll - google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.aspnetcore.app.ref/3.1.10/ref/netcoreapp3.1/ - Microsoft.AspNetCore.Antiforgery.dll - Microsoft.AspNetCore.Authentication.Abstractions.dll - Microsoft.AspNetCore.Authentication.Cookies.dll - Microsoft.AspNetCore.Authentication.Core.dll - Microsoft.AspNetCore.Authentication.dll - Microsoft.AspNetCore.Authentication.OAuth.dll - Microsoft.AspNetCore.Authorization.dll - Microsoft.AspNetCore.Authorization.Policy.dll - Microsoft.AspNetCore.Components.Authorization.dll - Microsoft.AspNetCore.Components.dll - Microsoft.AspNetCore.Components.Forms.dll - Microsoft.AspNetCore.Components.Server.dll - Microsoft.AspNetCore.Components.Web.dll - Microsoft.AspNetCore.Connections.Abstractions.dll - Microsoft.AspNetCore.CookiePolicy.dll - Microsoft.AspNetCore.Cors.dll - Microsoft.AspNetCore.Cryptography.Internal.dll - Microsoft.AspNetCore.Cryptography.KeyDerivation.dll - Microsoft.AspNetCore.DataProtection.Abstractions.dll - Microsoft.AspNetCore.DataProtection.dll - Microsoft.AspNetCore.DataProtection.Extensions.dll - Microsoft.AspNetCore.Diagnostics.Abstractions.dll - Microsoft.AspNetCore.Diagnostics.dll - Microsoft.AspNetCore.Diagnostics.HealthChecks.dll - Microsoft.AspNetCore.dll - Microsoft.AspNetCore.HostFiltering.dll - Microsoft.AspNetCore.Hosting.Abstractions.dll - Microsoft.AspNetCore.Hosting.dll - Microsoft.AspNetCore.Hosting.Server.Abstractions.dll - Microsoft.AspNetCore.Html.Abstractions.dll - Microsoft.AspNetCore.Http.Abstractions.dll - Microsoft.AspNetCore.Http.Connections.Common.dll - Microsoft.AspNetCore.Http.Connections.dll - Microsoft.AspNetCore.Http.dll - Microsoft.AspNetCore.Http.Extensions.dll - Microsoft.AspNetCore.Http.Features.dll - Microsoft.AspNetCore.HttpOverrides.dll - Microsoft.AspNetCore.HttpsPolicy.dll - Microsoft.AspNetCore.Identity.dll - Microsoft.AspNetCore.Localization.dll - Microsoft.AspNetCore.Localization.Routing.dll - Microsoft.AspNetCore.Metadata.dll - Microsoft.AspNetCore.Mvc.Abstractions.dll - Microsoft.AspNetCore.Mvc.ApiExplorer.dll - Microsoft.AspNetCore.Mvc.Core.dll - Microsoft.AspNetCore.Mvc.Cors.dll - Microsoft.AspNetCore.Mvc.DataAnnotations.dll - Microsoft.AspNetCore.Mvc.dll - Microsoft.AspNetCore.Mvc.Formatters.Json.dll - Microsoft.AspNetCore.Mvc.Formatters.Xml.dll - Microsoft.AspNetCore.Mvc.Localization.dll - Microsoft.AspNetCore.Mvc.Razor.dll - Microsoft.AspNetCore.Mvc.RazorPages.dll - Microsoft.AspNetCore.Mvc.TagHelpers.dll - Microsoft.AspNetCore.Mvc.ViewFeatures.dll - Microsoft.AspNetCore.Razor.dll - Microsoft.AspNetCore.Razor.Runtime.dll - Microsoft.AspNetCore.ResponseCaching.Abstractions.dll - Microsoft.AspNetCore.ResponseCaching.dll - Microsoft.AspNetCore.ResponseCompression.dll - Microsoft.AspNetCore.Rewrite.dll - Microsoft.AspNetCore.Routing.Abstractions.dll - Microsoft.AspNetCore.Routing.dll - Microsoft.AspNetCore.Server.HttpSys.dll - Microsoft.AspNetCore.Server.IIS.dll - Microsoft.AspNetCore.Server.IISIntegration.dll - Microsoft.AspNetCore.Server.Kestrel.Core.dll - Microsoft.AspNetCore.Server.Kestrel.dll - Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll - Microsoft.AspNetCore.Session.dll - Microsoft.AspNetCore.SignalR.Common.dll - Microsoft.AspNetCore.SignalR.Core.dll - Microsoft.AspNetCore.SignalR.dll - Microsoft.AspNetCore.SignalR.Protocols.Json.dll - Microsoft.AspNetCore.StaticFiles.dll - Microsoft.AspNetCore.WebSockets.dll - Microsoft.AspNetCore.WebUtilities.dll - Microsoft.Extensions.Caching.Abstractions.dll - Microsoft.Extensions.Caching.Memory.dll - Microsoft.Extensions.Configuration.Abstractions.dll - Microsoft.Extensions.Configuration.Binder.dll - Microsoft.Extensions.Configuration.CommandLine.dll - Microsoft.Extensions.Configuration.dll - Microsoft.Extensions.Configuration.EnvironmentVariables.dll - Microsoft.Extensions.Configuration.FileExtensions.dll - Microsoft.Extensions.Configuration.Ini.dll - Microsoft.Extensions.Configuration.Json.dll - Microsoft.Extensions.Configuration.KeyPerFile.dll - Microsoft.Extensions.Configuration.UserSecrets.dll - Microsoft.Extensions.Configuration.Xml.dll - Microsoft.Extensions.DependencyInjection.Abstractions.dll - Microsoft.Extensions.DependencyInjection.dll - Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll - Microsoft.Extensions.Diagnostics.HealthChecks.dll - Microsoft.Extensions.FileProviders.Abstractions.dll - Microsoft.Extensions.FileProviders.Composite.dll - Microsoft.Extensions.FileProviders.Embedded.dll - Microsoft.Extensions.FileProviders.Physical.dll - Microsoft.Extensions.FileSystemGlobbing.dll - Microsoft.Extensions.Hosting.Abstractions.dll - Microsoft.Extensions.Hosting.dll - Microsoft.Extensions.Http.dll - Microsoft.Extensions.Identity.Core.dll - Microsoft.Extensions.Identity.Stores.dll - Microsoft.Extensions.Localization.Abstractions.dll - Microsoft.Extensions.Localization.dll - Microsoft.Extensions.Logging.Abstractions.dll - Microsoft.Extensions.Logging.Configuration.dll - Microsoft.Extensions.Logging.Console.dll - Microsoft.Extensions.Logging.Debug.dll - Microsoft.Extensions.Logging.dll - Microsoft.Extensions.Logging.EventLog.dll - Microsoft.Extensions.Logging.EventSource.dll - Microsoft.Extensions.Logging.TraceSource.dll - Microsoft.Extensions.ObjectPool.dll - Microsoft.Extensions.Options.ConfigurationExtensions.dll - Microsoft.Extensions.Options.DataAnnotations.dll - Microsoft.Extensions.Options.dll - Microsoft.Extensions.Primitives.dll - Microsoft.Extensions.WebEncoders.dll - Microsoft.JSInterop.dll - Microsoft.Net.Http.Headers.dll - Microsoft.Win32.Registry.dll - System.Diagnostics.EventLog.dll - System.Security.AccessControl.dll - System.Security.Cryptography.Cng.dll - System.Security.Cryptography.Xml.dll - System.Security.Permissions.dll - System.Security.Principal.Windows.dll - System.Windows.Extensions.dll - microsoft.aspnetcore.razor.language/3.1.0/lib/netstandard2.0/Microsoft.AspNetCore.Razor.Language.dll - microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll - microsoft.codeanalysis.common/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.dll - microsoft.codeanalysis.csharp.workspaces/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll - microsoft.codeanalysis.csharp/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll - microsoft.codeanalysis.razor/3.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Razor.dll - microsoft.codeanalysis.workspaces.common/4.9.2/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll - microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll - microsoft.visualstudio.web.codegeneration.contracts/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Contracts.dll - microsoft.visualstudio.web.codegeneration.core/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Core.dll - microsoft.visualstudio.web.codegeneration.design/3.1.4/lib/netcoreapp3.1/dotnet-aspnet-codegenerator-design.dll - microsoft.visualstudio.web.codegeneration.entityframeworkcore/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.EntityFrameworkCore.dll - microsoft.visualstudio.web.codegeneration.templating/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Templating.dll - microsoft.visualstudio.web.codegeneration.utils/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.Utils.dll - microsoft.visualstudio.web.codegeneration/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGeneration.dll - microsoft.visualstudio.web.codegenerators.mvc/3.1.4/lib/netstandard2.0/Microsoft.VisualStudio.Web.CodeGenerators.Mvc.dll - newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - nuget.frameworks/4.7.0/lib/netstandard1.6/NuGet.Frameworks.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - sprache/2.3.1/lib/netstandard2.1/Sprache.dll - system.collections.immutable/8.0.0/lib/netstandard2.0/System.Collections.Immutable.dll - system.composition.attributedmodel/8.0.0/lib/netstandard2.0/System.Composition.AttributedModel.dll - system.composition.convention/8.0.0/lib/netstandard2.0/System.Composition.Convention.dll - system.composition.hosting/8.0.0/lib/netstandard2.0/System.Composition.Hosting.dll - system.composition.runtime/8.0.0/lib/netstandard2.0/System.Composition.Runtime.dll - system.composition.typedparts/8.0.0/lib/netstandard2.0/System.Composition.TypedParts.dll - system.io.pipelines/8.0.0/lib/netstandard2.0/System.IO.Pipelines.dll - system.reflection.metadata/8.0.0/lib/netstandard2.0/System.Reflection.Metadata.dll - system.runtime.compilerservices.unsafe/6.0.0/lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll - system.text.encoding.codepages/8.0.0/lib/netstandard2.0/System.Text.Encoding.CodePages.dll - system.threading.channels/8.0.0/lib/netstandard2.1/System.Threading.Channels.dll - -[analyzerReferences] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk.Web/analyzers/cs/ - Microsoft.AspNetCore.Analyzers.dll - Microsoft.AspNetCore.Components.SdkAnalyzers.dll - Microsoft.AspNetCore.Mvc.Analyzers.dll -/microsoft.codeanalysis.analyzers/3.3.4/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.Analyzers.dll - Microsoft.CodeAnalysis.CSharp.Analyzers.dll - -[analyzerConfigFiles] -obj/Debug/netcoreapp3.1/CoreExample.GeneratedMSBuildEditorConfig.editorconfig - -[dynamicFiles] -Views/Account/ - Connect.cshtml - Error.cshtml -Views/Home/ - DBSCheck.cshtml - DynamicScenario.cshtml - Index.cshtml -Views/_ViewImports.cshtml diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index 31378ca5..ad0b1499 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -19,7 +19,7 @@ False latest true - 3.19.0 + 3.20.0 diff --git a/src/Yoti.Auth/Yoti.Auth.csproj.lscache b/src/Yoti.Auth/Yoti.Auth.csproj.lscache deleted file mode 100644 index 2c48600c..00000000 --- a/src/Yoti.Auth/Yoti.Auth.csproj.lscache +++ /dev/null @@ -1,4465 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=net452 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=7.3 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETFramework -TargetPath=bin/Debug/net452/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=net452 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:4 -/define:TRACE;DEBUG;NETFRAMEWORK;NET452;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/net452/Yoti.Auth.dll -/subsystemversion:6.00 -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/net452/ - .NETFramework,Version=v4.5.2.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/ - google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/net45/JsonSubTypes.dll - microsoft.netframework.referenceassemblies.net452/1.0.3/build/.NETFramework/v4.5.2/Facades/ - System.Collections.Concurrent.dll - System.Collections.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.Tools.dll - System.Diagnostics.Tracing.dll - System.Dynamic.Runtime.dll - System.Globalization.dll - System.IO.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Net.NetworkInformation.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.ObjectModel.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Primitives.dll - System.Resources.ResourceManager.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Principal.dll - System.ServiceModel.Duplex.dll - System.ServiceModel.Http.dll - System.ServiceModel.NetTcp.dll - System.ServiceModel.Primitives.dll - System.ServiceModel.Security.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.RegularExpressions.dll - System.Threading.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Timer.dll - System.Xml.ReaderWriter.dll - System.Xml.XDocument.dll - System.Xml.XmlSerializer.dll - microsoft.netframework.referenceassemblies.net452/1.0.3/build/.NETFramework/v4.5.2/ - Microsoft.CSharp.dll - mscorlib.dll - System.Configuration.dll - System.Core.dll - System.Data.dll - System.dll - System.Drawing.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.Net.Http.dll - System.Numerics.dll - System.Runtime.Serialization.dll - System.Xml.dll - System.Xml.Linq.dll - newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll - nlog/5.0.1/lib/net45/NLog.dll - portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll - system.buffers/4.4.0/ref/netstandard1.1/System.Buffers.dll - system.memory/4.5.3/lib/netstandard1.1/System.Memory.dll - system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll - system.valuetuple/4.5.0/ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/net452/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=net462 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=7.3 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETFramework -TargetPath=bin/Debug/net462/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=net462 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:4 -/define:TRACE;DEBUG;NETFRAMEWORK;NET462;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/net462/Yoti.Auth.dll -/subsystemversion:6.00 -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/net462/ - .NETFramework,Version=v4.6.2.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/sdk/8.0.414/Microsoft/Microsoft.NET.Build.Extensions/net461/lib/ - Microsoft.Win32.Primitives.dll - netfx.force.conflicts.dll - netstandard.dll - System.AppContext.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Console.dll - System.Data.Common.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Net.Http.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.Sockets.dll - System.Net.WebHeaderCollection.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.ObjectModel.dll - System.Reflection.dll - System.Reflection.Extensions.dll - System.Reflection.Primitives.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.RegularExpressions.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Xml.ReaderWriter.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll -/sdk/8.0.414/Microsoft/Microsoft.NET.Build.Extensions/net462/lib/System.Runtime.InteropServices.RuntimeInformation.dll -/ - google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/net46/JsonSubTypes.dll - microsoft.netframework.referenceassemblies.net462/1.0.3/build/.NETFramework/v4.6.2/Facades/ - System.ComponentModel.Annotations.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.ServiceModel.Duplex.dll - System.ServiceModel.Http.dll - System.ServiceModel.NetTcp.dll - System.ServiceModel.Primitives.dll - System.ServiceModel.Security.dll - microsoft.netframework.referenceassemblies.net462/1.0.3/build/.NETFramework/v4.6.2/ - Microsoft.CSharp.dll - mscorlib.dll - System.Configuration.dll - System.Core.dll - System.Data.dll - System.dll - System.Drawing.dll - System.IO.Compression.FileSystem.dll - System.Numerics.dll - System.Runtime.Serialization.dll - System.Xml.dll - System.Xml.Linq.dll - newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll - nlog/5.0.1/lib/net46/NLog.dll - portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll - system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll - system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll - system.numerics.vectors/4.4.0/ref/net46/System.Numerics.Vectors.dll - system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll - system.valuetuple/4.5.0/ref/net461/System.ValueTuple.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/net462/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=net472 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=7.3 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETFramework -TargetPath=bin/Debug/net472/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=net472 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:4 -/define:TRACE;DEBUG;NETFRAMEWORK;NET472;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER;NET47_OR_GREATER;NET471_OR_GREATER;NET472_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/net472/Yoti.Auth.dll -/subsystemversion:6.00 -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/net472/ - .NETFramework,Version=v4.7.2.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/ - google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/net47/JsonSubTypes.dll - microsoft.netframework.referenceassemblies.net472/1.0.3/build/.NETFramework/v4.7.2/Facades/ - Microsoft.Win32.Primitives.dll - netstandard.dll - System.AppContext.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Console.dll - System.Data.Common.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Net.Http.Rtc.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.Sockets.dll - System.Net.WebHeaderCollection.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.ObjectModel.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Primitives.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.ServiceModel.Duplex.dll - System.ServiceModel.Http.dll - System.ServiceModel.NetTcp.dll - System.ServiceModel.Primitives.dll - System.ServiceModel.Security.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.RegularExpressions.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Xml.ReaderWriter.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - microsoft.netframework.referenceassemblies.net472/1.0.3/build/.NETFramework/v4.7.2/ - Microsoft.CSharp.dll - mscorlib.dll - System.ComponentModel.Composition.dll - System.Configuration.dll - System.Core.dll - System.Data.dll - System.dll - System.Drawing.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.Net.Http.dll - System.Numerics.dll - System.Runtime.Serialization.dll - System.Xml.dll - System.Xml.Linq.dll - newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll - nlog/5.0.1/lib/net46/NLog.dll - portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll - system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll - system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll - system.numerics.vectors/4.4.0/ref/net46/System.Numerics.Vectors.dll - system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll - system.valuetuple/4.5.0/ref/net47/System.ValueTuple.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/net472/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=net48 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=7.3 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETFramework -TargetPath=bin/Debug/net48/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=net48 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:4 -/define:TRACE;DEBUG;NETFRAMEWORK;NET48;NET20_OR_GREATER;NET30_OR_GREATER;NET35_OR_GREATER;NET40_OR_GREATER;NET45_OR_GREATER;NET451_OR_GREATER;NET452_OR_GREATER;NET46_OR_GREATER;NET461_OR_GREATER;NET462_OR_GREATER;NET47_OR_GREATER;NET471_OR_GREATER;NET472_OR_GREATER;NET48_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/net48/Yoti.Auth.dll -/subsystemversion:6.00 -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/net48/ - .NETFramework,Version=v4.8.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/ - google.protobuf/3.26.1/lib/net45/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/net47/JsonSubTypes.dll - microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/ - Microsoft.Win32.Primitives.dll - netstandard.dll - System.AppContext.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Console.dll - System.Data.Common.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Net.Http.Rtc.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.Sockets.dll - System.Net.WebHeaderCollection.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.ObjectModel.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Primitives.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.ServiceModel.Duplex.dll - System.ServiceModel.Http.dll - System.ServiceModel.NetTcp.dll - System.ServiceModel.Primitives.dll - System.ServiceModel.Security.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.RegularExpressions.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Xml.ReaderWriter.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/ - Microsoft.CSharp.dll - mscorlib.dll - System.ComponentModel.Composition.dll - System.Configuration.dll - System.Core.dll - System.Data.dll - System.dll - System.Drawing.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.Net.Http.dll - System.Numerics.dll - System.Runtime.Serialization.dll - System.Xml.dll - System.Xml.Linq.dll - newtonsoft.json/13.0.3/lib/net45/Newtonsoft.Json.dll - nlog/5.0.1/lib/net46/NLog.dll - portable.bouncycastle/1.8.5/lib/net40/BouncyCastle.Crypto.dll - system.buffers/4.4.0/ref/netstandard2.0/System.Buffers.dll - system.memory/4.5.3/lib/netstandard2.0/System.Memory.dll - system.numerics.vectors/4.4.0/ref/net46/System.Numerics.Vectors.dll - system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll - system.valuetuple/4.5.0/ref/net47/System.ValueTuple.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/net48/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=net6.0 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=10.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/net6.0/Yoti.Auth.dll -TargetRefPath=obj/Debug/net6.0/ref/Yoti.Auth.dll -TemporaryDependencyNodeTargetIdentifier=net6.0 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:6 -/define:TRACE;DEBUG;NET;NET6_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/net6.0/Yoti.Auth.dll -/refout:obj/Debug/net6.0/refint/Yoti.Auth.dll -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/net6.0/ - .NETCoreApp,Version=v6.0.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/ - google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.netcore.app.ref/6.0.36/ref/net6.0/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - Microsoft.Win32.Registry.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Formats.Asn1.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.AccessControl.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.AccessControl.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.Http.Json.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.AccessControl.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Cng.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.OpenSsl.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.Principal.Windows.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll - newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll -/microsoft.netcore.app.ref/6.0.36/analyzers/dotnet/cs/System.Text.Json.SourceGeneration.dll - -[analyzerConfigFiles] -.editorconfig -/microsoft.codeanalysis.netanalyzers/7.0.3/build/config/analysislevel_6_default.editorconfig -obj/Debug/net6.0/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=netcoreapp3.1 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=8.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/netcoreapp3.1/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=netcoreapp3.1 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:3 -/define:TRACE;DEBUG;NETCOREAPP;NETCOREAPP3_1;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/netcoreapp3.1/Yoti.Auth.dll -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/netcoreapp3.1/ - .NETCoreApp,Version=v3.1.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/ - google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.netcore.app.ref/3.1.0/ref/netcoreapp3.1/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.InteropServices.WindowsRuntime.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll - newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/netcoreapp3.1/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -primary -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=netstandard1.6 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=7.3 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETStandard -TargetPath=bin/Debug/netstandard1.6/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=netstandard1.6 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD1_6;NETSTANDARD1_0_OR_GREATER;NETSTANDARD1_1_OR_GREATER;NETSTANDARD1_2_OR_GREATER;NETSTANDARD1_3_OR_GREATER;NETSTANDARD1_4_OR_GREATER;NETSTANDARD1_5_OR_GREATER;NETSTANDARD1_6_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/netstandard1.6/Yoti.Auth.dll -/target:library -/warnaserror+ -/utf8output -/deterministic+ -/langversion:latest - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/netstandard1.6/ - .NETStandard,Version=v1.6.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/ - google.protobuf/3.26.1/lib/netstandard1.1/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard1.3/JsonSubTypes.dll - microsoft.csharp/4.7.0/ref/netstandard1.0/Microsoft.CSharp.dll - microsoft.win32.primitives/4.3.0/ref/netstandard1.3/Microsoft.Win32.Primitives.dll - newtonsoft.json/13.0.3/lib/netstandard1.3/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard1.5/NLog.dll - portable.bouncycastle/1.8.5/lib/netstandard1.3/BouncyCastle.Crypto.dll - system.appcontext/4.3.0/ref/netstandard1.6/System.AppContext.dll - system.buffers/4.4.0/ref/netstandard1.1/System.Buffers.dll - system.collections.concurrent/4.3.0/ref/netstandard1.3/System.Collections.Concurrent.dll - system.collections.nongeneric/4.3.0/ref/netstandard1.3/System.Collections.NonGeneric.dll - system.collections/4.3.0/ref/netstandard1.3/System.Collections.dll - system.componentmodel.primitives/4.3.0/ref/netstandard1.0/System.ComponentModel.Primitives.dll - system.componentmodel.typeconverter/4.3.0/ref/netstandard1.5/System.ComponentModel.TypeConverter.dll - system.componentmodel/4.3.0/ref/netstandard1.0/System.ComponentModel.dll - system.console/4.3.0/ref/netstandard1.3/System.Console.dll - system.data.common/4.3.0/ref/netstandard1.2/System.Data.Common.dll - system.diagnostics.debug/4.3.0/ref/netstandard1.3/System.Diagnostics.Debug.dll - system.diagnostics.process/4.3.0/ref/netstandard1.4/System.Diagnostics.Process.dll - system.diagnostics.stacktrace/4.3.0/ref/netstandard1.3/System.Diagnostics.StackTrace.dll - system.diagnostics.tools/4.3.0/ref/netstandard1.0/System.Diagnostics.Tools.dll - system.diagnostics.tracesource/4.3.0/ref/netstandard1.3/System.Diagnostics.TraceSource.dll - system.diagnostics.tracing/4.3.0/ref/netstandard1.5/System.Diagnostics.Tracing.dll - system.dynamic.runtime/4.3.0/ref/netstandard1.3/System.Dynamic.Runtime.dll - system.globalization.calendars/4.3.0/ref/netstandard1.3/System.Globalization.Calendars.dll - system.globalization/4.3.0/ref/netstandard1.3/System.Globalization.dll - system.io.compression.zipfile/4.3.0/ref/netstandard1.3/System.IO.Compression.ZipFile.dll - system.io.compression/4.3.0/ref/netstandard1.3/System.IO.Compression.dll - system.io.filesystem.primitives/4.3.0/ref/netstandard1.3/System.IO.FileSystem.Primitives.dll - system.io.filesystem.watcher/4.3.0/ref/netstandard1.3/System.IO.FileSystem.Watcher.dll - system.io.filesystem/4.3.0/ref/netstandard1.3/System.IO.FileSystem.dll - system.io/4.3.0/ref/netstandard1.5/System.IO.dll - system.linq.expressions/4.3.0/ref/netstandard1.6/System.Linq.Expressions.dll - system.linq/4.3.0/ref/netstandard1.6/System.Linq.dll - system.memory/4.5.3/lib/netstandard1.1/System.Memory.dll - system.net.http/4.3.4/ref/netstandard1.3/System.Net.Http.dll - system.net.nameresolution/4.3.0/ref/netstandard1.3/System.Net.NameResolution.dll - system.net.primitives/4.3.0/ref/netstandard1.3/System.Net.Primitives.dll - system.net.requests/4.3.0/ref/netstandard1.3/System.Net.Requests.dll - system.net.sockets/4.3.0/ref/netstandard1.3/System.Net.Sockets.dll - system.net.webheadercollection/4.3.0/ref/netstandard1.3/System.Net.WebHeaderCollection.dll - system.objectmodel/4.3.0/ref/netstandard1.3/System.ObjectModel.dll - system.reflection.extensions/4.3.0/ref/netstandard1.0/System.Reflection.Extensions.dll - system.reflection.primitives/4.3.0/ref/netstandard1.0/System.Reflection.Primitives.dll - system.reflection.typeextensions/4.7.0/ref/netstandard1.5/System.Reflection.TypeExtensions.dll - system.reflection/4.3.0/ref/netstandard1.5/System.Reflection.dll - system.resources.resourcemanager/4.3.0/ref/netstandard1.0/System.Resources.ResourceManager.dll - system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll - system.runtime.extensions/4.3.1/ref/netstandard1.5/System.Runtime.Extensions.dll - system.runtime.handles/4.3.0/ref/netstandard1.3/System.Runtime.Handles.dll - system.runtime.interopservices.runtimeinformation/4.3.0/ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll - system.runtime.interopservices/4.3.0/ref/netstandard1.5/System.Runtime.InteropServices.dll - system.runtime.loader/4.3.0/ref/netstandard1.5/System.Runtime.Loader.dll - system.runtime.numerics/4.3.0/ref/netstandard1.1/System.Runtime.Numerics.dll - system.runtime.serialization.formatters/4.3.0/ref/netstandard1.3/System.Runtime.Serialization.Formatters.dll - system.runtime.serialization.primitives/4.3.0/ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll - system.runtime/4.3.1/ref/netstandard1.5/System.Runtime.dll - system.security.cryptography.algorithms/4.3.0/ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll - system.security.cryptography.encoding/4.3.0/ref/netstandard1.3/System.Security.Cryptography.Encoding.dll - system.security.cryptography.primitives/4.3.0/ref/netstandard1.3/System.Security.Cryptography.Primitives.dll - system.security.cryptography.x509certificates/4.3.0/ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll - system.text.encoding.extensions/4.3.0/ref/netstandard1.3/System.Text.Encoding.Extensions.dll - system.text.encoding/4.3.0/ref/netstandard1.3/System.Text.Encoding.dll - system.text.regularexpressions/4.3.1/ref/netstandard1.6/System.Text.RegularExpressions.dll - system.threading.tasks/4.3.0/ref/netstandard1.3/System.Threading.Tasks.dll - system.threading.thread/4.3.0/ref/netstandard1.3/System.Threading.Thread.dll - system.threading.timer/4.3.0/ref/netstandard1.2/System.Threading.Timer.dll - system.threading/4.3.0/ref/netstandard1.3/System.Threading.dll - system.valuetuple/4.5.0/lib/netstandard1.0/System.ValueTuple.dll - system.xml.readerwriter/4.3.0/ref/netstandard1.3/System.Xml.ReaderWriter.dll - system.xml.xdocument/4.3.0/ref/netstandard1.3/System.Xml.XDocument.dll - system.xml.xmldocument/4.3.0/ref/netstandard1.3/System.Xml.XmlDocument.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/netstandard1.6/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig - ---- - -[project] -language=C# -lastDtbSucceeded - -[sliceDimensions] -TargetFramework=netstandard2.1 - -[properties] -AssemblyName=Yoti.Auth -CommandLineArgsForDesignTimeEvaluation=-langversion:latest -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=8.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETStandard -TargetPath=bin/Debug/netstandard2.1/Yoti.Auth.dll -TargetRefPath= -TemporaryDependencyNodeTargetIdentifier=netstandard2.1 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_1;NETSTANDARD1_0_OR_GREATER;NETSTANDARD1_1_OR_GREATER;NETSTANDARD1_2_OR_GREATER;NETSTANDARD1_3_OR_GREATER;NETSTANDARD1_4_OR_GREATER;NETSTANDARD1_5_OR_GREATER;NETSTANDARD1_6_OR_GREATER;NETSTANDARD2_0_OR_GREATER;NETSTANDARD2_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/netstandard2.1/Yoti.Auth.dll -/target:library -/warnaserror- -/utf8output -/deterministic+ -/langversion:latest -/warnaserror+:NU1605 - -[sourceFiles] -ActivityDetails.cs -ActivityDetailsParser.cs -Aml/ - AmlAddress.cs - AmlProfile.cs - AmlResult.cs - IAmlAddress.cs - IAmlProfile.cs - IAmlResult.cs - IRemoteAmlService.cs - RemoteAmlService.cs -Anchors/ - Anchor.cs - AnchorCertificateParser.cs - AnchorType.cs - AnchorVerifierSourceData.cs - ExtensionOidAttribute.cs - SignedTimestamp.cs -Attribute/ - AttributeConverter.cs - BaseAttribute.cs - MultiValueItem.cs - YotiAttribute.cs -Constants/ - Api.cs - ApplicationProfile.cs - DocScanConstants.cs - DocumentDetails.cs - Extension.cs - Format.cs - UserProfile.cs -Conversion.cs -CryptoEngine.cs -DataObjects/ - ProfileDO.cs - ReceiptDO.cs -DigitalIdentity/ - CreateQrResult.cs - DigitalIdentityService.cs - ErrorDetails.cs - ErrorReason.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - GetQrCodeResult.cs - GetReceipt.cs - GetSessionResult.cs - Policy/ - AdvancedIdentityProfile.cs - Constraint.cs - Notification.cs - NotificationBuilder.cs - Policy.cs - PolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - QrRequest.cs - QrRequestBuilder.cs - ReceiptItemKeyResponse.cs - RequirementNotMetDetails.cs - SharedReceiptResponse.cs - ShareSessionRequest.cs - ShareSessionRequestBuilder.cs - ShareSessionResult.cs -DigitalIdentityClient.cs -DigitalIdentityClientEngine.cs -DocScan/ - DocScanClient.cs - DocScanService.cs - Session/Create/ - AdvancedIdentityProfile.cs - ApplicantProfile.cs - ApplicantProfileBuilder.cs - AttemptsConfiguration.cs - Check/Advanced/ - RequestedCaMatchingStrategy.cs - RequestedCaSources.cs - RequestedExactMatchingStrategy.cs - RequestedFuzzyMatchingStrategy.cs - RequestedSearchProfileSources.cs - RequestedTypeListSources.cs - RequestedWatchlistAdvancedCaConfigCustomAccount.cs - RequestedWatchlistAdvancedCaConfigYotiAccount.cs - Check/ - BaseRequestedCheck.cs - IssuingAuthoritySubCheck.cs - IssuingAuthoritySubCheckBuilder.cs - RequestedCheck.cs - RequestedCheckConfig.cs - RequestedDocumentAuthenticityCheck.cs - RequestedDocumentAuthenticityCheckBuilder.cs - RequestedDocumentAuthenticityConfig.cs - RequestedFaceComparisonCheck.cs - RequestedFaceComparisonCheckBuilder.cs - RequestedFaceComparisonConfig.cs - RequestedFaceMatchCheck.cs - RequestedFaceMatchCheckBuilder.cs - RequestedFaceMatchConfig.cs - RequestedIdDocumentComparisonCheck.cs - RequestedIdDocumentComparisonCheckBuilder.cs - RequestedIdDocumentComparisonConfig.cs - RequestedLivenessCheck.cs - RequestedLivenessCheckBuilder.cs - RequestedLivenessConfig.cs - RequestedThirdPartyIdentityCheck.cs - RequestedThirdPartyIdentityCheckBuilder.cs - RequestedThirdPartyIdentityConfig.cs - RequestedWatchlistAdvancedCaCheck.cs - RequestedWatchlistAdvancedCaCheckBuilder.cs - RequestedWatchlistAdvancedCaCheckBuilder.CustomAccount.cs - RequestedWatchlistAdvancedCaCheckBuilder.YotiAccount.cs - RequestedWatchlistAdvancedCaConfig.cs - RequestedWatchlistScreeningCheck.cs - RequestedWatchlistScreeningCheckBuilder.cs - RequestedWatchlistScreeningConfig.cs - CreateSessionResult.cs - FaceCapture/ - CreateFaceCaptureResourcePayload.cs - CreateFaceCaptureResourcePayloadBuilder.cs - UploadFaceCaptureImagePayload.cs - UploadFaceCaptureImagePayloadBuilder.cs - Filter/ - CountryRestriction.cs - DocumentFilter.cs - DocumentRestriction.cs - DocumentRestrictionBuilder.cs - DocumentRestrictionsFilter.cs - DocumentRestrictionsFilterBuilder.cs - OrthogonalRestrictionsFilter.cs - OrthogonalRestrictionsFilterBuilder.cs - RequiredDocument.cs - RequiredIdDocument.cs - RequiredIdDocumentBuilder.cs - RequiredSupplementaryDocument.cs - RequiredSupplementaryDocumentBuilder.cs - TypeRestriction.cs - NotificationConfig.cs - NotificationConfigBuilder.cs - Objectives/ - Objective.cs - ProofOfAddressObjective.cs - ProofOfAddressObjectiveBuilder.cs - ResourceCreationContainer.cs - ResourceCreationContainerBuilder.cs - SdkConfig.cs - SdkConfigBuilder.cs - SessionSpecification.cs - SessionSpecificationBuilder.cs - StructuredPostalAddress.cs - StructuredPostalAddressBuilder.cs - Task/ - BaseRequestedTask.cs - RequestedSupplementaryDocTextExtractionTask.cs - RequestedSupplementaryDocTextExtractionTaskBuilder.cs - RequestedSupplementaryDocTextExtractionTaskConfig.cs - RequestedTask.cs - RequestedTaskConfig.cs - RequestedTextExtractionTask.cs - RequestedTextExtractionTaskBuilder.cs - RequestedTextExtractionTaskConfig.cs - Session/Retrieve/AdvancedIdentityProfile/ - AdvancedIdentityProfilePreviewResponse.cs - AdvancedIdentityProfileResponse.cs - FailureReasonResponse.cs - Session/Retrieve/ - BreakdownResponse.cs - Check/ - AuthenticityCheckResponse.cs - CheckResponse.cs - FaceMatchCheckResponse.cs - GeneratedProfileResponse.cs - IdDocumentComparisonCheckResponse.cs - LivenessCheckResponse.cs - ProfileCheckResponse.cs - ReportResponse.cs - SupplementaryDocTextDataCheckResponse.cs - TextDataCheckResponse.cs - ThirdPartyIdentityCheckResponse.cs - ThirdPartyIdentityFraudOneCheckResponse.cs - WatchlistAdvancedCaCheckResponse.cs - WatchlistScreeningCheckResponse.cs - WatchlistSummary/ - CaMatchingStrategyResponse.cs - CaSourcesResponse.cs - ExactMatchingStrategyResponse.cs - FuzzyMatchingStrategyResponse.cs - ISearchConfig.cs - RawResults.cs - ReportResponseWithSummary.cs - SearchProfileSourcesResponse.cs - TypeListSourcesResponse.cs - WatchlistAdvancedCaSearchConfigResponse.cs - WatchlistAdvancedCaSearchConfigResponseCustomAccount.cs - WatchlistAdvancedCaSearchConfigResponseYotiAccount.cs - WatchlistScreeningConfig.cs - WatchlistSummary.cs - WatchlistSummaryReportBaseCheckResponse.cs - Configuration/Capture/ - CaptureResponse.cs - Document/ - ObjectiveResponse.cs - RequiredDocumentResourceResponse.cs - RequiredIdDocumentResourceResponse.cs - RequiredSupplementaryDocumentResourceResponse.cs - SupportedCountryResponse.cs - SupportedDocumentResponse.cs - FaceCapture/RequiredFaceCaptureResourceResponse.cs - Liveness/ - RequiredLivenessResourceResponse.cs - RequiredZoomLivenessResourceResponse.cs - UnknownRequiredLivenessResourceResponse.cs - RequiredResourceResponse.cs - Source/ - EndUserAllowedSourceResponse.cs - IbvAllowedSourceResponse.cs - RelyingBusinessAllowedSourceResponse.cs - UnknownAllowedSourceResponse.cs - Task/ - RequestedIdDocTaskResponse.cs - RequestedSupplementaryDocTaskResponse.cs - RequestedTaskResponse.cs - UnknownRequestedTaskResponse.cs - UnknownRequiredResourceResponse.cs - Configuration/SessionConfigurationResponse.cs - CreateFaceCaptureResourceResponse.cs - DetailsResponse.cs - DocumentFieldsResponse.cs - DocumentIdPhotoResponse.cs - ExpandedDocumentFieldResponse.cs - FaceCaptureImageResponse.cs - FaceCaptureResourceResponse.cs - FaceMapResponse.cs - FileResponse.cs - FrameResponse.cs - GeneratedMedia.cs - GetSessionResult.cs - IdentityProfile/ - FailureReasonResponse.cs - IdentityProfilePreviewResponse.cs - IdentityProfileResponse.cs - RequirementNotMetDetails.cs - IResponseWithMediaProperty.cs - MediaResponse.cs - PageResponse.cs - RecommendationResponse.cs - Resource/ - AllowedSourceResponse.cs - ApplicantProfileResourceResponse.cs - IdDocumentResourceResponse.cs - LivenessResourceResponse.cs - ResourceContainer.cs - ResourceResponse.cs - ShareCodeResourceResponse.cs - SupplementaryDocResourceResponse.cs - ShareCodeMediaResponse.cs - StaticLivenessImageResponse.cs - StaticLivenessResourceResponse.cs - Task/ - GeneratedCheckResponse.cs - GeneratedSupplementaryDocTextDataCheckResponse.cs - GeneratedTextDataCheckResponse.cs - SupplementaryDocTextExtractionTaskResponse.cs - TaskResponse.cs - TextExtractionTaskResponse.cs - VerifyShareCodeTaskResponse.cs - ZoomLivenessResourceResponse.cs - Support/ - SupportedCountry.cs - SupportedDocument.cs - SupportedDocumentsResponse.cs -Document/ - DocumentDetails.cs - DocumentDetailsAttributeParser.cs - DocumentDetailsBuilder.cs -Exceptions/ - AmlException.cs - DigitalIdentityException.cs - DocScanException.cs - DynamicShareException.cs - ExtraDataException.cs - YotiException.cs - YotiProfileException.cs -GlobalSuppressions.cs -Images/ - Image.cs - JpegImage.cs - PngImage.cs -MediaValue.cs -obj/Debug/netstandard2.1/ - .NETStandard,Version=v2.1.AssemblyAttributes.cs - Yoti.Auth.AssemblyInfo.cs -Profile/ - ApplicationProfile.cs - BaseProfile.cs - IBaseProfile.cs - YotiProfile.cs -Properties/ - AssemblyInfo.cs - Resources.Designer.cs -ProtoBuf/Attribute/ - Attribute.cs - ContentType.cs - List.cs - Signing.cs -ProtoBuf/Common/ - EncryptedData.cs - SignedTimestamp.cs -ProtoBuf/Share/ - DataEntry.cs - ExtraData.cs - IssuingAttributes.cs - ThirdPartyAttribute.cs -Share/ - DataEntryConverter.cs - ExtraData.cs - ExtraDataConverter.cs - ThirdParty/ - AttributeDefinition.cs - AttributeIssuanceDetails.cs - IssuingAttributes.cs - ThirdPartyAttributeConverter.cs -ShareUrl/ - DynamicScenario.cs - DynamicScenarioBuilder.cs - DynamicSharingService.cs - Extensions/ - BaseExtension.cs - DeviceLocation.cs - Extension.cs - ExtensionBuilder.cs - LocationConstraintContent.cs - LocationConstraintExtensionBuilder.cs - ThirdPartyAttributeContent.cs - ThirdPartyAttributeExtensionBuilder.cs - TransactionalFlowExtensionBuilder.cs - Policy/ - Constraint.cs - DynamicPolicy.cs - DynamicPolicyBuilder.cs - PreferredSources.cs - SourceConstraint.cs - SourceConstraintBuilder.cs - WantedAnchor.cs - WantedAnchorBuilder.cs - WantedAttribute.cs - WantedAttributeBuilder.cs - ShareUrlResult.cs -Validation.cs -Verifications/ - AgeVerification.cs - AgeVerificationParser.cs -Web/ - HeadersFactory.cs - Request.cs - RequestBuilder.cs - Response.cs - SignedMessageFactory.cs - YotiHttpResponse.cs -YotiClient.cs -YotiClientEngine.cs - -[metadataReferences] -/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/ - Microsoft.Win32.Primitives.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Composition.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.Sockets.dll - System.Net.WebHeaderCollection.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Primitives.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.Principal.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.RegularExpressions.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.ValueTuple.dll - System.Web.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll -/ - google.protobuf/3.26.1/lib/netstandard2.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.csharp/4.7.0/ref/netstandard2.0/Microsoft.CSharp.dll - newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - system.runtime.compilerservices.unsafe/4.5.2/ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll - -[analyzerReferences] -/microsoft.codeanalysis.netanalyzers/7.0.3/analyzers/dotnet/cs/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -.editorconfig -obj/Debug/netstandard2.1/Yoti.Auth.GeneratedMSBuildEditorConfig.editorconfig diff --git a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache deleted file mode 100644 index 174ce943..00000000 --- a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj.lscache +++ /dev/null @@ -1,251 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -primary -lastDtbSucceeded - -[properties] -AssemblyName=Yoti.Auth.Tests.Common -CommandLineArgsForDesignTimeEvaluation=-langversion:12.0 -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=12.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth.Tests.Common -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/net8.0/Yoti.Auth.Tests.Common.dll -TargetRefPath=obj/Debug/net8.0/ref/Yoti.Auth.Tests.Common.dll -TemporaryDependencyNodeTargetIdentifier=net8.0 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:8 -/define:TRACE;DEBUG;NET;NET8_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:portable -/filealign:512 -/optimize- -/out:obj/Debug/net8.0/Yoti.Auth.Tests.Common.dll -/refout:obj/Debug/net8.0/refint/Yoti.Auth.Tests.Common.dll -/target:library -/warnaserror+ -/utf8output -/deterministic+ -/langversion:12.0 -/warnaserror+:SYSLIB0011 - -[sourceFiles] -Http.cs -KeyPair.cs -obj/Debug/net8.0/ - .NETCoreApp,Version=v8.0.AssemblyAttributes.cs - Yoti.Auth.Tests.Common.AssemblyInfo.cs - -[metadataReferences] -../../src/Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll -/packs/Microsoft.NETCore.App.Ref/8.0.20/ref/net8.0/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - Microsoft.Win32.Registry.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Formats.Asn1.dll - System.Formats.Tar.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.AccessControl.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.AccessControl.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.Http.Json.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Quic.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.JavaScript.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.AccessControl.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Cng.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.OpenSsl.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.Principal.Windows.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll -/ - castle.core/5.0.0/lib/net6.0/Castle.Core.dll - google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - moq/4.18.1/lib/net6.0/Moq.dll - newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - system.diagnostics.eventlog/6.0.0/lib/net6.0/System.Diagnostics.EventLog.dll - -[analyzerReferences] -/packs/Microsoft.NETCore.App.Ref/8.0.20/analyzers/dotnet/cs/ - Microsoft.Interop.ComInterfaceGenerator.dll - Microsoft.Interop.JavaScript.JSImportGenerator.dll - Microsoft.Interop.LibraryImportGenerator.dll - Microsoft.Interop.SourceGeneration.dll - System.Text.Json.SourceGeneration.dll - System.Text.RegularExpressions.Generator.dll -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_8_default.globalconfig -obj/Debug/net8.0/Yoti.Auth.Tests.Common.GeneratedMSBuildEditorConfig.editorconfig diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache deleted file mode 100644 index d5858c8d..00000000 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj.lscache +++ /dev/null @@ -1,390 +0,0 @@ -version=1 - -# This file caches language service data to improve the performance of C# Dev Kit. -# It is not intended for manual editing. It can safely be deleted and will be -# regenerated automatically. For more information, see https://aka.ms/lscache -# -# To control where cache files are stored, use the following VS Code setting: -# "dotnet.projectsystem.cacheInProjectFolder": true - -[project] -language=C# -primary -lastDtbSucceeded - -[properties] -AssemblyName=Yoti.Auth.Tests -CommandLineArgsForDesignTimeEvaluation=-langversion:12.0 -define:TRACE -CompilerGeneratedFilesOutputPath= -MaxSupportedLangVersion=12.0 -ProjectAssetsFile=obj/project.assets.json -RootNamespace=Yoti.Auth.Tests -RunAnalyzers= -RunAnalyzersDuringLiveAnalysis= -SolutionPath=*Undefined* -TargetFrameworkIdentifier=.NETCoreApp -TargetPath=bin/Debug/net8.0/Yoti.Auth.Tests.dll -TargetRefPath=obj/Debug/net8.0/ref/Yoti.Auth.Tests.dll -TemporaryDependencyNodeTargetIdentifier=net8.0 - -[commandLineArguments] -/noconfig -/unsafe- -/checked- -/nowarn:1701,1702,1701,1702 -/fullpaths -/nostdlib+ -/errorreport:prompt -/warn:8 -/define:TRACE;DEBUG;NET;NET8_0;NETCOREAPP;NET5_0_OR_GREATER;NET6_0_OR_GREATER;NET7_0_OR_GREATER;NET8_0_OR_GREATER;NETCOREAPP1_0_OR_GREATER;NETCOREAPP1_1_OR_GREATER;NETCOREAPP2_0_OR_GREATER;NETCOREAPP2_1_OR_GREATER;NETCOREAPP2_2_OR_GREATER;NETCOREAPP3_0_OR_GREATER;NETCOREAPP3_1_OR_GREATER -/highentropyva+ -/debug+ -/debug:Full -/filealign:512 -/optimize- -/out:obj/Debug/net8.0/Yoti.Auth.Tests.dll -/refout:obj/Debug/net8.0/refint/Yoti.Auth.Tests.dll -/target:exe -/warnaserror+ -/utf8output -/deterministic+ -/langversion:12.0 -/warnaserror+:SYSLIB0011 - -[sourceFiles] -/microsoft.net.test.sdk/17.2.0/build/netcoreapp2.1/Microsoft.NET.Test.Sdk.Program.cs - @folderNames=..,..,..,..,..,..,.nuget,packages,microsoft.net.test.sdk,17.2.0,build,netcoreapp2.1 -ActivityDetailsParserTests.cs -ActivityTests.cs -AmlProfileTests.cs -Anchors/ - AnchorTests.cs - SignedTimestampTests.cs -ApplicationProfileTests.cs -AttributeConverterTests.cs -CryptoEngineTests.cs -DigitalIdentity/ - DigitalIdentityServiceTests.cs - ErrorReasonTests.cs - Extensions/ - ExtensionBuilderTests.cs - LocationConstraintExtensionBuilderTests.cs - ThirdPartyAttributeExtensionBuilderTests.cs - TransactionalFlowExtensionBuilderTests.cs - Policy/ - DynamicPolicyBuilderTests.cs - WantedAttributeBuilderTests.cs - WantedAttributeMatcher.cs - QrRequestBuilderTests.cs - RequirementNotMetDetails.cs - ShareSessionRequestBuilderTests.cs -DigitalIdentityClientEngineTests.cs -DigitalIdentityClientTests.cs -DigitalIdentityExceptionTests.cs -DocScan/ - DocScanClientTests.cs - DocScanServiceTests.cs - Session/Create/ - ApplicantProfileBuilderTests.cs - Check/ - IssuingAuthoritySubCheckBuilderTests.cs - RequestedDocumentAuthenticityCheckBuilderTests.cs - RequestedFaceComparionCheckBuilderTests.cs - RequestedFaceMatchCheckBuilderTests.cs - RequestedIDDocumentComparisonCheckBuilderTests.cs - RequestedLivenessCheckBuilderTests.cs - RequestedThirdPartyIdentityCheckBuilderTests.cs - RequestedWatchlistAdvancedCaCheckBuilderTests.cs - RequestedWatchlistScreeningCheckBuilderTests.cs - FaceCapture/ - CreateFaceCaptureResourcePayloadBuilderTests.cs - UploadFaceCaptureImagePayloadBuilderTests.cs - Filter/ - DocumentRestrictionsBuilderTests.cs - DocumentRestrictionsFilterBuilderTests.cs - OrthogonalRestrictionsFilterBuilderTests.cs - RequiredSupplementaryDocumentBuilderTests.cs - NotificationConfigBuilderTests.cs - NotificationConfigTests.cs - ResourceCreationContainerBuilderTests.cs - SdkConfigBuilderTests.cs - SessionSpecificationBuilderTests.cs - StructuredPostalAddressBuilderTests.cs - Task/ - RequestedSupplementaryDocTextExtractionTaskBuilderTests.cs - RequestedTextExtractionTaskBuilderTests.cs - Session/Retrieve/ - Check/CheckResponseTests.cs - GetSessionResultTests.cs - IdentityProfile/FailureReasonResponseTest.cs - Resource/ - ApplicantProfileResourceResponseTests.cs - LivenessResourceResponseTests.cs - ShareCodeResourceResponseTests.cs - Task/ - IdDocumentResourceResponseTests.cs - SupplementaryDocResourceResponseTests.cs - TaskResponseTests.cs - VerifyShareCodeTaskResponseTests.cs -DocumentDetailsAttributeParserTests.cs -GlobalSuppressions.cs -obj/Debug/net8.0/ - .NETCoreApp,Version=v8.0.AssemblyAttributes.cs - Yoti.Auth.Tests.AssemblyInfo.cs -Share/ - DataEntryConverterTests.cs - ExtraDataConverterTests.cs - ExtraDataTests.cs - ThirdParty/ - AttributeIssuanceDetailsTests.cs - ThirdPartyAttributeConverterTests.cs -ShareUrl/ - DynamicScenarioBuilderTests.cs - DynamicSharingServiceTests.cs - Extensions/ - ExtensionBuilderTests.cs - LocationConstraintExtensionBuilderTests.cs - ThirdPartyAttributeExtensionBuilderTests.cs - TransactionalFlowExtensionBuilderTests.cs - Policy/ - DynamicPolicyBuilderTests.cs - WantedAttributeBuilderTests.cs - WantedAttributeMatcher.cs -TestData/ - IdentityProfiles.cs - TestActivityDetails.cs - TestAnchors.cs - TestAttributes.cs -TestTools/ - Aml.cs - Anchors.cs - Assert.cs - AssertExtensions.cs - Attributes.cs - CreateQr.cs - Exceptions.cs - ImageComparer.cs - Profile.cs - Protobuf.cs - ShareSession.cs - ShareUrl.cs -UserProfileTests.cs -ValidationTests.cs -Verifications/AgeVerificationTests.cs -Web/ - HeadersFactoryTests.cs - RequestBuilderTests.cs - SignedMessageFactoryTests.cs - YotiHttpResponseTests.cs -YotiAttributeTests.cs -YotiClientEngineTests.cs -YotiClientTests.cs -YotiProfileTests.cs - -[metadataReferences] -../ - ../src/Yoti.Auth/obj/Debug/net6.0/ref/Yoti.Auth.dll - Yoti.Auth.Tests.Common/obj/Debug/net8.0/ref/Yoti.Auth.Tests.Common.dll -/packs/Microsoft.NETCore.App.Ref/8.0.20/ref/net8.0/ - Microsoft.CSharp.dll - Microsoft.VisualBasic.Core.dll - Microsoft.VisualBasic.dll - Microsoft.Win32.Primitives.dll - Microsoft.Win32.Registry.dll - mscorlib.dll - netstandard.dll - System.AppContext.dll - System.Buffers.dll - System.Collections.Concurrent.dll - System.Collections.dll - System.Collections.Immutable.dll - System.Collections.NonGeneric.dll - System.Collections.Specialized.dll - System.ComponentModel.Annotations.dll - System.ComponentModel.DataAnnotations.dll - System.ComponentModel.dll - System.ComponentModel.EventBasedAsync.dll - System.ComponentModel.Primitives.dll - System.ComponentModel.TypeConverter.dll - System.Configuration.dll - System.Console.dll - System.Core.dll - System.Data.Common.dll - System.Data.DataSetExtensions.dll - System.Data.dll - System.Diagnostics.Contracts.dll - System.Diagnostics.Debug.dll - System.Diagnostics.DiagnosticSource.dll - System.Diagnostics.FileVersionInfo.dll - System.Diagnostics.Process.dll - System.Diagnostics.StackTrace.dll - System.Diagnostics.TextWriterTraceListener.dll - System.Diagnostics.Tools.dll - System.Diagnostics.TraceSource.dll - System.Diagnostics.Tracing.dll - System.dll - System.Drawing.dll - System.Drawing.Primitives.dll - System.Dynamic.Runtime.dll - System.Formats.Asn1.dll - System.Formats.Tar.dll - System.Globalization.Calendars.dll - System.Globalization.dll - System.Globalization.Extensions.dll - System.IO.Compression.Brotli.dll - System.IO.Compression.dll - System.IO.Compression.FileSystem.dll - System.IO.Compression.ZipFile.dll - System.IO.dll - System.IO.FileSystem.AccessControl.dll - System.IO.FileSystem.dll - System.IO.FileSystem.DriveInfo.dll - System.IO.FileSystem.Primitives.dll - System.IO.FileSystem.Watcher.dll - System.IO.IsolatedStorage.dll - System.IO.MemoryMappedFiles.dll - System.IO.Pipes.AccessControl.dll - System.IO.Pipes.dll - System.IO.UnmanagedMemoryStream.dll - System.Linq.dll - System.Linq.Expressions.dll - System.Linq.Parallel.dll - System.Linq.Queryable.dll - System.Memory.dll - System.Net.dll - System.Net.Http.dll - System.Net.Http.Json.dll - System.Net.HttpListener.dll - System.Net.Mail.dll - System.Net.NameResolution.dll - System.Net.NetworkInformation.dll - System.Net.Ping.dll - System.Net.Primitives.dll - System.Net.Quic.dll - System.Net.Requests.dll - System.Net.Security.dll - System.Net.ServicePoint.dll - System.Net.Sockets.dll - System.Net.WebClient.dll - System.Net.WebHeaderCollection.dll - System.Net.WebProxy.dll - System.Net.WebSockets.Client.dll - System.Net.WebSockets.dll - System.Numerics.dll - System.Numerics.Vectors.dll - System.ObjectModel.dll - System.Reflection.DispatchProxy.dll - System.Reflection.dll - System.Reflection.Emit.dll - System.Reflection.Emit.ILGeneration.dll - System.Reflection.Emit.Lightweight.dll - System.Reflection.Extensions.dll - System.Reflection.Metadata.dll - System.Reflection.Primitives.dll - System.Reflection.TypeExtensions.dll - System.Resources.Reader.dll - System.Resources.ResourceManager.dll - System.Resources.Writer.dll - System.Runtime.CompilerServices.Unsafe.dll - System.Runtime.CompilerServices.VisualC.dll - System.Runtime.dll - System.Runtime.Extensions.dll - System.Runtime.Handles.dll - System.Runtime.InteropServices.dll - System.Runtime.InteropServices.JavaScript.dll - System.Runtime.InteropServices.RuntimeInformation.dll - System.Runtime.Intrinsics.dll - System.Runtime.Loader.dll - System.Runtime.Numerics.dll - System.Runtime.Serialization.dll - System.Runtime.Serialization.Formatters.dll - System.Runtime.Serialization.Json.dll - System.Runtime.Serialization.Primitives.dll - System.Runtime.Serialization.Xml.dll - System.Security.AccessControl.dll - System.Security.Claims.dll - System.Security.Cryptography.Algorithms.dll - System.Security.Cryptography.Cng.dll - System.Security.Cryptography.Csp.dll - System.Security.Cryptography.dll - System.Security.Cryptography.Encoding.dll - System.Security.Cryptography.OpenSsl.dll - System.Security.Cryptography.Primitives.dll - System.Security.Cryptography.X509Certificates.dll - System.Security.dll - System.Security.Principal.dll - System.Security.Principal.Windows.dll - System.Security.SecureString.dll - System.ServiceModel.Web.dll - System.ServiceProcess.dll - System.Text.Encoding.CodePages.dll - System.Text.Encoding.dll - System.Text.Encoding.Extensions.dll - System.Text.Encodings.Web.dll - System.Text.Json.dll - System.Text.RegularExpressions.dll - System.Threading.Channels.dll - System.Threading.dll - System.Threading.Overlapped.dll - System.Threading.Tasks.Dataflow.dll - System.Threading.Tasks.dll - System.Threading.Tasks.Extensions.dll - System.Threading.Tasks.Parallel.dll - System.Threading.Thread.dll - System.Threading.ThreadPool.dll - System.Threading.Timer.dll - System.Transactions.dll - System.Transactions.Local.dll - System.ValueTuple.dll - System.Web.dll - System.Web.HttpUtility.dll - System.Windows.dll - System.Xml.dll - System.Xml.Linq.dll - System.Xml.ReaderWriter.dll - System.Xml.Serialization.dll - System.Xml.XDocument.dll - System.Xml.XmlDocument.dll - System.Xml.XmlSerializer.dll - System.Xml.XPath.dll - System.Xml.XPath.XDocument.dll - WindowsBase.dll -/ - castle.core/5.0.0/lib/net6.0/Castle.Core.dll - google.protobuf/3.26.1/lib/net5.0/Google.Protobuf.dll - jsonsubtypes/1.9.0/lib/netstandard2.0/JsonSubTypes.dll - microsoft.codecoverage/17.2.0/lib/netcoreapp1.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll - microsoft.testplatform.testhost/17.2.0/lib/netcoreapp2.1/ - Microsoft.TestPlatform.CommunicationUtilities.dll - Microsoft.TestPlatform.CoreUtilities.dll - Microsoft.TestPlatform.CrossPlatEngine.dll - Microsoft.TestPlatform.PlatformAbstractions.dll - Microsoft.TestPlatform.Utilities.dll - Microsoft.VisualStudio.TestPlatform.Common.dll - Microsoft.VisualStudio.TestPlatform.ObjectModel.dll - testhost.dll - moq/4.18.1/lib/net6.0/Moq.dll - mstest.testframework/2.2.10/ - build/net5.0/Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll - lib/net5.0/Microsoft.VisualStudio.TestPlatform.TestFramework.dll - newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll - nlog/5.0.1/lib/netstandard2.0/NLog.dll - nuget.frameworks/5.11.0/lib/netstandard2.0/NuGet.Frameworks.dll - portable.bouncycastle/1.8.5/lib/netstandard2.0/BouncyCastle.Crypto.dll - system.diagnostics.eventlog/6.0.0/lib/net6.0/System.Diagnostics.EventLog.dll - -[analyzerReferences] -/packs/Microsoft.NETCore.App.Ref/8.0.20/analyzers/dotnet/cs/ - Microsoft.Interop.ComInterfaceGenerator.dll - Microsoft.Interop.JavaScript.JSImportGenerator.dll - Microsoft.Interop.LibraryImportGenerator.dll - Microsoft.Interop.SourceGeneration.dll - System.Text.Json.SourceGeneration.dll - System.Text.RegularExpressions.Generator.dll -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/ - Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll - Microsoft.CodeAnalysis.NetAnalyzers.dll - -[analyzerConfigFiles] -/sdk/8.0.414/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_8_default.globalconfig -obj/Debug/net8.0/Yoti.Auth.Tests.GeneratedMSBuildEditorConfig.editorconfig From 3cef84334e05808643fd3172fcaae577286a95e0 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 26 May 2026 16:42:27 +0100 Subject: [PATCH 49/50] updated version number to 3.20 --- .../DigitalIdentity/Controllers/HomeController.cs | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs index 57a9bf36..678c2157 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs +++ b/src/Examples/DigitalIdentity/DigitalIdentity/Controllers/HomeController.cs @@ -74,18 +74,6 @@ public async Task DigitalIdentity() ViewBag.YotiClientSdkId = _clientSdkId; ViewBag.sessionID = SessionResult.Id; - var qr = await yotiClient.CreateQrCode(SessionResult.Id, new QrRequest()); - Console.WriteLine($"Id: {qr.Id}"); - Console.WriteLine($"Uri: {qr.Uri}"); - - - -var fetched = await yotiClient.GetQrCode(qr.Id); - - Console.WriteLine($"Id: {fetched.Id}"); - Console.WriteLine($"Session Id: {fetched.Session?.Id}"); - - return View("DigitalIdentity", sharedReceiptResponse); } catch (Exception e) From 579720222f946b38650ab0898cd5487bbc63bb4c Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 23 Jun 2026 08:36:37 +0100 Subject: [PATCH 50/50] feat(SDK-2808): .NET - SDK Security Dependency Upgrade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade Portable.BouncyCastle 1.8.5 → 1.9.0 (conditional: 1.8.5 kept for netstandard1.6 which dropped support in 1.9.0) - Upgrade Google.Protobuf 3.26.1 → 3.35.1 (memory safety fixes) - Upgrade Newtonsoft.Json 13.0.3 → 13.0.4 (security patch) - Upgrade NLog 5.0.1 → 5.5.1 - Upgrade Microsoft.CodeAnalysis.NetAnalyzers 7.0.3 → 9.0.0 - Pin System.Text.Encodings.Web ≥ 4.7.2 and System.Text.RegularExpressions ≥ 4.3.1 in example projects to fix CVE GHSA-ghhp-997w-qr28 (Critical) and GHSA-cmhx-cq75-c4mj (High) - Upgrade MSTest.TestAdapter/TestFramework 2.2.10 → 3.11.1, Microsoft.NET.Test.Sdk 17.2.0 → 17.14.1, Moq 4.18.1 → 4.20.72, coverlet.msbuild 6.0.2 → 6.0.4 - Migrate 39 test files from MSTest 2.x API to 3.x (ThrowsException → ThrowsExactly, ThrowsExceptionAsync → ThrowsExactlyAsync, DataTestMethod → TestMethod) - Fix sdkId validation in DigitalIdentityService: Validation.NotNull → Validation.NotNullOrEmpty to reject empty strings - Fix 3 fire-and-forget ThrowsExactlyAsync calls (DocScanClientTests, YotiClientEngineTests) — tests now properly await the assertion - Add MaxDepth = 32 to SetupDocScanClient JsonSerializerSettings to prevent OOM on complex objects - Clarify misleading CVE comment in DigitalIdentityExample.csproj (Encodings.Web pin is a no-op on net6.0 Web SDK; framework already provides safe version) --- src/Examples/Aml/AmlExample/AmlExample.csproj | 5 +- .../DigitalIdentityExample.csproj | 4 + .../DocScanExample/DocScanExample.csproj | 3 + .../Profile/CoreExample/CoreExample.csproj | 3 + .../DigitalIdentity/DigitalIdentityService.cs | 10 +- src/Yoti.Auth/Yoti.Auth.csproj | 12 +- .../Yoti.Auth.Tests.Common.csproj | 2 +- .../ActivityDetailsParserTests.cs | 4 +- .../ApplicationProfileTests.cs | 4 +- .../AttributeConverterTests.cs | 10 +- test/Yoti.Auth.Tests/CryptoEngineTests.cs | 12 +- .../DigitalIdentityServiceTests.cs | 45 +- ...LocationConstraintExtensionBuilderTests.cs | 14 +- ...hirdPartyAttributeExtensionBuilderTests.cs | 9 +- .../TransactionalFlowExtensionBuilderTests.cs | 36 +- .../DigitalIdentityClientEngineTests.cs | 24 +- .../DigitalIdentityClientTests.cs | 15 +- .../DocScan/DocScanClientTests.cs | 82 +- .../DocScan/DocScanServiceTests.cs | 74 +- .../IssuingAuthoritySubCheckBuilderTests.cs | 2 +- ...RequestedFaceComparionCheckBuilderTests.cs | 2 +- .../RequestedFaceMatchCheckBuilderTests.cs | 2 +- .../RequestedLivenessCheckBuilderTests.cs | 2 +- ...stedWatchlistScreeningCheckBuilderTests.cs | 6 +- ...RequestedTextExtractionTaskBuilderTests.cs | 2 +- .../Retrieve/Check/CheckResponseTests.cs | 4 +- .../Resource/LivenessResourceResponseTests.cs | 2 +- .../Retrieve/Task/TaskResponseTests.cs | 2 +- .../Task/VerifyShareCodeTaskResponseTests.cs | 2 +- .../DocumentDetailsAttributeParserTests.cs | 16 +- .../Share/DataEntryConverterTests.cs | 4 +- .../ThirdPartyAttributeConverterTests.cs | 6 +- .../ShareUrl/DynamicSharingServiceTests.cs | 10 +- ...LocationConstraintExtensionBuilderTests.cs | 14 +- ...hirdPartyAttributeExtensionBuilderTests.cs | 9 +- .../TransactionalFlowExtensionBuilderTests.cs | 2 +- test/Yoti.Auth.Tests/ValidationTests.cs | 2 +- .../Verifications/AgeVerificationTests.cs | 6 +- .../Web/RequestBuilderTests.cs | 12 +- .../Web/SignedMessageFactoryTests.cs | 2 +- test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj | 10 +- test/Yoti.Auth.Tests/YotiClientEngineTests.cs | 24 +- test/Yoti.Auth.Tests/YotiClientTests.cs | 22 +- test/Yoti.Auth.Tests/coverage.opencover.xml | 24794 +++++++++------- 44 files changed, 14129 insertions(+), 11198 deletions(-) diff --git a/src/Examples/Aml/AmlExample/AmlExample.csproj b/src/Examples/Aml/AmlExample/AmlExample.csproj index ab68935f..2a446f2e 100644 --- a/src/Examples/Aml/AmlExample/AmlExample.csproj +++ b/src/Examples/Aml/AmlExample/AmlExample.csproj @@ -12,7 +12,10 @@ - + + + + diff --git a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj index b24d78cf..cb6c0683 100644 --- a/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj +++ b/src/Examples/DigitalIdentity/DigitalIdentity/DigitalIdentityExample.csproj @@ -25,6 +25,10 @@ + + + + diff --git a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj index 72d7b973..60351a1b 100644 --- a/src/Examples/DocScan/DocScanExample/DocScanExample.csproj +++ b/src/Examples/DocScan/DocScanExample/DocScanExample.csproj @@ -7,6 +7,9 @@ + + + diff --git a/src/Examples/Profile/CoreExample/CoreExample.csproj b/src/Examples/Profile/CoreExample/CoreExample.csproj index e6566123..b50bcbd0 100644 --- a/src/Examples/Profile/CoreExample/CoreExample.csproj +++ b/src/Examples/Profile/CoreExample/CoreExample.csproj @@ -22,6 +22,9 @@ + + + diff --git a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs index 464f9b14..56537081 100644 --- a/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs +++ b/src/Yoti.Auth/DigitalIdentity/DigitalIdentityService.cs @@ -28,7 +28,7 @@ internal static async Task CreateShareSession(HttpClient htt { Validation.NotNull(httpClient, nameof(httpClient)); Validation.NotNull(apiUrl, nameof(apiUrl)); - Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNullOrEmpty(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); Validation.NotNull(shareSessionRequestPayload, nameof(shareSessionRequestPayload)); @@ -68,9 +68,9 @@ internal static async Task GetSession(HttpClient httpClient, U { Validation.NotNull(httpClient, nameof(httpClient)); Validation.NotNull(apiUrl, nameof(apiUrl)); - Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNullOrEmpty(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); - Validation.NotNull(sessionId, nameof(sessionId)); + Validation.NotNull(sessionId, nameof(sessionId)); Request getSessionRequest = new RequestBuilder() @@ -100,7 +100,7 @@ internal static async Task CreateQrCode(HttpClient httpClient, U { Validation.NotNull(httpClient, nameof(httpClient)); Validation.NotNull(apiUrl, nameof(apiUrl)); - Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNullOrEmpty(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); Validation.NotNull(sessionId, nameof(sessionId)); @@ -141,7 +141,7 @@ internal static async Task GetQrCode(HttpClient httpClient, Uri { Validation.NotNull(httpClient, nameof(httpClient)); Validation.NotNull(apiUrl, nameof(apiUrl)); - Validation.NotNull(sdkId, nameof(sdkId)); + Validation.NotNullOrEmpty(sdkId, nameof(sdkId)); Validation.NotNull(keyPair, nameof(keyPair)); Validation.NotNull(qrCodeId, nameof(qrCodeId)); diff --git a/src/Yoti.Auth/Yoti.Auth.csproj b/src/Yoti.Auth/Yoti.Auth.csproj index ad0b1499..b186fb05 100644 --- a/src/Yoti.Auth/Yoti.Auth.csproj +++ b/src/Yoti.Auth/Yoti.Auth.csproj @@ -37,16 +37,18 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + + + diff --git a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj index 9ab9962b..e60a238c 100644 --- a/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj +++ b/test/Yoti.Auth.Tests.Common/Yoti.Auth.Tests.Common.csproj @@ -33,6 +33,6 @@ - + diff --git a/test/Yoti.Auth.Tests/ActivityDetailsParserTests.cs b/test/Yoti.Auth.Tests/ActivityDetailsParserTests.cs index 2d1cbcbf..6bc586ae 100644 --- a/test/Yoti.Auth.Tests/ActivityDetailsParserTests.cs +++ b/test/Yoti.Auth.Tests/ActivityDetailsParserTests.cs @@ -16,7 +16,7 @@ public void UnsuccessfulResponseShouldThrowYotiProfileException() Success = false }; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { ActivityDetailsParser.HandleResponse(KeyPair.Get(), response.Content); }); @@ -31,7 +31,7 @@ public void NullOrEmptyContentShouldThrowProfileException() Content = "" }; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { ActivityDetailsParser.HandleResponse(KeyPair.Get(), response.Content); }); diff --git a/test/Yoti.Auth.Tests/ApplicationProfileTests.cs b/test/Yoti.Auth.Tests/ApplicationProfileTests.cs index 70269301..5956a1bf 100644 --- a/test/Yoti.Auth.Tests/ApplicationProfileTests.cs +++ b/test/Yoti.Auth.Tests/ApplicationProfileTests.cs @@ -117,7 +117,7 @@ public void WrongAttributeTypeShouldThrowException() ApplicationProfile applicationProfile = TestTools.Profile.CreateApplicationProfileWithSingleAttribute(initialAttribute); - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { applicationProfile.GetAttributeByName(Constants.ApplicationProfile.ApplicationNameAttribute); }); @@ -133,7 +133,7 @@ public void WrongAttributeTypeForGetAttributesShouldThrowException() ApplicationProfile applicationProfile = TestTools.Profile.CreateApplicationProfileWithSingleAttribute(initialAttribute); - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { applicationProfile.GetAttributesByName(Constants.ApplicationProfile.ApplicationNameAttribute); }); diff --git a/test/Yoti.Auth.Tests/AttributeConverterTests.cs b/test/Yoti.Auth.Tests/AttributeConverterTests.cs index de75aaf4..4b510353 100644 --- a/test/Yoti.Auth.Tests/AttributeConverterTests.cs +++ b/test/Yoti.Auth.Tests/AttributeConverterTests.cs @@ -91,7 +91,7 @@ public void ShouldAddMultipleSameNamedAttributes() Assert.AreEqual(_id2, attributes[1].GetId()); } - [DataTestMethod] + [TestMethod] [DataRow(ContentType.Date)] [DataRow(ContentType.Jpeg)] [DataRow(ContentType.Json)] @@ -110,7 +110,7 @@ public void OtherAttributesWithEmptyValueShouldNotBeAdded(ContentType contentTyp Assert.AreEqual(0, convertedAttributes.Count); } - [DataTestMethod] + [TestMethod] [DataRow(ContentType.Date)] [DataRow(ContentType.Jpeg)] [DataRow(ContentType.Json)] @@ -122,7 +122,7 @@ public void OtherAttributesWithEmptyValueShouldThrowException(ContentType conten { ProtoBuf.Attribute.Attribute attribute = CreateProtobufAttribute("attributeName", _emptyByteStringValue, contentType); - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { AttributeConverter.ConvertToBaseAttribute(attribute); }); @@ -224,7 +224,7 @@ public void ShouldParseNonDocumentImageMultiValue() Assert.AreEqual(stringValue, attributeValue.Value); } - [DataTestMethod] + [TestMethod] [DataRow("-10", -10)] [DataRow("-1", -1)] [DataRow("0", 0)] @@ -247,7 +247,7 @@ public void ShouldParseIntAttribute(string stringValue, int expectedIntegerValue Assert.AreEqual(expectedIntegerValue, attribute.GetValue()); } - [DataTestMethod] + [TestMethod] [DataRow("2147483648")] [DataRow("abcd")] [DataRow("1a")] diff --git a/test/Yoti.Auth.Tests/CryptoEngineTests.cs b/test/Yoti.Auth.Tests/CryptoEngineTests.cs index 134cdc95..8fa7dbb9 100644 --- a/test/Yoti.Auth.Tests/CryptoEngineTests.cs +++ b/test/Yoti.Auth.Tests/CryptoEngineTests.cs @@ -11,7 +11,7 @@ public class CryptoEngineTests [TestMethod] public void NonBase64TokenThrowsError() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { CryptoEngine.DecryptToken("_aasi", KeyPair.Get()); }); @@ -22,7 +22,7 @@ public void NonBase64TokenThrowsError() [TestMethod] public void EmptyOneTimeUseTokenThrowsError() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { CryptoEngine.DecryptToken("", KeyPair.Get()); }); @@ -37,7 +37,7 @@ public void DecryptAesGcm_EmptySecretsThrowsError() byte[] secret = new byte[16]; byte[] cipherText = new byte[32]; - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { CryptoEngine.DecryptAesGcm(cipherText, iv, secret); }); @@ -53,7 +53,7 @@ public void UnwrapReceiptKey_EmptySecretsThrowsError() byte[] itemKeyIv = new byte[12]; AsymmetricCipherKeyPair key = null; - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { byte[] unwrappedKey = CryptoEngine.UnwrapReceiptKey(wrappedReceiptKey, encryptedItemKey, itemKeyIv, key); }); @@ -67,7 +67,7 @@ public void DecryptContent_EmptySecretsThrowsError() byte[] content = new byte[] { 0x01, 0x02, 0x03 }; // Example content byte[] receiptContentKey = new byte[16]; // Example receipt content key - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { byte[] decryptedContent = CryptoEngine.DecryptReceiptContent(content, receiptContentKey); @@ -82,7 +82,7 @@ public void DecryptReceiptContent_NullContentThrowsError() byte[] content = null; // Example content byte[] receiptContentKey = new byte[] { 0x01, 0x02, 0x03 }; // Example receipt content key - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { byte[] unwrappedKey = CryptoEngine.DecryptReceiptContent(content, receiptContentKey); }); diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs index 0e43838f..1f8ce6c1 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/DigitalIdentityServiceTests.cs @@ -33,7 +33,7 @@ public void Startup() [TestMethod] public void ShouldFailWithNullHttpClient() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateShareSession(null, _apiURL, _sdkID, _keyPair, _someShareSessionRequest).Wait(); }); @@ -45,7 +45,7 @@ public void ShouldFailWithNullHttpClient() [TestMethod] public void ShouldFailWithNullApiUrl() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateShareSession(_httpClient, null, _sdkID, _keyPair, _someShareSessionRequest).Wait(); }); @@ -57,19 +57,19 @@ public void ShouldFailWithNullApiUrl() [TestMethod] public void ShouldFailWithNullSdkId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateShareSession(_httpClient, _apiURL, null, _keyPair, _someShareSessionRequest).Wait(); }); - Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); Assert.IsTrue(aggregateException.InnerException.Message.Contains("sdkId")); } [TestMethod] public void ShouldFailWithNullKeyPair() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateShareSession(_httpClient, _apiURL, _sdkID, null, _someShareSessionRequest).Wait(); }); @@ -81,7 +81,7 @@ public void ShouldFailWithNullKeyPair() [TestMethod] public void ShouldFailWithNullDynamicScenario() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateShareSession(_httpClient, _apiURL, _sdkID, _keyPair, null).Wait(); }); @@ -93,18 +93,18 @@ public void ShouldFailWithNullDynamicScenario() [TestMethod] public void RetrieveSessionShouldThrowExceptionForMissingSdkId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await DigitalIdentityService.GetSession(_httpClient, _apiURL, null, _keyPair, _sessionID); - }); + }).Result; - Assert.IsTrue(exception.Exception.InnerException.Message.Contains("sdkId")); + Assert.IsTrue(exception.Message.Contains("sdkId")); } [TestMethod] public void RetrieveSessionShouldThrowExceptionForMissingKeyPair() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await DigitalIdentityService.GetSession(_httpClient, _apiURL, _sdkID, null, _sessionID); }).Result; @@ -115,7 +115,7 @@ public void RetrieveSessionShouldThrowExceptionForMissingKeyPair() [TestMethod] public void RetrieveSessionShouldThrowExceptionForMissingSessionId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await DigitalIdentityService.GetSession(_httpClient, _apiURL, _sdkID, _keyPair, null); }).Result; @@ -126,7 +126,7 @@ public void RetrieveSessionShouldThrowExceptionForMissingSessionId() [TestMethod] public void CreateQrCodeShouldFailWithNullHttpClient() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateQrCode(null, _apiURL, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); }); @@ -138,7 +138,7 @@ public void CreateQrCodeShouldFailWithNullHttpClient() [TestMethod] public void CreateQrCodeShouldFailWithNullApiUrl() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateQrCode(_httpClient, null, _sdkID, _keyPair, _sessionID, _someCreateQrRequest).Wait(); }); @@ -150,19 +150,19 @@ public void CreateQrCodeShouldFailWithNullApiUrl() [TestMethod] public void CreateQrCodeShouldFailWithNullSdkId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID, _someCreateQrRequest).Wait(); }); - Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); + Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); Assert.IsTrue(aggregateException.InnerException.Message.Contains("sdkId")); } [TestMethod] public void CreateQrCodeShouldFailWithNullKeyPair() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DigitalIdentityService.CreateQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID, _someCreateQrRequest).Wait(); }); @@ -174,18 +174,18 @@ public void CreateQrCodeShouldFailWithNullKeyPair() [TestMethod] public void RetrieveQrShouldThrowExceptionForMissingSdkId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await DigitalIdentityService.GetQrCode(_httpClient, _apiURL, null, _keyPair, _sessionID); - }); + }).Result; - Assert.IsTrue(exception.Exception.InnerException.Message.Contains("sdkId")); + Assert.IsTrue(exception.Message.Contains("sdkId")); } [TestMethod] public void RetrieveQrCodeShouldThrowExceptionForMissingKeyPair() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await DigitalIdentityService.GetQrCode(_httpClient, _apiURL, _sdkID, null, _sessionID); }).Result; @@ -196,13 +196,12 @@ public void RetrieveQrCodeShouldThrowExceptionForMissingKeyPair() [TestMethod] public void RetrieveQrCodeShouldThrowExceptionForMissingSessionId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await DigitalIdentityService.GetQrCode(_httpClient, _apiURL, _sdkID, _keyPair, null); }).Result; Assert.IsTrue(exception.Message.Contains("qrCodeId")); } - } -} \ No newline at end of file +} diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs index eec03f9d..d671ba9e 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/LocationConstraintExtensionBuilderTests.cs @@ -13,13 +13,12 @@ public class LocationConstraintExtensionBuilderTests private const double _someRadius = 3d; private const double _someUncertainty = 4d; - [DataTestMethod] + [TestMethod] [DataRow(-91)] [DataRow(91)] - [TestMethod] public void ShouldFailForLatitudesOutsideOfRange(double latitude) { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithLatitude(latitude) @@ -27,13 +26,12 @@ public void ShouldFailForLatitudesOutsideOfRange(double latitude) }); } - [DataTestMethod] + [TestMethod] [DataRow(-181)] [DataRow(181)] - [TestMethod] public void ShouldFailForLongitudesOutsideOfRange(double longitude) { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithLongitude(longitude) @@ -44,7 +42,7 @@ public void ShouldFailForLongitudesOutsideOfRange(double longitude) [TestMethod] public void ShouldFailForRadiusLessThanZero() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithRadius(-1) @@ -55,7 +53,7 @@ public void ShouldFailForRadiusLessThanZero() [TestMethod] public void ShouldFailForUncertaintyLessThanZero() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithMaxUncertainty(-1) diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs index c610e9b1..496ef9d1 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs @@ -16,7 +16,7 @@ public class ThirdPartyAttributeExtensionBuilderTests [TestMethod] public void ShouldFailForNullDefinition() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new ThirdPartyAttributeExtensionBuilder() .WithDefinition(null) @@ -26,12 +26,12 @@ public void ShouldFailForNullDefinition() Assert.IsTrue(exception.Message.Contains("definition")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] public void ShouldFailForInvalidDefinitions(string definition) { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new ThirdPartyAttributeExtensionBuilder() .WithDefinition(definition) @@ -60,7 +60,7 @@ public void ShouldBuildThirdPartyAttributeExtensionWithGivenValues() Assert.AreEqual(_someDefinition, definitions[0].Name); } - [DataTestMethod] + [TestMethod] [DataRow("2006-01-02T22:04:05Z", "2006-01-02T22:04:05.000Z")] [DataRow("2006-01-02T22:04:05.1Z", "2006-01-02T22:04:05.100Z")] [DataRow("2006-01-02T22:04:05.12Z", "2006-01-02T22:04:05.120Z")] @@ -70,7 +70,6 @@ public void ShouldBuildThirdPartyAttributeExtensionWithGivenValues() [DataRow("2006-01-02T22:04:05.123456Z", "2006-01-02T22:04:05.123Z")] [DataRow("2002-10-02T10:00:00.1-05:00", "2002-10-02T15:00:00.100Z")] [DataRow("2002-10-02T10:00:00.12345+11:00", "2002-10-01T23:00:00.123Z")] - [TestMethod] public void ShouldBuildThirdPartyAttributeExtensionWithExpiryDates(string expiryDateInputString, string expectedExpiryDate) { bool parseSuccess = DateTime.TryParse( diff --git a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs index 878a818a..be51e543 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentity/Extensions/TransactionalFlowExtensionBuilderTests.cs @@ -1,6 +1,7 @@ using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using Yoti.Auth.ShareUrl.Extensions; +using DigitalIdentityExtensions = Yoti.Auth.DigitalIdentity.Extensions; namespace Yoti.Auth.Tests.DigitalIdentity.Extensions { @@ -13,7 +14,7 @@ public class TransactionalFlowExtensionBuilderTests [TestMethod] public void ShouldFailForNullContent() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new TransactionalFlowExtensionBuilder() .WithContent(null) @@ -40,5 +41,38 @@ public void ShouldBuildWithDateTimeContent() Assert.AreEqual(_dateTimeContent, extension.Content); } + + [TestMethod] + public void DigitalIdentityTransactionalFlowShouldFailForNullContent() + { + Assert.ThrowsExactly(() => + { + new DigitalIdentityExtensions.TransactionalFlowExtensionBuilder() + .WithContent(null) + .Build(); + }); + } + + [TestMethod] + public void DigitalIdentityTransactionalFlowShouldBuildWithContent() + { + var content = new object(); + var extension = new DigitalIdentityExtensions.TransactionalFlowExtensionBuilder() + .WithContent(content) + .Build(); + + Assert.AreEqual(content, extension.Content); + } + + [TestMethod] + public void DigitalIdentityTransactionalFlowShouldBuildWithStringContent() + { + string content = "test-content"; + var extension = new DigitalIdentityExtensions.TransactionalFlowExtensionBuilder() + .WithContent(content) + .Build(); + + Assert.AreEqual(content, extension.Content); + } } } \ No newline at end of file diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs index 0b9179d5..8cadba57 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientEngineTests.cs @@ -69,7 +69,7 @@ public async Task CreateQrCodeAsyncShouldThrowArgumentNullExceptionWhenSessionId "{\"id\":\"test-qr-code-id\",\"uri\":\"https://code.yoti.com/test\"}"); var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); QrRequest qrRequest = TestTools.CreateQr.CreateQrStandard(); - ArgumentNullException exception = await Assert.ThrowsExceptionAsync( + ArgumentNullException exception = await Assert.ThrowsExactlyAsync( () => engine.CreateQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), null, qrRequest)); Assert.AreEqual("sessionId", exception.ParamName); } @@ -117,7 +117,7 @@ public async Task GetSessionShouldReturnCorrectValues() Assert.AreEqual(expiry, result.Expiry); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -134,7 +134,7 @@ public void CreateShareSessionNonSuccessStatusCodesShouldThrowException(HttpStat ShareSessionRequest shareSessionRequest = TestTools.ShareSession.CreateStandardShareSessionRequest(); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { engine.CreateShareSessionAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), shareSessionRequest).Wait(); }); @@ -142,7 +142,7 @@ public void CreateShareSessionNonSuccessStatusCodesShouldThrowException(HttpStat Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -159,7 +159,7 @@ public void GetShareReceiptNonSuccessStatusCodesShouldThrowException(HttpStatusC Uri apiUrl = new Uri("https://example.com/api"); string receiptId = "some_receiptid"; - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { engine.GetShareReceipt(SdkId, _keyPair, apiUrl, receiptId).Wait(); }); @@ -167,7 +167,7 @@ public void GetShareReceiptNonSuccessStatusCodesShouldThrowException(HttpStatusC Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -184,7 +184,7 @@ public void CreateQrCodeAsyncNonSuccessStatusCodesShouldThrowException(HttpStatu QrRequest qrRequest = TestTools.CreateQr.CreateQrStandard(); string sessionId = "test-session-id"; - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { engine.CreateQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId, qrRequest).Wait(); }); @@ -192,7 +192,7 @@ public void CreateQrCodeAsyncNonSuccessStatusCodesShouldThrowException(HttpStatu Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -208,7 +208,7 @@ public void GetQrCodeAsyncNonSuccessStatusCodesShouldThrowException(HttpStatusCo var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); string qrCodeId = "test-qr-code-id"; - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { engine.GetQrCodeAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), qrCodeId).Wait(); }); @@ -216,7 +216,7 @@ public void GetQrCodeAsyncNonSuccessStatusCodesShouldThrowException(HttpStatusCo Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -232,7 +232,7 @@ public void GetSessionNonSuccessStatusCodesShouldThrowException(HttpStatusCode h var engine = new DigitalIdentityClientEngine(new HttpClient(handlerMock.Object)); string sessionId = "test-session-id"; - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { engine.GetSession(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiShareApiUrl), sessionId).Wait(); }); @@ -278,7 +278,7 @@ public async Task GetShareReceiptShouldThrowWhenReceiptIdIsEmpty() var engine = new DigitalIdentityClientEngine(httpClient); Uri apiUrl = new Uri("https://example.com/api"); - await Assert.ThrowsExceptionAsync(() => + await Assert.ThrowsExactlyAsync(() => engine.GetShareReceipt(SdkId, _keyPair, apiUrl, "")); } diff --git a/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs b/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs index 805165de..f3a556cc 100644 --- a/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs +++ b/test/Yoti.Auth.Tests/DigitalIdentityClientTests.cs @@ -24,7 +24,7 @@ public void NullSdkIdShouldThrowException() { StreamReader keystream = KeyPair.GetValidKeyStream(); string sdkId = null; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new DigitalIdentityClient(sdkId, keystream); }); @@ -35,7 +35,7 @@ public void EmptySdkIdShouldThrowException() { StreamReader keystream = KeyPair.GetValidKeyStream(); string sdkId = string.Empty; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new DigitalIdentityClient(sdkId, keystream); }); @@ -45,7 +45,7 @@ public void EmptySdkIdShouldThrowException() public void NoKeyStreamShouldThrowException() { StreamReader keystream = null; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new DigitalIdentityClient(_someSdkId, keystream); }); @@ -55,7 +55,7 @@ public void NoKeyStreamShouldThrowException() public void InvalidKeyStreamShouldThrowException() { StreamReader keystream = KeyPair.GetInvalidFormatKeyStream(); - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new DigitalIdentityClient(_someSdkId, keystream); }); @@ -66,7 +66,7 @@ public void NullDynamicScenarioShouldThrowException() { DigitalIdentityClient client = CreateDigitalIdentityClient(); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.CreateShareSession(null); }); @@ -78,7 +78,7 @@ public void NullDynamicScenarioShouldThrowException() public void EmptyReceiptShouldThrowException() { DigitalIdentityClient client = CreateDigitalIdentityClient(); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.GetShareReceipt(""); }); @@ -87,7 +87,7 @@ public void EmptyReceiptShouldThrowException() Assert.IsTrue(!status); } - [DataTestMethod] + [TestMethod] [DataRow("")] [DataRow(null)] public void ApiUriDefaultIsUsedForNullOrEmpty(string envVar) @@ -118,6 +118,7 @@ public void ApiUriEnvVariableIsUsed() Uri expectedApiUri = new Uri("https://envapiuri.com"); Assert.AreEqual(expectedApiUri, client.ApiUri); } + private static DigitalIdentityClient CreateDigitalIdentityClient() { StreamReader privateStreamKey = KeyPair.GetValidKeyStream(); diff --git a/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs b/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs index 243aec81..9a082c4c 100644 --- a/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/DocScanClientTests.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Net; using System.Net.Http; +using System.Threading.Tasks; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -56,7 +57,7 @@ public void Startup() [TestMethod] public void ShouldFailForNullSdkId() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new DocScanClient(null, _keyPair); }); @@ -67,7 +68,7 @@ public void ShouldFailForNullSdkId() [TestMethod] public void ShouldFailForNullKeyPair() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new DocScanClient(_sdkId, keyPair: null); }); @@ -78,7 +79,7 @@ public void ShouldFailForNullKeyPair() [TestMethod] public void ShouldFailForInvalidKeyPair() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new DocScanClient(_sdkId, KeyPair.GetInvalidFormatKeyStream()); }); @@ -126,7 +127,7 @@ public void CreateSessionShouldSucceed() Assert.AreEqual(sessionId, result.SessionId); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -137,7 +138,7 @@ public void CreateSessionShouldThrowForNonSuccessStatusCode(HttpStatusCode httpS { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { CreateSessionResult result = docScanClient.CreateSession( new SessionSpecificationBuilder().Build()); @@ -146,7 +147,7 @@ public void CreateSessionShouldThrowForNonSuccessStatusCode(HttpStatusCode httpS Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -157,7 +158,7 @@ public void DeleteMediaContentShouldThrowForNonSuccessStatusCode(HttpStatusCode { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.DeleteMediaContent("someSessionId", "someMediaId"); }); @@ -165,24 +166,24 @@ public void DeleteMediaContentShouldThrowForNonSuccessStatusCode(HttpStatusCode Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] [DataRow(HttpStatusCode.RequestTimeout)] [DataRow(HttpStatusCode.NotFound)] [DataRow(HttpStatusCode.Forbidden)] - public void DeleteMediaContentAsyncShouldThrowForNonSuccessStatusCode(HttpStatusCode httpStatusCode) + public async Task DeleteMediaContentAsyncShouldThrowForNonSuccessStatusCode(HttpStatusCode httpStatusCode) { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - Assert.ThrowsExceptionAsync(async () => + await Assert.ThrowsExactlyAsync(async () => { await docScanClient.DeleteMediaContentAsync("someSessionId", "someMediaId"); }); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -193,7 +194,7 @@ public void DeleteSessionShouldThrowForNonSuccessStatusCode(HttpStatusCode httpS { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.DeleteSession("someSessionId"); }); @@ -201,24 +202,24 @@ public void DeleteSessionShouldThrowForNonSuccessStatusCode(HttpStatusCode httpS Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] [DataRow(HttpStatusCode.RequestTimeout)] [DataRow(HttpStatusCode.NotFound)] [DataRow(HttpStatusCode.Forbidden)] - public void DeleteSessionAsyncShouldThrowForNonSuccessStatusCode(HttpStatusCode httpStatusCode) + public async Task DeleteSessionAsyncShouldThrowForNonSuccessStatusCode(HttpStatusCode httpStatusCode) { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - Assert.ThrowsExceptionAsync(async () => + await Assert.ThrowsExactlyAsync(async () => { await docScanClient.DeleteSessionAsync("someSessionId"); }); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -229,7 +230,7 @@ public void GetMediaContentShouldThrowForNonSuccessStatusCode(HttpStatusCode htt { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.GetMediaContent("someSessionId", "someMediaId"); }); @@ -237,7 +238,7 @@ public void GetMediaContentShouldThrowForNonSuccessStatusCode(HttpStatusCode htt Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -248,7 +249,7 @@ public void GetSessionShouldThrowForNonSuccessStatusCode(HttpStatusCode httpStat { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.GetSession("someSessionId"); }); @@ -467,7 +468,7 @@ public void GetSupportedDocumentWithIsLatinShouldSucceed() Assert.AreEqual("DRIVING_LICENCE", result.SupportedCountries[0].SupportedDocuments[1].Type); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -478,7 +479,7 @@ public void GetSupportedDocumentsShouldThrowForNonSuccessStatusCode(HttpStatusCo { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.GetSupportedDocuments(false); }); @@ -507,7 +508,7 @@ public void CreateFaceCaptureResourceShouldSucceed() Assert.AreEqual(frames, result.Frames); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -518,7 +519,7 @@ public void CreateFaceCaptureResourceShouldThrowForNonSuccessStatusCode(HttpStat { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.CreateFaceCaptureResource(_someSessionId, _createFaceCaptureResourcePayload); }); @@ -536,7 +537,7 @@ public void UploadFaceCaptureImageShouldSucceed() Assert.That.DoesNotThrowException(act); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -547,7 +548,7 @@ public void UploadFaceCaptureImageShouldThrowForNonSuccessStatusCode(HttpStatusC { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.UploadFaceCaptureImage(_someSessionId, _someResourceId, _uploadFaceCaptureImagePayload); }); @@ -561,22 +562,17 @@ public void GetSessionConfigurationShouldSucceed() int clientSessionTokenTtl = 3600; var requestedChecks = new List { "check1", "check2" }; string biometricConsent = "someBiometricConsent"; - var requiredIdDocumentResourceResponse = Mock.Of(ctx => ctx.Type == DocScanConstants.IdDocument); - var requiredSupplementaryDocumentResourceResponse = Mock.Of(ctx => ctx.Type == DocScanConstants.SupplementaryDocument); - var requiredLivenessResourceResponse = Mock.Of(ctx => ctx.Type == DocScanConstants.Liveness); - var requiredZoomLivenessResourceResponse = Mock.Of(ctx => ctx.Type == DocScanConstants.Liveness - && ctx.LivenessType == DocScanConstants.Zoom); - var relyingBusinessAllowedSourceResponse = Mock.Of(ctx => ctx.Type == DocScanConstants.RelyingBusiness); - var allowedSources = new List { - relyingBusinessAllowedSourceResponse - }; + // Use plain anonymous objects instead of Moq proxies to avoid OOM during JSON serialization + var requiredIdDocumentResourceResponse = new { type = DocScanConstants.IdDocument }; + var requiredSupplementaryDocumentResourceResponse = new { type = DocScanConstants.SupplementaryDocument }; + var requiredLivenessResourceResponse = new { type = DocScanConstants.Liveness, liveness_type = "UNKNOWN" }; + var requiredZoomLivenessResourceResponse = new { type = DocScanConstants.Liveness, liveness_type = DocScanConstants.Zoom }; + var relyingBusinessAllowedSourceResponse = new { type = DocScanConstants.RelyingBusiness }; + var allowedSources = new List { relyingBusinessAllowedSourceResponse }; var id = "someId"; var state = "someState"; - var requiredFaceCaptureResourceResponse = Mock.Of(ctx => ctx.Type == DocScanConstants.FaceCapture - && ctx.AllowedSources == allowedSources - && ctx.Id == id - && ctx.State == state); - List requiredResourceResponses = new List + var requiredFaceCaptureResourceResponse = new { type = DocScanConstants.FaceCapture, allowed_sources = allowedSources, id, state }; + var requiredResourceResponses = new List { requiredIdDocumentResourceResponse, requiredSupplementaryDocumentResourceResponse, @@ -618,7 +614,7 @@ public void GetSessionConfigurationShouldSucceed() Assert.AreEqual(state, faceCaptureResourceRequirement.State); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -629,7 +625,7 @@ public void GetSessionConfigurationShouldThrowForNonSuccessStatusCode(HttpStatus { DocScanClient docScanClient = SetupDocScanClientResponse(httpStatusCode); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { docScanClient.GetSessionConfiguration(_someSessionId); }); @@ -718,12 +714,14 @@ public void ShouldParseAdvancedIdentityProfileResponse() Assert.AreEqual(mediaId, result.AdvancedIdentityProfile.Report["media"]["id"].Value()); } + private DocScanClient SetupDocScanClient(dynamic responseContent) { string jsonResponse = JsonConvert.SerializeObject(responseContent, new JsonSerializerSettings() { - ReferenceLoopHandling = ReferenceLoopHandling.Ignore + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + MaxDepth = 32 } ); var successResponse = new HttpResponseMessage diff --git a/test/Yoti.Auth.Tests/DocScan/DocScanServiceTests.cs b/test/Yoti.Auth.Tests/DocScan/DocScanServiceTests.cs index de3adf21..1e51a1b8 100644 --- a/test/Yoti.Auth.Tests/DocScan/DocScanServiceTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/DocScanServiceTests.cs @@ -34,7 +34,7 @@ public void Startup() _uploadFaceCaptureImagePayload = new UploadFaceCaptureImagePayload(DocScanConstants.MimeTypePng, new byte[] { 0x00, 0x21, 0x60, 0x1F, 0xA1 }); } - [DataTestMethod] + [TestMethod] [DataRow("")] [DataRow(null)] public void ApiUriDefaultIsUsedForNullOrEmpty(string envVar) @@ -70,7 +70,7 @@ public void ApiUriEnvVariableIsUsed() [TestMethod] public void CreateSessionShouldThrowExceptionForMissingSdkId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateSession(null, _keyPair, new SessionSpecificationBuilder().Build()); }).Result; @@ -81,7 +81,7 @@ public void CreateSessionShouldThrowExceptionForMissingSdkId() [TestMethod] public void CreateSessionShouldThrowExceptionForMissingKeyPair() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateSession(_sdkId, null, new SessionSpecificationBuilder().Build()); }).Result; @@ -92,7 +92,7 @@ public void CreateSessionShouldThrowExceptionForMissingKeyPair() [TestMethod] public void CreateSessionShouldThrowExceptionForMissingSessionSpec() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateSession(_sdkId, _keyPair, null); }).Result; @@ -103,7 +103,7 @@ public void CreateSessionShouldThrowExceptionForMissingSessionSpec() [TestMethod] public void RetrieveSessionShouldThrowExceptionForMissingSdkId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetSession(null, _keyPair, _someSessionId); }).Result; @@ -114,7 +114,7 @@ public void RetrieveSessionShouldThrowExceptionForMissingSdkId() [TestMethod] public void RetrieveSessionShouldThrowExceptionForMissingKeyPair() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetSession(_sdkId, null, _someSessionId); }).Result; @@ -125,7 +125,7 @@ public void RetrieveSessionShouldThrowExceptionForMissingKeyPair() [TestMethod] public void RetrieveSessionShouldThrowExceptionForMissingSessionId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetSession(_sdkId, _keyPair, null); }).Result; @@ -136,7 +136,7 @@ public void RetrieveSessionShouldThrowExceptionForMissingSessionId() [TestMethod] public void DeleteSessionShouldThrowExceptionForMissingSdkId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteSession(null, _keyPair, _someSessionId).Wait(); }); @@ -148,7 +148,7 @@ public void DeleteSessionShouldThrowExceptionForMissingSdkId() [TestMethod] public void DeleteSessionShouldThrowExceptionForMissingKeyPair() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteSession(_sdkId, null, _someSessionId).Wait(); }); @@ -160,7 +160,7 @@ public void DeleteSessionShouldThrowExceptionForMissingKeyPair() [TestMethod] public void DeleteSessionShouldThrowExceptionForMissingSessionId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteSession(_sdkId, _keyPair, null).Wait(); }); @@ -172,7 +172,7 @@ public void DeleteSessionShouldThrowExceptionForMissingSessionId() [TestMethod] public void GetMediaContentShouldThrowExceptionForMissingSdkId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetMediaContent(null, _keyPair, _someSessionId, _someMediaId); }).Result; @@ -183,7 +183,7 @@ public void GetMediaContentShouldThrowExceptionForMissingSdkId() [TestMethod] public void GetMediaContentShouldThrowExceptionForMissingKeyPair() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetMediaContent(_sdkId, null, _someSessionId, _someMediaId); }).Result; @@ -194,7 +194,7 @@ public void GetMediaContentShouldThrowExceptionForMissingKeyPair() [TestMethod] public void GetMediaContentShouldThrowExceptionForMissingSessionId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetMediaContent(_sdkId, _keyPair, null, _someMediaId); }).Result; @@ -205,7 +205,7 @@ public void GetMediaContentShouldThrowExceptionForMissingSessionId() [TestMethod] public void GetMediaContentShouldThrowExceptionForMissingMediaId() { - var exception = Assert.ThrowsExceptionAsync(async () => + var exception = Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetMediaContent(_sdkId, _keyPair, _someSessionId, null); }).Result; @@ -216,7 +216,7 @@ public void GetMediaContentShouldThrowExceptionForMissingMediaId() [TestMethod] public void DeleteMediaContentShouldThrowExceptionForMissingSdkId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteMediaContent(null, _keyPair, _someSessionId, _someMediaId).Wait(); }); @@ -228,7 +228,7 @@ public void DeleteMediaContentShouldThrowExceptionForMissingSdkId() [TestMethod] public void DeleteMediaContentShouldThrowExceptionForMissingKeyPair() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteMediaContent(_sdkId, null, _someSessionId, _someMediaId).Wait(); }); @@ -240,7 +240,7 @@ public void DeleteMediaContentShouldThrowExceptionForMissingKeyPair() [TestMethod] public void DeleteMediaContentShouldThrowExceptionForMissingSessionId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteMediaContent(_sdkId, _keyPair, null, _someMediaId).Wait(); }); @@ -252,7 +252,7 @@ public void DeleteMediaContentShouldThrowExceptionForMissingSessionId() [TestMethod] public void DeleteMediaContentShouldThrowExceptionForMissingMediaId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { _docScanService.DeleteMediaContent(_sdkId, _keyPair, _someSessionId, null).Wait(); }); @@ -270,14 +270,14 @@ public void GetSignedRequestBuilderShouldReturnNewInstance() Assert.AreNotSame(requestBuilder1, requestBuilder2); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenSdkIdIsNullEmptyOrWhitespace(string sdkId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateFaceCaptureResource(sdkId, _keyPair, _someSessionId, _createFaceCaptureResourcePayload); }); @@ -288,7 +288,7 @@ public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenSdkIdIsNullEm [TestMethod] public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenKeyPairIsNull() { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateFaceCaptureResource(_sdkId, null, _someSessionId, _createFaceCaptureResourcePayload); }); @@ -296,14 +296,14 @@ public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenKeyPairIsNull Assert.IsTrue(exception.Message.Contains("keyPair")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenSessionIdIsNullEmptyOrWhitespace(string sessionId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateFaceCaptureResource(_sdkId, _keyPair, sessionId, _createFaceCaptureResourcePayload); }); @@ -314,7 +314,7 @@ public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenSessionIdIsNu [TestMethod] public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenCreateFaceCaptureResourcePayloadIsNull() { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.CreateFaceCaptureResource(_sdkId, _keyPair, _someSessionId, null); }); @@ -322,14 +322,14 @@ public async Task CreateFaceCaptureResourceShouldThrowExceptionWhenCreateFaceCap Assert.IsTrue(exception.Message.Contains("createFaceCaptureResourcePayload")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task UploadFaceCaptureImageShouldThrowExceptionWhenSdkIdIsNullEmptyOrWhitespace(string sdkId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.UploadFaceCaptureImage(sdkId, _keyPair, _someSessionId, _someResourceId, _uploadFaceCaptureImagePayload); }); @@ -340,7 +340,7 @@ public async Task UploadFaceCaptureImageShouldThrowExceptionWhenSdkIdIsNullEmpty [TestMethod] public async Task UploadFaceCaptureImageShouldThrowExceptionWhenKeyPairIsNull() { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.UploadFaceCaptureImage(_sdkId, null, _someSessionId, _someResourceId, _uploadFaceCaptureImagePayload); }); @@ -348,14 +348,14 @@ public async Task UploadFaceCaptureImageShouldThrowExceptionWhenKeyPairIsNull() Assert.IsTrue(exception.Message.Contains("keyPair")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task UploadFaceCaptureImageShouldThrowExceptionWhenSessionIdIsNullEmptyOrWhitespace(string sessionId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.UploadFaceCaptureImage(_sdkId, _keyPair, sessionId, _someResourceId, _uploadFaceCaptureImagePayload); }); @@ -363,14 +363,14 @@ public async Task UploadFaceCaptureImageShouldThrowExceptionWhenSessionIdIsNullE Assert.IsTrue(exception.Message.Contains(nameof(sessionId))); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task UploadFaceCaptureImageShouldThrowExceptionWhenResourceIdIsNullEmptyOrWhitespace(string resourceId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.UploadFaceCaptureImage(_sdkId, _keyPair, _someSessionId, resourceId, _uploadFaceCaptureImagePayload); }); @@ -381,7 +381,7 @@ public async Task UploadFaceCaptureImageShouldThrowExceptionWhenResourceIdIsNull [TestMethod] public async Task UploadFaceCaptureImageShouldThrowExceptionWhenUploadFaceCaptureImagePayloadIsNull() { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.UploadFaceCaptureImage(_sdkId, _keyPair, _someSessionId, _someResourceId, null); }); @@ -389,14 +389,14 @@ public async Task UploadFaceCaptureImageShouldThrowExceptionWhenUploadFaceCaptur Assert.IsTrue(exception.Message.Contains("uploadFaceCaptureImagePayload")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task GetSessionConfigurationShouldThrowExceptionWhenSdkIdIsNullEmptyOrWhitespace(string sdkId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetSessionConfiguration(sdkId, _keyPair, _someSessionId); }); @@ -407,7 +407,7 @@ public async Task GetSessionConfigurationShouldThrowExceptionWhenSdkIdIsNullEmpt [TestMethod] public async Task GetSessionConfigurationShouldThrowExceptionWhenKeyPairIsNull() { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetSessionConfiguration(_sdkId, null, _someSessionId); }); @@ -415,14 +415,14 @@ public async Task GetSessionConfigurationShouldThrowExceptionWhenKeyPairIsNull() Assert.IsTrue(exception.Message.Contains("keyPair")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] [DataRow(" ")] [DataRow(" ")] public async Task GetSessionConfigurationShouldThrowExceptionWhenSessionIdIsNullEmptyOrWhitespace(string sessionId) { - var exception = await Assert.ThrowsExceptionAsync(async () => + var exception = await Assert.ThrowsExactlyAsync(async () => { await _docScanService.GetSessionConfiguration(_sdkId, _keyPair, sessionId); }); diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/IssuingAuthoritySubCheckBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/IssuingAuthoritySubCheckBuilderTests.cs index 55286ad8..bffe2d76 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/IssuingAuthoritySubCheckBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/IssuingAuthoritySubCheckBuilderTests.cs @@ -8,7 +8,7 @@ namespace Yoti.Auth.Tests.DocScan.Session.Create.Check [TestClass] public class IssuingAuthoritySubCheckBuilderTests { - [DataTestMethod] + [TestMethod] [DataRow(true)] [DataRow(false)] public void ShouldBuildWithCorrectRequestedValue(bool requested) diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceComparionCheckBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceComparionCheckBuilderTests.cs index 6dd1bd8f..7287ad55 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceComparionCheckBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceComparionCheckBuilderTests.cs @@ -21,7 +21,7 @@ public void ShouldBuildWithManualCheckNever() [TestMethod] public void ShouldNotBuildWithOutManualCheckBeingSet() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new RequestedFaceComparisonCheckBuilder().Build(); }); diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceMatchCheckBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceMatchCheckBuilderTests.cs index bbb6c62a..d04a4254 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceMatchCheckBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedFaceMatchCheckBuilderTests.cs @@ -45,7 +45,7 @@ public void ShouldBuildWithManualCheckNever() [TestMethod] public void ShouldNotBuildWithOutManualCheckBeingSet() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new RequestedFaceMatchCheckBuilder().Build(); }); diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedLivenessCheckBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedLivenessCheckBuilderTests.cs index 3677d783..8004167f 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedLivenessCheckBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedLivenessCheckBuilderTests.cs @@ -80,7 +80,7 @@ public void ShouldDefaultTo1MaxRetryIfNotSet() [TestMethod] public void ShouldNotBuildWithLivenessTypeNotBeingSet() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new RequestedLivenessCheckBuilder().Build(); }); diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedWatchlistScreeningCheckBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedWatchlistScreeningCheckBuilderTests.cs index 1957aa1c..b94ab7fb 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedWatchlistScreeningCheckBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Check/RequestedWatchlistScreeningCheckBuilderTests.cs @@ -63,7 +63,7 @@ public void ShouldNotBuildWithNullCategory() { string withCategory = null; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { RequestedWatchlistScreeningCheck check = new RequestedWatchlistScreeningCheckBuilder() @@ -77,7 +77,7 @@ public void ShouldNotBuildWithEmptyStringCategory() { string withCategory = ""; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { RequestedWatchlistScreeningCheck check = new RequestedWatchlistScreeningCheckBuilder() @@ -91,7 +91,7 @@ public void ShouldNotBuildWithWhitespaceStringCategory() { string withCategory = " "; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { RequestedWatchlistScreeningCheck check = new RequestedWatchlistScreeningCheckBuilder() diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs index 6dfedc94..926fd2d6 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Create/Task/RequestedTextExtractionTaskBuilderTests.cs @@ -54,7 +54,7 @@ public void ChipDataShouldBeNullWhenNotSet() [TestMethod] public void ShouldNotBuildWithOutManualCheckBeingSet() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new RequestedTextExtractionTaskBuilder().Build(); }); diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Check/CheckResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Check/CheckResponseTests.cs index faa5bc28..dea6d8d6 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Check/CheckResponseTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Check/CheckResponseTests.cs @@ -13,7 +13,7 @@ namespace Yoti.Auth.Tests.Docs.Session.Retrieve.Check [TestClass] public class CheckResponseTests { - [DataTestMethod] + [TestMethod] [DataRow(DocScanConstants.IdDocumentAuthenticity, typeof(AuthenticityCheckResponse))] [DataRow(DocScanConstants.IdDocumentFaceMatch, typeof(FaceMatchCheckResponse))] [DataRow(DocScanConstants.IdDocumentTextDataCheck, typeof(TextDataCheckResponse))] @@ -126,7 +126,7 @@ public void CheckReportResponseIsParsed() AssertBreakdownResponseValuesCorrect((reportResponse.breakdown as IEnumerable).First(), response.Breakdown.First()); } - [DataTestMethod] + [TestMethod] [DataRow(typeof(DocumentFieldsResponse))] [DataRow(typeof(DocumentIdPhotoResponse))] [DataRow(typeof(FaceMapResponse))] diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/LivenessResourceResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/LivenessResourceResponseTests.cs index d32fc0db..aad953d1 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/LivenessResourceResponseTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Resource/LivenessResourceResponseTests.cs @@ -12,7 +12,7 @@ namespace Yoti.Auth.Tests.Docs.Session.Retrieve.Check [TestClass] public class LivenessResourceResponseTests { - [DataTestMethod] + [TestMethod] [DataRow(DocScanConstants.Zoom, typeof(ZoomLivenessResourceResponse))] [DataRow("OTHER", typeof(LivenessResourceResponse))] [DataRow("", typeof(LivenessResourceResponse))] diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/TaskResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/TaskResponseTests.cs index 8074414e..92a3a258 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/TaskResponseTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/TaskResponseTests.cs @@ -12,7 +12,7 @@ namespace Yoti.Auth.Tests.DocScan.Session.Retrieve.Task [TestClass] public class TaskResponseTests { - [DataTestMethod] + [TestMethod] [DataRow("ID_DOCUMENT_TEXT_DATA_CHECK", typeof(GeneratedTextDataCheckResponse))] [DataRow("OTHER", typeof(GeneratedCheckResponse))] [DataRow("", typeof(GeneratedCheckResponse))] diff --git a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs index 25f5aeeb..337c8a9e 100644 --- a/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs +++ b/test/Yoti.Auth.Tests/DocScan/Session/Retrieve/Task/VerifyShareCodeTaskResponseTests.cs @@ -13,7 +13,7 @@ namespace Yoti.Auth.Tests.DocScan.Session.Retrieve.Task [TestClass] public class VerifyShareCodeTaskResponseTests { - [DataTestMethod] + [TestMethod] [DataRow(DocScanConstants.VerifyShareCodeTask, typeof(VerifyShareCodeTaskResponse))] [DataRow("OTHER", typeof(TaskResponse))] [DataRow("", typeof(TaskResponse))] diff --git a/test/Yoti.Auth.Tests/DocumentDetailsAttributeParserTests.cs b/test/Yoti.Auth.Tests/DocumentDetailsAttributeParserTests.cs index beebf373..ad395a81 100644 --- a/test/Yoti.Auth.Tests/DocumentDetailsAttributeParserTests.cs +++ b/test/Yoti.Auth.Tests/DocumentDetailsAttributeParserTests.cs @@ -10,7 +10,7 @@ public class DocumentDetailsAttributeParserTests [TestMethod] public void ShouldThrowExceptionForNullAttribute() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { DocumentDetailsAttributeParser.ParseFrom(null); @@ -20,18 +20,18 @@ public void ShouldThrowExceptionForNullAttribute() [TestMethod] public void ShouldThrowExceptionWhenAttributesAreMissing() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { DocumentDetailsAttributeParser.ParseFrom("PASSPORT GBR"); }); } - [DataTestMethod] + [TestMethod] [DataRow("")] [DataRow("''")] public void ShouldThrowExceptionForInvalidValues(string value) { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { DocumentDetailsAttributeParser.ParseFrom(value); }); @@ -115,7 +115,7 @@ public void ShouldParseRedactedAadhar() Assert.AreEqual("UIDAI", result.IssuingAuthority); } - [DataTestMethod] + [TestMethod] [DataRow("****")] [DataRow("~!@#$%^&*()-_=+[]{}|;':,./<>?")] [DataRow("\"\"")] @@ -130,14 +130,14 @@ public void ShouldParseDocumentDetailsWithSpecialCharacters(string documentNumbe Assert.AreEqual(documentNumber, result.DocumentNumber); } - [DataTestMethod] + [TestMethod] [DataRow("PASSPORT GBR 1234abc")] [DataRow("PASSPORT GBR 1234abc")] [DataRow("DRIVING_LICENCE GBR 1234abc 2016-05-01 DVLA")] [DataRow("DRIVING_LICENCE GBR 1234abc 2016-05-01 DVLA")] public void ShouldFailForMoreThanOneConsecutiveSpaces(string stringToParse) { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { DocumentDetails result = DocumentDetailsAttributeParser.ParseFrom(stringToParse); }); @@ -146,7 +146,7 @@ public void ShouldFailForMoreThanOneConsecutiveSpaces(string stringToParse) [TestMethod] public void ShouldThrowExceptionForInvalidDate() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { DocumentDetailsAttributeParser.ParseFrom("PASSPORT GBR 1234abc" + " X016-05-01"); }); diff --git a/test/Yoti.Auth.Tests/Share/DataEntryConverterTests.cs b/test/Yoti.Auth.Tests/Share/DataEntryConverterTests.cs index 41cc84f4..f156df82 100644 --- a/test/Yoti.Auth.Tests/Share/DataEntryConverterTests.cs +++ b/test/Yoti.Auth.Tests/Share/DataEntryConverterTests.cs @@ -18,13 +18,13 @@ public void ShouldThrowExtraDataExceptionForInvalidProtobuf() Type = DataEntry.Types.Type.ThirdPartyAttribute }; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { DataEntryConverter.ConvertDataEntry(dataEntry); }); } - [DataTestMethod] + [TestMethod] [DataRow(DataEntry.Types.Type.AgeVerificationSecret)] [DataRow(DataEntry.Types.Type.Invoice)] [DataRow(DataEntry.Types.Type.Location)] diff --git a/test/Yoti.Auth.Tests/Share/ThirdParty/ThirdPartyAttributeConverterTests.cs b/test/Yoti.Auth.Tests/Share/ThirdParty/ThirdPartyAttributeConverterTests.cs index 2509d535..d95a5bc1 100644 --- a/test/Yoti.Auth.Tests/Share/ThirdParty/ThirdPartyAttributeConverterTests.cs +++ b/test/Yoti.Auth.Tests/Share/ThirdParty/ThirdPartyAttributeConverterTests.cs @@ -22,7 +22,7 @@ public void ShouldReturnNullForExpiryDateEmpty() Assert.IsNull(result.ExpiryDate); } - [DataTestMethod] + [TestMethod] [DataRow("2019-01-02T03:04:05.678Z")] [DataRow("2019-01-02T04:04:05.678+01:00")] [DataRow("2019-01-02T15:04:05.678+12:00")] @@ -36,7 +36,7 @@ public void ShouldParseDifferentTimezonesDate(string expiryDate) Assert.AreEqual(new DateTime(2019, 1, 2, 3, 4, 5, 678, DateTimeKind.Utc), result.ExpiryDate); } - [DataTestMethod] + [TestMethod] [DataRow("2006-01-02", "2006-01-02T00:00:00.000000Z")] [DataRow("2006-01-02T22:04:05Z", "2006-01-02T22:04:05.000000Z")] [DataRow("2006-01-02T22:04:05.1Z", "2006-01-02T22:04:05.100000Z")] @@ -62,7 +62,7 @@ public void ShouldThrowExtraDataExceptionForEmptyToken() { byte[] byteValue = CreateSerializedThirdPartyAttribute("", expiryDate: _someExpiryDate); - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { ThirdPartyAttributeConverter.ParseThirdPartyAttribute(byteValue); }); diff --git a/test/Yoti.Auth.Tests/ShareUrl/DynamicSharingServiceTests.cs b/test/Yoti.Auth.Tests/ShareUrl/DynamicSharingServiceTests.cs index 39b5a7ec..04948c42 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/DynamicSharingServiceTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/DynamicSharingServiceTests.cs @@ -28,7 +28,7 @@ public void Startup() [TestMethod] public void ShouldFailWithNullHttpClient() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DynamicSharingService.CreateShareURL(null, _apiURL, _sdkID, _keyPair, _someDynamicScenario).Wait(); }); @@ -40,7 +40,7 @@ public void ShouldFailWithNullHttpClient() [TestMethod] public void ShouldFailWithNullApiUrl() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DynamicSharingService.CreateShareURL(_httpClient, null, _sdkID, _keyPair, _someDynamicScenario).Wait(); }); @@ -52,7 +52,7 @@ public void ShouldFailWithNullApiUrl() [TestMethod] public void ShouldFailWithNullSdkId() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DynamicSharingService.CreateShareURL(_httpClient, _apiURL, null, _keyPair, _someDynamicScenario).Wait(); }); @@ -64,7 +64,7 @@ public void ShouldFailWithNullSdkId() [TestMethod] public void ShouldFailWithNullKeyPair() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DynamicSharingService.CreateShareURL(_httpClient, _apiURL, _sdkID, null, _someDynamicScenario).Wait(); }); @@ -76,7 +76,7 @@ public void ShouldFailWithNullKeyPair() [TestMethod] public void ShouldFailWithNullDynamicScenario() { - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { DynamicSharingService.CreateShareURL(_httpClient, _apiURL, _sdkID, _keyPair, null).Wait(); }); diff --git a/test/Yoti.Auth.Tests/ShareUrl/Extensions/LocationConstraintExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/ShareUrl/Extensions/LocationConstraintExtensionBuilderTests.cs index ec6f118e..9abab11b 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/Extensions/LocationConstraintExtensionBuilderTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/Extensions/LocationConstraintExtensionBuilderTests.cs @@ -13,13 +13,12 @@ public class LocationConstraintExtensionBuilderTests private const double _someRadius = 3d; private const double _someUncertainty = 4d; - [DataTestMethod] + [TestMethod] [DataRow(-91)] [DataRow(91)] - [TestMethod] public void ShouldFailForLatitudesOutsideOfRange(double latitude) { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithLatitude(latitude) @@ -27,13 +26,12 @@ public void ShouldFailForLatitudesOutsideOfRange(double latitude) }); } - [DataTestMethod] + [TestMethod] [DataRow(-181)] [DataRow(181)] - [TestMethod] public void ShouldFailForLongitudesOutsideOfRange(double longitude) { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithLongitude(longitude) @@ -44,7 +42,7 @@ public void ShouldFailForLongitudesOutsideOfRange(double longitude) [TestMethod] public void ShouldFailForRadiusLessThanZero() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithRadius(-1) @@ -55,7 +53,7 @@ public void ShouldFailForRadiusLessThanZero() [TestMethod] public void ShouldFailForUncertaintyLessThanZero() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new LocationConstraintExtensionBuilder() .WithMaxUncertainty(-1) diff --git a/test/Yoti.Auth.Tests/ShareUrl/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/ShareUrl/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs index 65f1a3a7..7635bdb6 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/Extensions/ThirdPartyAttributeExtensionBuilderTests.cs @@ -16,7 +16,7 @@ public class ThirdPartyAttributeExtensionBuilderTests [TestMethod] public void ShouldFailForNullDefinition() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new ThirdPartyAttributeExtensionBuilder() .WithDefinition(null) @@ -26,12 +26,12 @@ public void ShouldFailForNullDefinition() Assert.IsTrue(exception.Message.Contains("definition")); } - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] public void ShouldFailForInvalidDefinitions(string definition) { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new ThirdPartyAttributeExtensionBuilder() .WithDefinition(definition) @@ -60,7 +60,7 @@ public void ShouldBuildThirdPartyAttributeExtensionWithGivenValues() Assert.AreEqual(_someDefinition, definitions[0].Name); } - [DataTestMethod] + [TestMethod] [DataRow("2006-01-02T22:04:05Z", "2006-01-02T22:04:05.000Z")] [DataRow("2006-01-02T22:04:05.1Z", "2006-01-02T22:04:05.100Z")] [DataRow("2006-01-02T22:04:05.12Z", "2006-01-02T22:04:05.120Z")] @@ -70,7 +70,6 @@ public void ShouldBuildThirdPartyAttributeExtensionWithGivenValues() [DataRow("2006-01-02T22:04:05.123456Z", "2006-01-02T22:04:05.123Z")] [DataRow("2002-10-02T10:00:00.1-05:00", "2002-10-02T15:00:00.100Z")] [DataRow("2002-10-02T10:00:00.12345+11:00", "2002-10-01T23:00:00.123Z")] - [TestMethod] public void ShouldBuildThirdPartyAttributeExtensionWithExpiryDates(string expiryDateInputString, string expectedExpiryDate) { bool parseSuccess = DateTime.TryParse( diff --git a/test/Yoti.Auth.Tests/ShareUrl/Extensions/TransactionalFlowExtensionBuilderTests.cs b/test/Yoti.Auth.Tests/ShareUrl/Extensions/TransactionalFlowExtensionBuilderTests.cs index aea20e0c..45b2fa01 100644 --- a/test/Yoti.Auth.Tests/ShareUrl/Extensions/TransactionalFlowExtensionBuilderTests.cs +++ b/test/Yoti.Auth.Tests/ShareUrl/Extensions/TransactionalFlowExtensionBuilderTests.cs @@ -13,7 +13,7 @@ public class TransactionalFlowExtensionBuilderTests [TestMethod] public void ShouldFailForNullContent() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new TransactionalFlowExtensionBuilder() .WithContent(null) diff --git a/test/Yoti.Auth.Tests/ValidationTests.cs b/test/Yoti.Auth.Tests/ValidationTests.cs index eb2f2d5b..b1e72e76 100644 --- a/test/Yoti.Auth.Tests/ValidationTests.cs +++ b/test/Yoti.Auth.Tests/ValidationTests.cs @@ -35,7 +35,7 @@ public void IsNotDefaultShouldAllowNonDefaultType() public void IsNotDefaultShouldThrowForDefaultType() { int defaultValue = 0; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { Validation.IsNotDefault(defaultValue, nameof(defaultValue)); }); diff --git a/test/Yoti.Auth.Tests/Verifications/AgeVerificationTests.cs b/test/Yoti.Auth.Tests/Verifications/AgeVerificationTests.cs index 5a25944f..52bdb9f3 100644 --- a/test/Yoti.Auth.Tests/Verifications/AgeVerificationTests.cs +++ b/test/Yoti.Auth.Tests/Verifications/AgeVerificationTests.cs @@ -138,7 +138,7 @@ public void FindAgeUnderVerificationShouldReturnCorrectResult() [TestMethod] public void NullDerivedAttributeShouldThrowException() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new AgeVerification(derivedAttribute: null); }); @@ -147,7 +147,7 @@ public void NullDerivedAttributeShouldThrowException() Assert.IsTrue(exception.Message.Contains("Parameter 'derivedAttribute'")); } - [DataTestMethod] + [TestMethod] [DataRow("invalid_name")] [DataRow("age_over::18")] [DataRow(":21")] @@ -160,7 +160,7 @@ public void InvalidAttributeNamesShouldThrowException(string attributeName) value: "true", anchors: null); - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new AgeVerification(attribute); }); diff --git a/test/Yoti.Auth.Tests/Web/RequestBuilderTests.cs b/test/Yoti.Auth.Tests/Web/RequestBuilderTests.cs index 3a107cc9..4a048d01 100644 --- a/test/Yoti.Auth.Tests/Web/RequestBuilderTests.cs +++ b/test/Yoti.Auth.Tests/Web/RequestBuilderTests.cs @@ -29,7 +29,7 @@ public class RequestBuilderTests [TestMethod] public void ShouldNotBuildWithoutKeyPair() { - var argumentNullException = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { new RequestBuilder() .WithBaseUri(_testBaseUri) @@ -38,13 +38,13 @@ public void ShouldNotBuildWithoutKeyPair() .Build(); }); - Assert.IsTrue(argumentNullException.Message.Contains("_keyPair")); + Assert.IsTrue(exception.Message.Contains("_keyPair")); } [TestMethod] public void ShouldNotBuildWithoutBaseUri() { - var argumentNullException = Assert.ThrowsException(() => + var argumentNullException = Assert.ThrowsExactly(() => { new RequestBuilder() .WithKeyPair(KeyPair.Get()) @@ -59,7 +59,7 @@ public void ShouldNotBuildWithoutBaseUri() [TestMethod] public void ShouldNotBuildWithoutEndpoint() { - var invalidOperationException = Assert.ThrowsException(() => + var invalidOperationException = Assert.ThrowsExactly(() => { new RequestBuilder() .WithBaseUri(_testBaseUri) @@ -74,7 +74,7 @@ public void ShouldNotBuildWithoutEndpoint() [TestMethod] public void ShouldNotBuildWithoutHttpMethod() { - var argumentNullException = Assert.ThrowsException(() => + var argumentNullException = Assert.ThrowsExactly(() => { new RequestBuilder() .WithBaseUri(_testBaseUri) @@ -120,7 +120,7 @@ public void CustomHeadersShoudlBeAdded() [TestMethod] public void ErrorThrownWhenContentHeaderIsAddedWithoutContent() { - var exception = Assert.ThrowsException(() => + var exception = Assert.ThrowsExactly(() => { Request request = CreateRequestBuilder() .WithContentHeader("key", "value") diff --git a/test/Yoti.Auth.Tests/Web/SignedMessageFactoryTests.cs b/test/Yoti.Auth.Tests/Web/SignedMessageFactoryTests.cs index 13569f74..2c11f1b0 100644 --- a/test/Yoti.Auth.Tests/Web/SignedMessageFactoryTests.cs +++ b/test/Yoti.Auth.Tests/Web/SignedMessageFactoryTests.cs @@ -11,7 +11,7 @@ public class SignedMessageFactoryTests [TestMethod] public void ShouldThrowExceptionWhenHttpMethodIsNull() { - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { SignedMessageFactory.SignMessage(null, "endpoint", KeyPair.Get(), null); }); diff --git a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj index 9f8e3811..cfe69548 100644 --- a/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj +++ b/test/Yoti.Auth.Tests/Yoti.Auth.Tests.csproj @@ -28,14 +28,14 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + diff --git a/test/Yoti.Auth.Tests/YotiClientEngineTests.cs b/test/Yoti.Auth.Tests/YotiClientEngineTests.cs index 63aaedcf..4e758529 100644 --- a/test/Yoti.Auth.Tests/YotiClientEngineTests.cs +++ b/test/Yoti.Auth.Tests/YotiClientEngineTests.cs @@ -23,14 +23,14 @@ public class YotiClientEngineTests private static HttpRequestMessage _httpRequestMessage; private const string SdkId = "fake-sdk-id"; - [DataTestMethod] + [TestMethod] [DataRow(null)] [DataRow("")] public void InvalidTokenShouldThrowException(string encryptedToken) { var engine = new YotiClientEngine(new HttpClient()); - var profileException = Assert.ThrowsExceptionAsync(async () => + var profileException = Assert.ThrowsExactlyAsync(async () => { await engine.GetActivityDetailsAsync(encryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; @@ -47,7 +47,7 @@ public void SharingFailureShouldReturnSharingFailure() var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); - var profileException = Assert.ThrowsExceptionAsync(async () => + var profileException = Assert.ThrowsExactlyAsync(async () => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; @@ -65,7 +65,7 @@ public void SharingFailureWithErrorCodeShouldThrowExceptionWithErrorCode() var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); - var profileException = Assert.ThrowsExceptionAsync(async () => + var profileException = Assert.ThrowsExactlyAsync(async () => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; @@ -84,7 +84,7 @@ public void SharingFailureShouldThrowExceptionWithWholeResponseExposed() var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); - var profileException = Assert.ThrowsExceptionAsync(async () => + var profileException = Assert.ThrowsExactlyAsync(async () => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; @@ -104,7 +104,7 @@ public void SharingFailureShouldThrowExceptionWithWholeResponseExposedRegardless var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); - var profileException = Assert.ThrowsExceptionAsync(async () => + var profileException = Assert.ThrowsExactlyAsync(async () => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; @@ -156,7 +156,7 @@ public void NullReceiptShouldThrowException() var engine = new YotiClientEngine(new HttpClient(handlerMock.Object)); - var profileException = Assert.ThrowsExceptionAsync(async () => + var profileException = Assert.ThrowsExactlyAsync(async () => { await engine.GetActivityDetailsAsync(EncryptedToken, SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl)); }).Result; @@ -278,14 +278,14 @@ public async Task PerformAmlCheckAsyncShouldReturnCorrectValues() Assert.IsFalse(amlResult.IsOnWatchList()); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] [DataRow(HttpStatusCode.RequestTimeout)] [DataRow(HttpStatusCode.NotFound)] [DataRow(HttpStatusCode.Forbidden)] - public void AmlBadRequestShouldThrowException(HttpStatusCode httpStatusCode) + public async Task AmlBadRequestShouldThrowException(HttpStatusCode httpStatusCode) { Mock handlerMock = SetupMockMessageHandler( httpStatusCode, @@ -295,7 +295,7 @@ public void AmlBadRequestShouldThrowException(HttpStatusCode httpStatusCode) AmlProfile amlProfile = TestTools.Aml.CreateStandardAmlProfile(); - Assert.ThrowsExceptionAsync(async () => + await Assert.ThrowsExactlyAsync(async () => { await engine.PerformAmlCheckAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), amlProfile); }); @@ -321,7 +321,7 @@ public async Task CreateShareURLAsyncShouldReturnCorrectValues() Assert.AreEqual(refId, shareUrlResult.RefId); } - [DataTestMethod] + [TestMethod] [DataRow(HttpStatusCode.BadRequest)] [DataRow(HttpStatusCode.Unauthorized)] [DataRow(HttpStatusCode.InternalServerError)] @@ -338,7 +338,7 @@ public void ShareURLNonSuccessStatusCodesShouldThrowException(HttpStatusCode htt DynamicScenario dynamicScenario = TestTools.ShareUrl.CreateStandardDynamicScenario(); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { engine.CreateShareURLAsync(SdkId, _keyPair, new Uri(Constants.Api.DefaultYotiApiUrl), dynamicScenario).Wait(); }); diff --git a/test/Yoti.Auth.Tests/YotiClientTests.cs b/test/Yoti.Auth.Tests/YotiClientTests.cs index d33366ab..e49a2d1e 100644 --- a/test/Yoti.Auth.Tests/YotiClientTests.cs +++ b/test/Yoti.Auth.Tests/YotiClientTests.cs @@ -26,7 +26,7 @@ public void NullSdkIdShouldThrowException() { StreamReader keystream = KeyPair.GetValidKeyStream(); string sdkId = null; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new YotiClient(sdkId, keystream); }); @@ -37,7 +37,7 @@ public void EmptySdkIdShouldThrowException() { StreamReader keystream = KeyPair.GetValidKeyStream(); string sdkId = string.Empty; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new YotiClient(sdkId, keystream); }); @@ -47,7 +47,7 @@ public void EmptySdkIdShouldThrowException() public void NoKeyStreamShouldThrowException() { StreamReader keystream = null; - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new YotiClient(_someSdkId, keystream); }); @@ -57,7 +57,7 @@ public void NoKeyStreamShouldThrowException() public void InvalidKeyStreamShouldThrowException() { StreamReader keystream = KeyPair.GetInvalidFormatKeyStream(); - Assert.ThrowsException(() => + Assert.ThrowsExactly(() => { new YotiClient(_someSdkId, keystream); }); @@ -68,7 +68,7 @@ public void NullAmlProfileShouldThrowException() { YotiClient client = CreateYotiClient(); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.PerformAmlCheck(amlProfile: null); }); @@ -86,7 +86,7 @@ public void NullAmlAddressShouldThrowException() familyName: "Heath", amlAddress: null); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.PerformAmlCheck(amlProfile: amlProfile); }); @@ -104,7 +104,7 @@ public void NullAmlGivenNameShouldThrowException() familyName: "Heath", amlAddress: TestTools.Aml.CreateStandardAmlAddress()); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.PerformAmlCheck(amlProfile: amlProfile); }); @@ -122,7 +122,7 @@ public void NullAmlFamilyNameShouldThrowException() familyName: null, amlAddress: TestTools.Aml.CreateStandardAmlAddress()); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.PerformAmlCheck(amlProfile: amlProfile); }); @@ -143,7 +143,7 @@ public void NullAmlCountryShouldThrowException() familyName: "Heath", amlAddress: amlAddress); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.PerformAmlCheck(amlProfile: amlProfile); }); @@ -156,7 +156,7 @@ public void NullDynamicScenarioShouldThrowException() { YotiClient client = CreateYotiClient(); - var aggregateException = Assert.ThrowsException(() => + var aggregateException = Assert.ThrowsExactly(() => { client.CreateShareUrl(null); }); @@ -164,7 +164,7 @@ public void NullDynamicScenarioShouldThrowException() Assert.IsTrue(TestTools.Exceptions.IsExceptionInAggregateException(aggregateException)); } - [DataTestMethod] + [TestMethod] [DataRow("")] [DataRow(null)] public void ApiUriDefaultIsUsedForNullOrEmpty(string envVar) diff --git a/test/Yoti.Auth.Tests/coverage.opencover.xml b/test/Yoti.Auth.Tests/coverage.opencover.xml index 3e821d9d..de20a7d6 100644 --- a/test/Yoti.Auth.Tests/coverage.opencover.xml +++ b/test/Yoti.Auth.Tests/coverage.opencover.xml @@ -1,373 +1,293 @@ - + - + Yoti.Auth.Tests.Common.dll - 2026-03-11T03:48:39 + 2026-06-22T02:06:35 Yoti.Auth.Tests.Common - - - - - - - - Yoti.Auth.Tests.Common.Http - - - - - Moq.Mock`1<System.Net.Http.HttpMessageHandler> Yoti.Auth.Tests.Common.Http::SetupMockMessageHandler(System.Net.Http.HttpResponseMessage) - - - - - - - - - - - - - - - - - - - - - - Yoti.Auth.Tests.Common.KeyPair - - - - - Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair Yoti.Auth.Tests.Common.KeyPair::Get() - - - - - - - - - - - - - Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair Yoti.Auth.Tests.Common.KeyPair::GetInvalidKeyPair() - - - - - - - - - - - - - System.IO.StreamReader Yoti.Auth.Tests.Common.KeyPair::GetValidKeyStream() - - - - - - - - - - - System.IO.StreamReader Yoti.Auth.Tests.Common.KeyPair::GetInvalidFormatKeyStream() - - - - - - - - - - + + - + Yoti.Auth.dll - 2026-03-11T03:48:39 + 2026-06-22T02:06:35 Yoti.Auth - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -378,1383 +298,1625 @@ System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_FailureType() - + - + - + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_Details() - + - + - + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_AuditId() - + - + - + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_DocumentCountryIsoCode() - + - + - + System.String Yoti.DigitalIdentity.RequirementNotMetDetails::get_DocumentType() - + - + - + - + Yoti.Auth.ActivityDetails System.String Yoti.Auth.ActivityDetails::get_RememberMeId() - + - + - + System.String Yoti.Auth.ActivityDetails::get_ParentRememberMeId() - + - + - + System.Nullable`1<System.DateTime> Yoti.Auth.ActivityDetails::get_Timestamp() - + - + - + Yoti.Auth.Profile.YotiProfile Yoti.Auth.ActivityDetails::get_Profile() - + - + - + Yoti.Auth.Profile.ApplicationProfile Yoti.Auth.ActivityDetails::get_ApplicationProfile() - + - + - + System.String Yoti.Auth.ActivityDetails::get_ReceiptId() - + - + - + Yoti.Auth.Share.ExtraData Yoti.Auth.ActivityDetails::get_ExtraData() - + - + - + - + System.Void Yoti.Auth.ActivityDetails::.ctor(System.String,System.String,System.Nullable`1<System.DateTime>,Yoti.Auth.Profile.YotiProfile,Yoti.Auth.Profile.ApplicationProfile,System.String,Yoti.Auth.Share.ExtraData) - + - - - - - - - - - + + + + + + + + + + - + - + Yoti.Auth.ActivityDetailsParser - - + + Yoti.Auth.ActivityDetails Yoti.Auth.ActivityDetailsParser::HandleResponse(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String) - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>> Yoti.Auth.ActivityDetailsParser::ParseProfileContent(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String,System.String) - + - - - - - - - - + + + + + + + + + + + + - - + + - + - + System.Void Yoti.Auth.ActivityDetailsParser::SetAddressToBeFormattedAddressIfNull(Yoti.Auth.Profile.YotiProfile) - + - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + Yoti.Auth.Conversion - + System.String Yoti.Auth.Conversion::BytesToUtf8(System.Byte[]) - + - + + + - + - + System.String Yoti.Auth.Conversion::BytesToBase64(System.Byte[]) - + - + + + - + - + System.Byte[] Yoti.Auth.Conversion::UtfToBytes(System.String) - + - + + + - + - + System.Byte[] Yoti.Auth.Conversion::Base64ToBytes(System.String) - + - + + + - + - + System.Byte[] Yoti.Auth.Conversion::UrlSafeBase64ToBytes(System.String) - + - - + + + + - + - + Yoti.Auth.CryptoEngine - + Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair Yoti.Auth.CryptoEngine::LoadRsaKey(System.IO.StreamReader) - + - - + + + + - + - + System.Byte[] Yoti.Auth.CryptoEngine::DecipherAes(System.Byte[],System.Byte[],System.Byte[]) - + - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Byte[] Yoti.Auth.CryptoEngine::DecryptRsa(System.Byte[],Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - + + + + + + - + - + System.Byte[] Yoti.Auth.CryptoEngine::SignDigest(System.Byte[],Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - + + + + + + - + - + System.Byte[] Yoti.Auth.CryptoEngine::GetDerEncodedPublicKey(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - + + + - + - + System.String Yoti.Auth.CryptoEngine::GenerateNonce() - + - - - - + + + + + + - + - + System.String Yoti.Auth.CryptoEngine::DecryptToken(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - + + + + + + - + - + System.Byte[] Yoti.Auth.CryptoEngine::UnwrapKey(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - + + + + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeList Yoti.Auth.CryptoEngine::DecryptAttributeList(System.String,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - + + + + - + - + Yoti.Auth.Share.ExtraData Yoti.Auth.CryptoEngine::DecryptExtraData(System.String,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - + + + + - + - + System.Byte[] Yoti.Auth.CryptoEngine::DecipherContent(System.String,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - - - - + + + + + + + + + - + - + System.String Yoti.Auth.CryptoEngine::GetAuthKey(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - + + + + - + - - + + System.Byte[] Yoti.Auth.CryptoEngine::DecryptAesGcm(System.Byte[],System.Byte[],System.Byte[]) - + - - - - - - - - - - + + + + + + + + + + + + + - + - - + + System.Byte[] Yoti.Auth.CryptoEngine::UnwrapReceiptKey(System.Byte[],System.Byte[],System.Byte[],Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - - - + + + + + + + + + - + - - + + System.Byte[] Yoti.Auth.CryptoEngine::DecryptReceiptContent(System.Byte[],System.Byte[]) - + - - - - - - - - + + + + + + + + + + + + - - + + - + - + Yoti.Auth.DigitalIdentityClient System.Uri Yoti.Auth.DigitalIdentityClient::get_ApiUri() - + - + - + - + - Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentityClient::CreateShareSession(Yoti.Auth.DigitalIdentity.ShareSessionRequest) - + Yoti.Auth.DigitalIdentityClient Yoti.Auth.DigitalIdentityClient::WithAuthToken(System.String,System.String,System.Net.Http.HttpClient) + - - + + + + + - + - + - Yoti.Auth.DigitalIdentity.SharedReceiptResponse Yoti.Auth.DigitalIdentityClient::GetShareReceipt(System.String) - + Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentityClient::CreateShareSession(Yoti.Auth.DigitalIdentity.ShareSessionRequest) + - - + + + + - + + + + + + Yoti.Auth.DigitalIdentity.SharedReceiptResponse Yoti.Auth.DigitalIdentityClient::GetShareReceipt(System.String) + + + + + + + + + + + + + + - + System.Void Yoti.Auth.DigitalIdentityClient::SetYotiApiUri() - + - - - - + + + + + + + + + - - + + - + - + Yoti.Auth.DigitalIdentityClient Yoti.Auth.DigitalIdentityClient::OverrideApiUri(System.Uri) - + - - + + + + - + - + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.String,System.IO.StreamReader) - + - - + + + - + - + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.Net.Http.HttpClient,System.String,System.IO.StreamReader) - + - - + + + - + - + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.Net.Http.HttpClient,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - - - - - + + + + + + + + + + - + - - - - - Yoti.Auth.DigitalIdentityClient/<CreateQrCode>d__13 - - - + + - System.Void Yoti.Auth.DigitalIdentityClient/<CreateQrCode>d__13::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClient::.ctor(System.String,Yoti.Auth.CentralAuth.IAuthStrategy,System.Net.Http.HttpClient) + - - + + + + + + + + + + - - + + + + + - - Yoti.Auth.DigitalIdentityClient/<CreateShareSessionAsync>d__11 + + Yoti.Auth.DigitalIdentityClient/<CreateQrCode>d__16 - - + + - System.Void Yoti.Auth.DigitalIdentityClient/<CreateShareSessionAsync>d__11::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClient/<CreateQrCode>d__16::MoveNext() + - - + + + - + - - Yoti.Auth.DigitalIdentityClient/<GetQrCode>d__14 + + Yoti.Auth.DigitalIdentityClient/<CreateShareSessionAsync>d__14 - - + + - System.Void Yoti.Auth.DigitalIdentityClient/<GetQrCode>d__14::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClient/<CreateShareSessionAsync>d__14::MoveNext() + - - + + + - + - - Yoti.Auth.DigitalIdentityClient/<GetSession>d__15 + + Yoti.Auth.DigitalIdentityClient/<GetQrCode>d__17 - - + + - System.Void Yoti.Auth.DigitalIdentityClient/<GetSession>d__15::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClient/<GetQrCode>d__17::MoveNext() + - - + + + - + - Yoti.Auth.DigitalIdentityClientEngine + Yoti.Auth.DigitalIdentityClient/<GetSession>d__18 - + - System.Void Yoti.Auth.DigitalIdentityClientEngine::.ctor(System.Net.Http.HttpClient) - + System.Void Yoti.Auth.DigitalIdentityClient/<GetSession>d__18::MoveNext() + - - - + + + - + - - Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass2_0/<<CreateShareSessionAsync>b__0>d + + Yoti.Auth.DigitalIdentityClientEngine - + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass2_0/<<CreateShareSessionAsync>b__0>d::MoveNext() - + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.ShareSessionResult> Yoti.Auth.DigitalIdentityClientEngine::CreateShareSessionAsync(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,Yoti.Auth.DigitalIdentity.ShareSessionRequest) + - - + + + - + - - - - - Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass3_0/<<GetShareReceipt>b__0>d - - + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass3_0/<<GetShareReceipt>b__0>d::MoveNext() - + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.SharedReceiptResponse> Yoti.Auth.DigitalIdentityClientEngine::GetShareReceipt(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,System.String) + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.CreateQrResult> Yoti.Auth.DigitalIdentityClientEngine::CreateQrCodeAsync(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,System.String,Yoti.Auth.DigitalIdentity.QrRequest) + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.GetQrCodeResult> Yoti.Auth.DigitalIdentityClientEngine::GetQrCodeAsync(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,System.String) + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.GetSessionResult> Yoti.Auth.DigitalIdentityClientEngine::GetSession(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,System.String) + + + + + + + + + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine::.ctor(System.Net.Http.HttpClient) + - - + + + + - + - Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass4_0/<<CreateQrCodeAsync>b__0>d + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass11_0/<<GetSession>b__0>d - System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass4_0/<<CreateQrCodeAsync>b__0>d::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass11_0/<<GetSession>b__0>d::MoveNext() + - - + + - + - Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass5_0/<<GetQrCodeAsync>b__0>d + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass3_0/<<CreateShareSessionAsync>b__0>d - System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass5_0/<<GetQrCodeAsync>b__0>d::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass3_0/<<CreateShareSessionAsync>b__0>d::MoveNext() + - - + + - + - Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass6_0/<<GetSession>b__0>d + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass5_0/<<GetShareReceipt>b__0>d - System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass6_0/<<GetSession>b__0>d::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass5_0/<<GetShareReceipt>b__0>d::MoveNext() + - - + + - + - - Yoti.Auth.DigitalIdentityClientEngine/<CreateQrCodeAsync>d__4 + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass7_0/<<CreateQrCodeAsync>b__0>d - + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<CreateQrCodeAsync>d__4::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass7_0/<<CreateQrCodeAsync>b__0>d::MoveNext() + - - - + + - + - - Yoti.Auth.DigitalIdentityClientEngine/<CreateShareSessionAsync>d__2 + + Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass9_0/<<GetQrCodeAsync>b__0>d - + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<CreateShareSessionAsync>d__2::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<>c__DisplayClass9_0/<<GetQrCodeAsync>b__0>d::MoveNext() + - - - + + - + - - Yoti.Auth.DigitalIdentityClientEngine/<GetQrCodeAsync>d__5 + + Yoti.Auth.DigitalIdentityClientEngine/<CreateQrCodeAsync>d__7 - + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetQrCodeAsync>d__5::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<CreateQrCodeAsync>d__7::MoveNext() + - - - + + + + - + - - Yoti.Auth.DigitalIdentityClientEngine/<GetSession>d__6 + + Yoti.Auth.DigitalIdentityClientEngine/<CreateShareSessionAsync>d__3 - + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetSession>d__6::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<CreateShareSessionAsync>d__3::MoveNext() + - - - + + + + - + - - Yoti.Auth.DigitalIdentityClientEngine/<GetShareReceipt>d__3 + + Yoti.Auth.DigitalIdentityClientEngine/<GetQrCodeAsync>d__9 - - + + - System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetShareReceipt>d__3::MoveNext() - + System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetQrCodeAsync>d__9::MoveNext() + + + + + + + + + + + + + + + Yoti.Auth.DigitalIdentityClientEngine/<GetSession>d__11 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetSession>d__11::MoveNext() + - - - + + + + - + - + + Yoti.Auth.DigitalIdentityClientEngine/<GetShareReceipt>d__5 + + + + + System.Void Yoti.Auth.DigitalIdentityClientEngine/<GetShareReceipt>d__5::MoveNext() + + + + + + + + + + + + + + Yoti.Auth.MediaValue - + System.String Yoti.Auth.MediaValue::GetMIMEType() - + - + + + - + - + System.Byte[] Yoti.Auth.MediaValue::GetContent() - + - + + + - + - + System.String Yoti.Auth.MediaValue::GetBase64URI() - + - + + + - + - + System.Void Yoti.Auth.MediaValue::.ctor(System.String,System.Byte[]) - + - - - - + + + + + - + - + Yoti.Auth.Validation - - + + System.Void Yoti.Auth.Validation::IsNull(System.Object,System.String) - + - - - + + + + + - - + + - + - + System.Void Yoti.Auth.Validation::NotNull(System.Object,System.String) - + - - - + + + + + - - + + - + - + System.Void Yoti.Auth.Validation::NotNullOrEmpty(System.String,System.String) - + - - - + + + + + - - + + - + - + System.Void Yoti.Auth.Validation::NotNullOrWhiteSpace(System.String,System.String) - + - - - + + + + + - - + + - + - + System.Void Yoti.Auth.Validation::NotGreaterThan(T,T,System.String) - + - - - + + + + - - + + - + - + System.Void Yoti.Auth.Validation::NotLessThan(T,T,System.String) - + - - - + + + + - - + + - + - + System.Void Yoti.Auth.Validation::WithinRange(T,T,T,System.String) - + - - - + + + + - + - - + + System.Void Yoti.Auth.Validation::CollectionNotEmpty(System.Collections.ICollection,System.String) - + - - - - + + + + + - - + + - + - + System.Void Yoti.Auth.Validation::IsNotDefault(System.Object,System.String) - + - - - - + + + + + - - + + - + - + System.Boolean Yoti.Auth.Validation::IsDefault(System.Object) - + - - - - - - + + + + + + + + - - - - + + + + - + - + Yoti.Auth.YotiClient System.Uri Yoti.Auth.YotiClient::get_ApiUri() - + - + - + - + Yoti.Auth.ActivityDetails Yoti.Auth.YotiClient::GetActivityDetails(System.String) - + - - + + + + - + - - + + Yoti.Auth.Aml.AmlResult Yoti.Auth.YotiClient::PerformAmlCheck(Yoti.Auth.Aml.IAmlProfile) - + - - + + + + - + - - + + Yoti.Auth.ShareUrl.ShareUrlResult Yoti.Auth.YotiClient::CreateShareUrl(Yoti.Auth.ShareUrl.DynamicScenario) - + - - + + + + - + - + System.Void Yoti.Auth.YotiClient::SetYotiApiUri() - + - - - - + + + + + + + + + - - + + - + - + Yoti.Auth.YotiClient Yoti.Auth.YotiClient::OverrideApiUri(System.Uri) - + - - + + + + - + - + System.Void Yoti.Auth.YotiClient::.ctor(System.String,System.IO.StreamReader) - + - - + + + - + - + System.Void Yoti.Auth.YotiClient::.ctor(System.Net.Http.HttpClient,System.String,System.IO.StreamReader) - + - - + + + - + - + System.Void Yoti.Auth.YotiClient::.ctor(System.Net.Http.HttpClient,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - - - - - - - + + + + + + + + + - + - + Yoti.Auth.YotiClient/<CreateShareUrlAsync>d__15 - - + + System.Void Yoti.Auth.YotiClient/<CreateShareUrlAsync>d__15::MoveNext() - + - - + + + - + - + Yoti.Auth.YotiClient/<GetActivityDetailsAsync>d__11 - + System.Void Yoti.Auth.YotiClient/<GetActivityDetailsAsync>d__11::MoveNext() - + - - + + + - + - + Yoti.Auth.YotiClient/<PerformAmlCheckAsync>d__13 - - + + System.Void Yoti.Auth.YotiClient/<PerformAmlCheckAsync>d__13::MoveNext() - + - - + + + - + - + Yoti.Auth.YotiClientEngine - - + + System.Threading.Tasks.Task`1<Yoti.Auth.Aml.AmlResult> Yoti.Auth.YotiClientEngine::PerformAmlCheckAsync(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Uri,Yoti.Auth.Aml.IAmlProfile) - + - - - - - + + + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.YotiClientEngine::.ctor(System.Net.Http.HttpClient) - + - - - + + + + - + @@ -1766,14 +1928,14 @@ System.Void Yoti.Auth.YotiClientEngine/<>c__DisplayClass4_0/<<PerformAmlCheckInternalAsync>b__0>d::MoveNext() - + - - - + + + - + @@ -1785,894 +1947,1068 @@ System.Void Yoti.Auth.YotiClientEngine/<>c__DisplayClass5_0/<<CreateShareURLAsync>b__0>d::MoveNext() - + - - + + - + - + Yoti.Auth.YotiClientEngine/<CreateShareURLAsync>d__5 - + System.Void Yoti.Auth.YotiClientEngine/<CreateShareURLAsync>d__5::MoveNext() - + - - - + + + + - + - + Yoti.Auth.YotiClientEngine/<GetActivityDetailsAsync>d__2 - - + + System.Void Yoti.Auth.YotiClientEngine/<GetActivityDetailsAsync>d__2::MoveNext() - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + + - + - + Yoti.Auth.YotiClientEngine/<PerformAmlCheckInternalAsync>d__4 - + System.Void Yoti.Auth.YotiClientEngine/<PerformAmlCheckInternalAsync>d__4::MoveNext() - + - - - - - + + + + + + - + - + Yoti.Auth.Web.HeadersFactory - + System.Net.Http.HttpRequestMessage Yoti.Auth.Web.HeadersFactory::AddHeaders(System.Net.Http.HttpRequestMessage,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Net.Http.HttpMethod,System.String,System.Byte[]) - + - - - + + + + + - + - + System.Net.Http.HttpRequestMessage Yoti.Auth.Web.HeadersFactory::PutHeaders(System.Net.Http.HttpRequestMessage,System.String,System.String) - + - - - - + + + + + + - + - + Yoti.Auth.Web.Request System.Net.Http.HttpRequestMessage Yoti.Auth.Web.Request::get_RequestMessage() - + - + - + - + System.Void Yoti.Auth.Web.Request::.ctor(System.Net.Http.HttpRequestMessage) - + - - - + + + + - + - + Yoti.Auth.Web.Request/<Execute>d__5 - + System.Void Yoti.Auth.Web.Request/<Execute>d__5::MoveNext() - + - - - + + + + - + - + Yoti.Auth.Web.RequestBuilder - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithBaseUri(System.Uri) - + - - - + + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithEndpoint(System.String) - + - - - - - + + + + + + + - - + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithQueryParam(System.String,System.String) - + - - + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithStreamReader(System.IO.StreamReader) - + - - + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithKeyPair(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) - + - - + + + + - + - + - Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithHeader(System.String,System.String) - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithAuthStrategy(Yoti.Auth.CentralAuth.IAuthStrategy) + - - + + + + - + - + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithHeader(System.String,System.String) + + + + + + + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithContentHeader(System.String,System.String) - + - - + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithHttpMethod(System.Net.Http.HttpMethod) - + - - + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithContent(System.Byte[]) - + - - - + + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithMultipartBoundary(System.String) - + - - - - + + + + + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.Web.RequestBuilder::WithMultipartBinaryContent(System.String,System.Byte[],System.String,System.String) - + - - - - - - - - - + + + + + + + + + + + - + - - + + Yoti.Auth.Web.Request Yoti.Auth.Web.RequestBuilder::Build() - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + - + - + System.Uri Yoti.Auth.Web.RequestBuilder::GenerateRequestUri(System.String) - + - - + + + + - + - + System.Void Yoti.Auth.Web.RequestBuilder::AddCustomHeaders(System.Net.Http.HttpRequestMessage) - + - - - + + + + + + - - + + - + - + System.Void Yoti.Auth.Web.RequestBuilder::AddCustomContentHeaders(System.Net.Http.HttpRequestMessage) - + - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.Web.RequestBuilder::AddQueryParametersToEndpoint() - + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.Web.RequestBuilder::AddQueryParametersWithoutNonce() + - - - - - - + + + + + + + + + + + + + + + - - - - + + + + + + + + - + - + System.Object Yoti.Auth.Web.RequestBuilder::GetTimestamp() - + - - + + + + - + - + System.Void Yoti.Auth.Web.RequestBuilder::.ctor() - + - - - - - + + + + + + - + - + Yoti.Auth.Web.Response System.Boolean Yoti.Auth.Web.Response::get_Success() - + - + - + System.Int32 Yoti.Auth.Web.Response::get_StatusCode() - + - + - + System.String Yoti.Auth.Web.Response::get_Content() - + - + - + System.String Yoti.Auth.Web.Response::get_ReasonPhrase() - + - + - + - + System.Void Yoti.Auth.Web.Response::CreateYotiExceptionFromStatusCode(System.Net.Http.HttpResponseMessage) - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + Yoti.Auth.Web.SignedMessageFactory - + System.String Yoti.Auth.Web.SignedMessageFactory::SignMessage(System.Net.Http.HttpMethod,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Byte[]) - + - - - - - - - - + + + + + + + + + + + - - - - + + + + - + - + Yoti.Auth.Verifications.AgeVerification - + System.Int32 Yoti.Auth.Verifications.AgeVerification::Age() - + - + + + - + - + System.String Yoti.Auth.Verifications.AgeVerification::CheckType() - + - + + + - + - + System.Boolean Yoti.Auth.Verifications.AgeVerification::Result() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Verifications.AgeVerification::Attribute() - + - + + + - + - + System.Void Yoti.Auth.Verifications.AgeVerification::.ctor(Yoti.Auth.Attribute.YotiAttribute`1<System.String>) - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + - + - + Yoti.Auth.Verifications.AgeVerificationParser - + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Verifications.AgeVerification> Yoti.Auth.Verifications.AgeVerificationParser::FindAllAgeVerifications() - + - + + + - + - + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Verifications.AgeVerificationParser::FindAgeUnderVerification(System.Int32) - + - - - + + + + + - - + + - + - + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Verifications.AgeVerificationParser::FindAgeOverVerification(System.Int32) - + - - - + + + + + - - + + - + - + System.Collections.Generic.Dictionary`2<System.String,Yoti.Auth.Verifications.AgeVerification> Yoti.Auth.Verifications.AgeVerificationParser::FindVerifications(System.String,Yoti.Auth.Profile.IBaseProfile) - + - - - - + + + + + + + + - - + + - + - + System.Void Yoti.Auth.Verifications.AgeVerificationParser::.ctor(Yoti.Auth.Profile.IBaseProfile) - + - - - - - - + + + + + + + - + - + Yoti.Auth.ShareUrl.DynamicScenario - + System.String Yoti.Auth.ShareUrl.DynamicScenario::get_CallbackEndpoint() - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicy Yoti.Auth.ShareUrl.DynamicScenario::get_DynamicPolicy() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Extensions.BaseExtension> Yoti.Auth.ShareUrl.DynamicScenario::get_Extensions() - + - + + + - + - + System.Object Yoti.Auth.ShareUrl.DynamicScenario::get_Subject() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.DynamicScenario::.ctor(System.String,Yoti.Auth.ShareUrl.Policy.DynamicPolicy,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Extensions.BaseExtension>,System.Object) - + - - - - - - + + + + + + + - - + + - + - + Yoti.Auth.ShareUrl.DynamicScenarioBuilder - + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithCallbackEndpoint(System.String) - + - - + + + + - + - + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithPolicy(Yoti.Auth.ShareUrl.Policy.DynamicPolicy) - + - - + + + + - + - + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithExtension(Yoti.Auth.ShareUrl.Extensions.BaseExtension) - + - - + + + + - + - + Yoti.Auth.ShareUrl.DynamicScenarioBuilder Yoti.Auth.ShareUrl.DynamicScenarioBuilder::WithSubject(System.Object) - + - - + + + + - + - + Yoti.Auth.ShareUrl.DynamicScenario Yoti.Auth.ShareUrl.DynamicScenarioBuilder::Build() - + - + + + - + System.Void Yoti.Auth.ShareUrl.DynamicScenarioBuilder::.ctor() - + - + - + @@ -2684,10345 +3020,11457 @@ Yoti.Auth.ShareUrl.ShareUrlResult Yoti.Auth.ShareUrl.DynamicSharingService/<>c__DisplayClass0_0::<CreateShareURL>b__0() - + - + - + - + Yoti.Auth.ShareUrl.DynamicSharingService/<CreateShareURL>d__0 - - + + System.Void Yoti.Auth.ShareUrl.DynamicSharingService/<CreateShareURL>d__0::MoveNext() - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - + Yoti.Auth.ShareUrl.ShareUrlResult - + System.Uri Yoti.Auth.ShareUrl.ShareUrlResult::get_Url() - + - + + + - + - + System.String Yoti.Auth.ShareUrl.ShareUrlResult::get_RefId() - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.Constraint System.String Yoti.Auth.ShareUrl.Policy.Constraint::get_ConstraintType() - + - + - + - + System.Void Yoti.Auth.ShareUrl.Policy.Constraint::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicy - + System.Collections.Generic.ICollection`1<Yoti.Auth.ShareUrl.Policy.WantedAttribute> Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_WantedAttributes() - + - + + + - + - + System.Collections.Generic.HashSet`1<System.Int32> Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_WantedAuthTypes() - + - + + + - + - + System.Boolean Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_WantedRememberMeId() - + - + + + - + - + System.Object Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_IdentityProfileRequirements() - + - + + + - + - + System.Object Yoti.Auth.ShareUrl.Policy.DynamicPolicy::get_AdvancedIdentityProfileRequirements() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.Policy.DynamicPolicy::.ctor(System.Collections.Generic.ICollection`1<Yoti.Auth.ShareUrl.Policy.WantedAttribute>,System.Collections.Generic.HashSet`1<System.Int32>,System.Boolean,System.Object,System.Object) - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithWantedAttribute(Yoti.Auth.ShareUrl.Policy.WantedAttribute) - + - - - - - - + + + + + + + + + + - - - - - - + + + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithWantedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - - - - - - + + + + + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithFamilyName(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithGivenNames(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithFullName(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithDateOfBirth(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAgeOver(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAgeUnder(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAgeDerivedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - - - - - - + + + + + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithGender(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithStructuredPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithNationality(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithPhoneNumber(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithSelfie(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithEmail(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithDocumentDetails(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithDocumentImages(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithSelfieAuthentication(System.Boolean) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithPinAuthentication(System.Boolean) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAuthType(System.Int32,System.Boolean) - + - - - - - + + + + + + + + - - + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithRememberMeId(System.Boolean) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithIdentityProfileRequirements(System.Object) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::WithAdvancedIdentityProfileRequirements(System.Object) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.DynamicPolicy Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::Build() - + - + + + - + System.Void Yoti.Auth.ShareUrl.Policy.DynamicPolicyBuilder::.ctor() - + - - + + - + - + Yoti.Auth.ShareUrl.Policy.PreferredSources System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.WantedAnchor> Yoti.Auth.ShareUrl.Policy.PreferredSources::get_WantedAnchors() - + - + - + System.Boolean Yoti.Auth.ShareUrl.Policy.PreferredSources::get_SoftPreference() - + - + - + - + System.Void Yoti.Auth.ShareUrl.Policy.PreferredSources::.ctor(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.WantedAnchor>,System.Boolean) - + - - - - + + + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraint Yoti.Auth.ShareUrl.Policy.PreferredSources Yoti.Auth.ShareUrl.Policy.SourceConstraint::get_PreferredSources() - + - + - + - + System.Void Yoti.Auth.ShareUrl.Policy.SourceConstraint::.ctor(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.WantedAnchor>,System.Boolean) - + - - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithAnchor(Yoti.Auth.ShareUrl.Policy.WantedAnchor) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithSoftPreference(System.Boolean) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithAnchorByValue(System.String,System.String) - + - - - - - - + + + + + + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithPassport(System.String) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithDrivingLicense(System.String) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithNationalId(System.String) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::WithPasscard(System.String) - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.SourceConstraint Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::Build() - + - + + + - + System.Void Yoti.Auth.ShareUrl.Policy.SourceConstraintBuilder::.ctor() - + - + - + - + Yoti.Auth.ShareUrl.Policy.WantedAnchor System.String Yoti.Auth.ShareUrl.Policy.WantedAnchor::get_Name() - + - + - + System.String Yoti.Auth.ShareUrl.Policy.WantedAnchor::get_SubType() - + - + - + - + System.Void Yoti.Auth.ShareUrl.Policy.WantedAnchor::.ctor(System.String,System.String) - + - - - - + + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder - + Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder::WithValue(System.String) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder::WithSubType(System.String) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAnchor Yoti.Auth.ShareUrl.Policy.WantedAnchorBuilder::Build() - + - + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttribute System.String Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Name() - + - + - + System.String Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Derivation() - + - + - + System.Nullable`1<System.Boolean> Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Optional() - + - + - + System.Nullable`1<System.Boolean> Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_AcceptSelfAsserted() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint> Yoti.Auth.ShareUrl.Policy.WantedAttribute::get_Constraints() - + - + - + - + System.Void Yoti.Auth.ShareUrl.Policy.WantedAttribute::.ctor(System.String,System.String,System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>) - + - - - - - - - + + + + + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithName(System.String) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithOptional(System.Boolean) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithDerivation(System.String) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithConstraint(Yoti.Auth.ShareUrl.Policy.Constraint) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithConstraints(System.Collections.Generic.List`1<Yoti.Auth.ShareUrl.Policy.Constraint>) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::WithAcceptSelfAsserted(System.Boolean) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Policy.WantedAttribute Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::Build() - + - - + + + + - + System.Void Yoti.Auth.ShareUrl.Policy.WantedAttributeBuilder::.ctor() - + - + - + - + Yoti.Auth.ShareUrl.Extensions.BaseExtension - + System.String Yoti.Auth.ShareUrl.Extensions.BaseExtension::get_ExtensionType() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.Extensions.BaseExtension::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.DeviceLocation - + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_Latitude() - + - + + + - + - + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_Longitude() - + - + + + - + - + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_Radius() - + - + + + - + - + System.Double Yoti.Auth.ShareUrl.Extensions.DeviceLocation::get_MaxUncertainty() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.Extensions.DeviceLocation::.ctor(System.Double,System.Double,System.Double,System.Double) - + - - - - - - + + + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.Extension`1 - + T Yoti.Auth.ShareUrl.Extensions.Extension`1::get_Content() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.Extensions.Extension`1::.ctor(System.String,T) - + - - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1 - + Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1<T> Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1::WithType(System.String) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1<T> Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1::WithContent(T) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.Extension`1<T> Yoti.Auth.ShareUrl.Extensions.ExtensionBuilder`1::Build() - + - + + + - + - + Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent - + Yoti.Auth.ShareUrl.Extensions.DeviceLocation Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent::get_ExpectedDeviceLocation() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent::.ctor(System.Double,System.Double,System.Double,System.Double) - + - - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder - + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithLatitude(System.Double) - + - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithLongitude(System.Double) - + - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithRadius(System.Double) - + - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::WithMaxUncertainty(System.Double) - + - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.Extension`1<Yoti.Auth.ShareUrl.Extensions.LocationConstraintContent> Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::Build() - + - - + + + + - + System.Void Yoti.Auth.ShareUrl.Extensions.LocationConstraintExtensionBuilder::.ctor() - + - - + + - + - + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent::get_Definitions() - + - + - + - + System.String Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent::get_ExpiryDate() - + - + + + - + - + System.Void Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent::.ctor(System.DateTime,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) - + - - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder - + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::WithExpiryDate(System.DateTime) - + - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinition(System.String) - + - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinitions(System.Collections.Generic.List`1<System.String>) - + - - - - - - + + + + + + + + + + - - + + - + - + Yoti.Auth.ShareUrl.Extensions.Extension`1<Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeContent> Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::Build() - + - - - - + + + + + + - + - + System.Void Yoti.Auth.ShareUrl.Extensions.ThirdPartyAttributeExtensionBuilder::.ctor() - + - - - + + + + - + - + Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1 - + Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1<T> Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1::WithContent(T) - + - - - + + + + + - + - + Yoti.Auth.ShareUrl.Extensions.Extension`1<T> Yoti.Auth.ShareUrl.Extensions.TransactionalFlowExtensionBuilder`1::Build() - + - + + + - + - + Yoti.Auth.Share.DataEntryConverter - + System.Object Yoti.Auth.Share.DataEntryConverter::ConvertDataEntry(Yoti.Auth.ProtoBuf.Share.DataEntry) - + - - - - - + + + + + + + + + - + - + System.Object Yoti.Auth.Share.DataEntryConverter::ConvertValue(Yoti.Auth.ProtoBuf.Share.DataEntry/Types/Type,Google.Protobuf.ByteString) - + - - - - + + + + + + + - - + + - + - + Yoti.Auth.Share.ExtraData Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails Yoti.Auth.Share.ExtraData::get_AttributeIssuanceDetails() - + - + - + - + System.Collections.ObjectModel.ReadOnlyCollection`1<T> Yoti.Auth.Share.ExtraData::FilterForType(System.Collections.Generic.List`1<System.Object>) - + - - - - - + + + + + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.Share.ExtraData::.ctor() - + - - - + + + + - + - + System.Void Yoti.Auth.Share.ExtraData::.ctor(System.Collections.Generic.List`1<System.Object>) - + - - - - - - - + + + + + + + + - - + + - + - + Yoti.Auth.Share.ExtraDataConverter - + Yoti.Auth.Share.ExtraData Yoti.Auth.Share.ExtraDataConverter::ParseExtraDataProto(System.Byte[]) - + - - + + + + - + - + System.Collections.Generic.List`1<System.Object> Yoti.Auth.Share.ExtraDataConverter::ParseDataEntries(System.Byte[]) - + - - - - - - + + + + + + + + + + - - + + - + - + Yoti.Auth.Share.ThirdParty.AttributeDefinition System.String Yoti.Auth.Share.ThirdParty.AttributeDefinition::get_Name() - + - + - + - + System.Void Yoti.Auth.Share.ThirdParty.AttributeDefinition::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails System.Nullable`1<System.DateTime> Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::get_ExpiryDate() - + - + - + System.String Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::get_Token() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::get_IssuingAttributes() - + - + - + - + System.Void Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails::.ctor(System.String,System.Nullable`1<System.DateTime>,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) - + - - - - - - - + + + + + + + + - - + + - + - + Yoti.Auth.Share.ThirdParty.IssuingAttributes System.Nullable`1<System.DateTime> Yoti.Auth.Share.ThirdParty.IssuingAttributes::get_ExpiryDate() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.Share.ThirdParty.IssuingAttributes::get_AttributeDefinitions() - + - + - + - + System.Void Yoti.Auth.Share.ThirdParty.IssuingAttributes::.ctor(System.Nullable`1<System.DateTime>,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) - + - - - - + + + + + - + - + Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter - + Yoti.Auth.Share.ThirdParty.AttributeIssuanceDetails Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseThirdPartyAttribute(System.Byte[]) - + - - - - - - - - - + + + + + + + + + + + - - + + - + - + Yoti.Auth.Share.ThirdParty.IssuingAttributes Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseIssuingAttributes(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) - + - - - - + + + + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseDefinitions(Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Share.Definition>) - + - - - - + + + + + + + + - - + + - + - - + + System.Nullable`1<System.DateTime> Yoti.Auth.Share.ThirdParty.ThirdPartyAttributeConverter::ParseExpiryDateTime(System.String) - + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - + + + + - + - + Yoti.Auth.ProtoBuf.Share.DataEntryReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.DataEntryReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntryReflection::.cctor() - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Share.DataEntry Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.DataEntry> Yoti.Auth.ProtoBuf.Share.DataEntry::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.DataEntry::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.DataEntry::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.DataEntry Yoti.Auth.ProtoBuf.Share.DataEntry::Clone() - + - + + + - + Yoti.Auth.ProtoBuf.Share.DataEntry/Types/Type Yoti.Auth.ProtoBuf.Share.DataEntry::get_Type() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::set_Type(Yoti.Auth.ProtoBuf.Share.DataEntry/Types/Type) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Share.DataEntry::get_Value() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::set_Value(Google.Protobuf.ByteString) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.DataEntry::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.DataEntry::Equals(Yoti.Auth.ProtoBuf.Share.DataEntry) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.DataEntry::GetHashCode() - + - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Share.DataEntry::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.DataEntry::CalculateSize() - + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::MergeFrom(Yoti.Auth.ProtoBuf.Share.DataEntry) - + - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::.ctor() - + - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::.ctor(Yoti.Auth.ProtoBuf.Share.DataEntry) - + - - - - - + + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.DataEntry::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.ExtraDataReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.ExtraDataReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraDataReflection::.cctor() - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Share.ExtraData Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.ExtraData> Yoti.Auth.ProtoBuf.Share.ExtraData::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ExtraData::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ExtraData::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.ExtraData Yoti.Auth.ProtoBuf.Share.ExtraData::Clone() - + - + + + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Share.DataEntry> Yoti.Auth.ProtoBuf.Share.ExtraData::get_List() - + - + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.ExtraData::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.ExtraData::Equals(Yoti.Auth.ProtoBuf.Share.ExtraData) - + - - - - - - + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.ExtraData::GetHashCode() - + - - - - - + + + + + + + + - - + + - + - + System.String Yoti.Auth.ProtoBuf.Share.ExtraData::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - + + + + + + - - + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.ExtraData::CalculateSize() - + - - - - - + + + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::MergeFrom(Yoti.Auth.ProtoBuf.Share.ExtraData) - + - - - - - + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - + + + + + + + + + + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::.ctor(Yoti.Auth.ProtoBuf.Share.ExtraData) - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.ExtraData::.cctor() - + - - - + + + - + - + Yoti.Auth.ProtoBuf.Share.IssuingAttributesReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.IssuingAttributesReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributesReflection::.cctor() - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Share.IssuingAttributes Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.IssuingAttributes> Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.IssuingAttributes::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.IssuingAttributes Yoti.Auth.ProtoBuf.Share.IssuingAttributes::Clone() - + - + + + - + System.String Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_ExpiryDate() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::set_ExpiryDate(System.String) - + - - + + + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Share.Definition> Yoti.Auth.ProtoBuf.Share.IssuingAttributes::get_Definitions() - + - + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.IssuingAttributes::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.IssuingAttributes::Equals(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.IssuingAttributes::GetHashCode() - + - - - - - - + + + + + + + + + - - - - + + + + - + - + System.String Yoti.Auth.ProtoBuf.Share.IssuingAttributes::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - + + + + + + + + + + - - - - + + + + - + - - + + System.Int32 Yoti.Auth.ProtoBuf.Share.IssuingAttributes::CalculateSize() - + - - - - - - - + + + + + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::MergeFrom(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) - + - - - - - - - + + + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::.ctor() - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::.ctor(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) - + - - - - - + + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.IssuingAttributes::.cctor() - + - - - + + + - + - + Yoti.Auth.ProtoBuf.Share.Definition Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.Definition> Yoti.Auth.ProtoBuf.Share.Definition::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.Definition::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.Definition::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.Definition Yoti.Auth.ProtoBuf.Share.Definition::Clone() - + - + + + - + System.String Yoti.Auth.ProtoBuf.Share.Definition::get_Name() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::set_Name(System.String) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.Definition::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.Definition::Equals(Yoti.Auth.ProtoBuf.Share.Definition) - + - - - - - - + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.Definition::GetHashCode() - + - - - - - + + + + + + + + - - - - + + + + - + - + System.String Yoti.Auth.ProtoBuf.Share.Definition::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - + + + + + + + + + - - - - + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.Definition::CalculateSize() - + - - - - - - + + + + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::MergeFrom(Yoti.Auth.ProtoBuf.Share.Definition) - + - - - - - - + + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.Definition::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - + + + + + + + + + + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::.ctor(Yoti.Auth.ProtoBuf.Share.Definition) - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.Definition::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.ThirdPartyAttributeReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Share.ThirdPartyAttributeReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttributeReflection::.cctor() - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute> Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::Clone() - + - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_IssuanceToken() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::set_IssuanceToken(Google.Protobuf.ByteString) - + - - + + + - + Yoti.Auth.ProtoBuf.Share.IssuingAttributes Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::get_IssuingAttributes() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::set_IssuingAttributes(Yoti.Auth.ProtoBuf.Share.IssuingAttributes) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::Equals(Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::GetHashCode() - + - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::CalculateSize() - + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::MergeFrom(Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute) - + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::.ctor(Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute) - + - - - - - + + + + + - - + + - + System.Void Yoti.Auth.ProtoBuf.Share.ThirdPartyAttribute::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Common.EncryptedDataReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Common.EncryptedDataReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedDataReflection::.cctor() - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Common.EncryptedData Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Common.EncryptedData> Yoti.Auth.ProtoBuf.Common.EncryptedData::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.EncryptedData::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.EncryptedData::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Common.EncryptedData Yoti.Auth.ProtoBuf.Common.EncryptedData::Clone() - + - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.EncryptedData::get_Iv() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::set_Iv(Google.Protobuf.ByteString) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.EncryptedData::get_CipherText() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::set_CipherText(Google.Protobuf.ByteString) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Common.EncryptedData::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Common.EncryptedData::Equals(Yoti.Auth.ProtoBuf.Common.EncryptedData) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Common.EncryptedData::GetHashCode() - + - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Common.EncryptedData::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Common.EncryptedData::CalculateSize() - + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::MergeFrom(Yoti.Auth.ProtoBuf.Common.EncryptedData) - + - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::.ctor() - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::.ctor(Yoti.Auth.ProtoBuf.Common.EncryptedData) - + - - - - - + + + + + - + System.Void Yoti.Auth.ProtoBuf.Common.EncryptedData::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Common.SignedTimestampReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Common.SignedTimestampReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestampReflection::.cctor() - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Common.SignedTimestamp Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Common.SignedTimestamp> Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Common.SignedTimestamp::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Common.SignedTimestamp Yoti.Auth.ProtoBuf.Common.SignedTimestamp::Clone() - + - + + + - + System.Int32 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Version() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_Version(System.Int32) - + - - + + + - + System.UInt64 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_Timestamp() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_Timestamp(System.UInt64) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_MessageDigest() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_MessageDigest(Google.Protobuf.ByteString) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_ChainDigest() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_ChainDigest(Google.Protobuf.ByteString) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_ChainDigestSkip1() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_ChainDigestSkip1(Google.Protobuf.ByteString) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Common.SignedTimestamp::get_ChainDigestSkip2() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::set_ChainDigestSkip2(Google.Protobuf.ByteString) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Common.SignedTimestamp::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Common.SignedTimestamp::Equals(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) - + - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::GetHashCode() - + - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Common.SignedTimestamp::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Common.SignedTimestamp::CalculateSize() - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::MergeFrom(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::.ctor() - + - - - - - - + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::.ctor(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) - + - - - - - - - - - + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Common.SignedTimestamp::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeReflection::.cctor() - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.Attribute Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.Attribute> Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Attribute::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.Attribute Yoti.Auth.ProtoBuf.Attribute.Attribute::Clone() - + - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Name() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_Name(System.String) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Value() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_Value(Google.Protobuf.ByteString) - + - - + + + - + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.ProtoBuf.Attribute.Attribute::get_ContentType() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_ContentType(Yoti.Auth.ProtoBuf.Attribute.ContentType) - + - - + + + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.Anchor> Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Anchors() - + - + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.UserMetadata> Yoti.Auth.ProtoBuf.Attribute.Attribute::get_UserMetadata() - + - + - + Yoti.Auth.ProtoBuf.Attribute.Metadata Yoti.Auth.ProtoBuf.Attribute.Attribute::get_Metadata() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_Metadata(Yoti.Auth.ProtoBuf.Attribute.Metadata) - + - - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.Attribute::get_EphemeralId() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::set_EphemeralId(System.String) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Attribute::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Attribute::Equals(Yoti.Auth.ProtoBuf.Attribute.Attribute) - + - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Attribute::GetHashCode() - + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.Attribute::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Attribute::CalculateSize() - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.Attribute) - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::.ctor() - + - - - - - - - + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::.ctor(Yoti.Auth.ProtoBuf.Attribute.Attribute) - + - - - - - - - - - - + + + + + + + + + + - - + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Attribute::.cctor() - + - - - - - + + + + + - + - + Yoti.Auth.ProtoBuf.Attribute.Metadata Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.Metadata> Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Metadata::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.Metadata Yoti.Auth.ProtoBuf.Attribute.Metadata::Clone() - + - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.Metadata::get_SupersededTimeStamp() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_SupersededTimeStamp(System.String) - + - - + + + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Deletable() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_Deletable(System.Boolean) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Metadata::get_ReceiptId() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_ReceiptId(Google.Protobuf.ByteString) - + - - + + + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Revoked() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_Revoked(System.Boolean) - + - - + + + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::get_Locked() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::set_Locked(System.Boolean) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Metadata::Equals(Yoti.Auth.ProtoBuf.Attribute.Metadata) - + - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Metadata::GetHashCode() - + - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.Metadata::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Metadata::CalculateSize() - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.Metadata) - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::.ctor() - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::.ctor(Yoti.Auth.ProtoBuf.Attribute.Metadata) - + - - - - - - - - + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Metadata::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.Anchor Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.Anchor> Yoti.Auth.ProtoBuf.Attribute.Anchor::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Anchor::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.Anchor::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.Anchor Yoti.Auth.ProtoBuf.Attribute.Anchor::Clone() - + - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_ArtifactLink() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_ArtifactLink(Google.Protobuf.ByteString) - + - - + + + - + Google.Protobuf.Collections.RepeatedField`1<Google.Protobuf.ByteString> Yoti.Auth.ProtoBuf.Attribute.Anchor::get_OriginServerCerts() - + - + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_ArtifactSignature() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_ArtifactSignature(Google.Protobuf.ByteString) - + - - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.Anchor::get_SubType() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_SubType(System.String) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_Signature() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_Signature(Google.Protobuf.ByteString) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.Anchor::get_SignedTimeStamp() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_SignedTimeStamp(Google.Protobuf.ByteString) - + - - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.Anchor::get_AssociatedSource() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::set_AssociatedSource(System.String) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Anchor::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.Anchor::Equals(Yoti.Auth.ProtoBuf.Attribute.Anchor) - + - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Anchor::GetHashCode() - + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.Anchor::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.Anchor::CalculateSize() - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.Anchor) - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::.ctor() - + - - - - - - - - - + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::.ctor(Yoti.Auth.ProtoBuf.Attribute.Anchor) - + - - - - - - - - - - + + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.Anchor::.cctor() - + - - - + + + - + - + Yoti.Auth.ProtoBuf.Attribute.UserMetadata Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.UserMetadata> Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.UserMetadata::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.UserMetadata Yoti.Auth.ProtoBuf.Attribute.UserMetadata::Clone() - + - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Key() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::set_Key(System.String) - + - - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.UserMetadata::get_Value() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::set_Value(System.String) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.UserMetadata::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.UserMetadata::Equals(Yoti.Auth.ProtoBuf.Attribute.UserMetadata) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.UserMetadata::GetHashCode() - + - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.UserMetadata::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.UserMetadata::CalculateSize() - + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.UserMetadata) - + - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::.ctor() - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::.ctor(Yoti.Auth.ProtoBuf.Attribute.UserMetadata) - + - - - - - + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.UserMetadata::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.MultiValue Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.MultiValue> Yoti.Auth.ProtoBuf.Attribute.MultiValue::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.MultiValue Yoti.Auth.ProtoBuf.Attribute.MultiValue::Clone() - + - + + + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value> Yoti.Auth.ProtoBuf.Attribute.MultiValue::get_Values() - + - + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue::Equals(Yoti.Auth.ProtoBuf.Attribute.MultiValue) - + - - - - - - + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue::GetHashCode() - + - - - - - + + + + + + + + - - + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.MultiValue::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - + + + + + + - - + + - + - - + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue::CalculateSize() - + - - - - - + + + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.MultiValue) - + - - - - - + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - + + + + + + + + + + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::.ctor(Yoti.Auth.ProtoBuf.Attribute.MultiValue) - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue::.cctor() - + - - - + + + - + - + Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value> Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::Clone() - + - + + + - + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_ContentType() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::set_ContentType(Yoti.Auth.ProtoBuf.Attribute.ContentType) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::get_Data() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::set_Data(Google.Protobuf.ByteString) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::Equals(Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::GetHashCode() - + - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - - + + System.Int32 Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::CalculateSize() - + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value) - + - - - - - - - - + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::.ctor() - + - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::.ctor(Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value) - + - - - - - + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.MultiValue/Types/Value::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.ContentTypeReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.ContentTypeReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.ContentTypeReflection::.cctor() - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Attribute.ListReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.ListReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.ListReflection::.cctor() - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.ProtoBuf.Attribute.AttributeAndId Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeAndId> Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeAndId Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::Clone() - + - + + + - + Yoti.Auth.ProtoBuf.Attribute.Attribute Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_Attribute() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::set_Attribute(Yoti.Auth.ProtoBuf.Attribute.Attribute) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::get_AttributeId() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::set_AttributeId(Google.Protobuf.ByteString) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeAndId) - + - - - - - - - + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::GetHashCode() - + - - - - - - + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::CalculateSize() - + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeAndId) - + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeAndId) - + - - - - - + + + + + - - + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndId::.cctor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList> Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::Clone() - + - + + + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.AttributeAndId> Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::get_AttributeAndIdList_() - + - + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList) - + - - - - - - + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::GetHashCode() - + - - - - - + + + + + + + + - - + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - + + + + + + - - + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::CalculateSize() - + - - - - - + + + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList) - + - - - - - + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - + + + + + + + + + + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList) - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeAndIdList::.cctor() - + - - - + + + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeList Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeList> Yoti.Auth.ProtoBuf.Attribute.AttributeList::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeList::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeList::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeList Yoti.Auth.ProtoBuf.Attribute.AttributeList::Clone() - + - + + + - + Google.Protobuf.Collections.RepeatedField`1<Yoti.Auth.ProtoBuf.Attribute.Attribute> Yoti.Auth.ProtoBuf.Attribute.AttributeList::get_Attributes() - + - + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeList::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeList::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeList) - + - - - - - - + + + + + + + + - - - - - - + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeList::GetHashCode() - + - - - - - + + + + + + + + - - + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeList::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - + + + + + + - - + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeList::CalculateSize() - + - - - - - + + + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeList) - + - - - - - + + + + + + - - + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - - + + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - + + + + + + + + + + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::.ctor() - + - - - + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeList) - + - - - - + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeList::.cctor() - + - - - + + + - + - + Yoti.Auth.ProtoBuf.Attribute.SigningReflection Google.Protobuf.Reflection.FileDescriptor Yoti.Auth.ProtoBuf.Attribute.SigningReflection::get_Descriptor() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.SigningReflection::.cctor() - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeSigning Google.Protobuf.MessageParser`1<Yoti.Auth.ProtoBuf.Attribute.AttributeSigning> Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Parser() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Descriptor() - + - + - + Google.Protobuf.Reflection.MessageDescriptor Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::pb::Google.Protobuf.IMessage.get_Descriptor() - + - + - + - + Yoti.Auth.ProtoBuf.Attribute.AttributeSigning Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::Clone() - + - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Name() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_Name(System.String) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_Value() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_Value(Google.Protobuf.ByteString) - + - - + + + - + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_ContentType() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_ContentType(Yoti.Auth.ProtoBuf.Attribute.ContentType) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_ArtifactSignature() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_ArtifactSignature(Google.Protobuf.ByteString) - + - - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_SubType() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_SubType(System.String) - + - - + + + - + Google.Protobuf.ByteString Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_SignedTimeStamp() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_SignedTimeStamp(Google.Protobuf.ByteString) - + - - + + + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::get_AssociatedSource() - + - + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::set_AssociatedSource(System.String) - + - - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::Equals(System.Object) - + - + + + - + - + System.Boolean Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::Equals(Yoti.Auth.ProtoBuf.Attribute.AttributeSigning) - + - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::GetHashCode() - + - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + System.String Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::ToString() - + - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::WriteTo(Google.Protobuf.CodedOutputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::pb::Google.Protobuf.IBufferMessage.InternalWriteTo(Google.Protobuf.WriteContext&) - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + System.Int32 Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::CalculateSize() - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::MergeFrom(Yoti.Auth.ProtoBuf.Attribute.AttributeSigning) - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::MergeFrom(Google.Protobuf.CodedInputStream) - + - - + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::pb::Google.Protobuf.IBufferMessage.InternalMergeFrom(Google.Protobuf.ParseContext&) - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::.ctor() - + - - - - - - - - + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::.ctor(Yoti.Auth.ProtoBuf.Attribute.AttributeSigning) - + - - - - - - - - - - + + + + + + + + + + - + System.Void Yoti.Auth.ProtoBuf.Attribute.AttributeSigning::.cctor() - + - + - + - + Yoti.Auth.Properties.Resources - + System.Resources.ResourceManager Yoti.Auth.Properties.Resources::get_ResourceManager() - + - - - - + + + + + + + - - + + - + - + System.Globalization.CultureInfo Yoti.Auth.Properties.Resources::get_Culture() - + - + + + - + - + System.Void Yoti.Auth.Properties.Resources::set_Culture(System.Globalization.CultureInfo) - + - - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_DataEntryError() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_DataEntryParsingFail() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_DocDetailsMultipleConsecutiveSpaces() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_EmptyValueInvalid() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_EndpointMustBeginWithSlash() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_FormatMismatch() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_InvalidCastDateTime() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_InvalidDocumentDetails() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_IssuanceTokenMissing() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_NullHTTPContent() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_NullOrEmptyResponseContent() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_NullParsedResponse() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_UnsupportedImageType() - + - + + + - + - + System.String Yoti.Auth.Properties.Resources::get_UseRelativePath() - + - + + + - + System.Void Yoti.Auth.Properties.Resources::.ctor() - + - - + + - + - + Yoti.Auth.Profile.ApplicationProfile - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.ApplicationProfile::get_Name() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.ApplicationProfile::get_URL() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<Yoti.Auth.Images.Image> Yoti.Auth.Profile.ApplicationProfile::get_Logo() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.ApplicationProfile::get_ReceiptBackgroundColor() - + - + + + - + - + System.Void Yoti.Auth.Profile.ApplicationProfile::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Profile.ApplicationProfile::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>>) - + - - + + + - + - + Yoti.Auth.Profile.BaseProfile System.Collections.Generic.Dictionary`2<System.String,Yoti.Auth.Attribute.BaseAttribute> Yoti.Auth.Profile.BaseProfile::get_Attributes() - + - + - + - + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Attribute.BaseAttribute> Yoti.Auth.Profile.BaseProfile::get_AttributeCollection() - + - - - - + + + + + + - + - + System.Void Yoti.Auth.Profile.BaseProfile::TryAddAttribute(Yoti.Auth.Attribute.BaseAttribute) - + - - - - + + + + + + + - - + + - + - + System.Void Yoti.Auth.Profile.BaseProfile::Add(Yoti.Auth.Attribute.YotiAttribute`1<T>) - + - - - - - - - - + + + + + + + + + + + + + - - + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<T> Yoti.Auth.Profile.BaseProfile::GetAttributeByName(System.String) - + - - - - + + + + + + + - - + + - + - + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Attribute.YotiAttribute`1<T>> Yoti.Auth.Profile.BaseProfile::GetAttributesByName(System.String) - + - - - - - + + + + + + + + + + + - - - - + + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<T> Yoti.Auth.Profile.BaseProfile::GetAttributeById(System.String) - + - - - - - - + + + + + + + + + + + + - - - - - - + + + + + + - + - - + + System.Collections.Generic.List`1<Yoti.Auth.Attribute.YotiAttribute`1<T>> Yoti.Auth.Profile.BaseProfile::FindAttributesStartingWith(System.String) - + - - - - - + + + + + + + - - - - + + + + - + - + System.Void Yoti.Auth.Profile.BaseProfile::.ctor() - + - - - - + + + + + - + - + System.Void Yoti.Auth.Profile.BaseProfile::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>>) - + - - - - - - - + + + + + + + + + + - - + + - + - + Yoti.Auth.Profile.YotiProfile - + Yoti.Auth.Attribute.YotiAttribute`1<Yoti.Auth.Images.Image> Yoti.Auth.Profile.YotiProfile::get_Selfie() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_FullName() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_GivenNames() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_FamilyName() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_MobileNumber() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_EmailAddress() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.DateTime> Yoti.Auth.Profile.YotiProfile::get_DateOfBirth() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_Address() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken>> Yoti.Auth.Profile.YotiProfile::get_StructuredPostalAddress() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_Gender() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.String> Yoti.Auth.Profile.YotiProfile::get_Nationality() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<Yoti.Auth.Document.DocumentDetails> Yoti.Auth.Profile.YotiProfile::get_DocumentDetails() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.Collections.Generic.List`1<Yoti.Auth.Images.Image>> Yoti.Auth.Profile.YotiProfile::get_DocumentImages() - + - + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1<System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken>> Yoti.Auth.Profile.YotiProfile::get_IdentityProfileReport() - + - + + + - + - + System.Collections.ObjectModel.ReadOnlyCollection`1<Yoti.Auth.Verifications.AgeVerification> Yoti.Auth.Profile.YotiProfile::get_AgeVerifications() - + - + + + - + - + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Profile.YotiProfile::FindAgeUnderVerification(System.Int32) - + - + + + - + - + Yoti.Auth.Verifications.AgeVerification Yoti.Auth.Profile.YotiProfile::FindAgeOverVerification(System.Int32) - + - + + + - + - + System.Void Yoti.Auth.Profile.YotiProfile::.ctor() - + - - - + + + + - + - + System.Void Yoti.Auth.Profile.YotiProfile::.ctor(Yoti.Auth.Profile.IBaseProfile) - + - - - + + + + - + - + System.Void Yoti.Auth.Profile.YotiProfile::.ctor(System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>>) - + - - - + + + + - + - + Yoti.Auth.Images.Image - + System.Void Yoti.Auth.Images.Image::.ctor(System.String,System.Byte[]) - + - - + + + - + - + Yoti.Auth.Images.JpegImage - + System.Void Yoti.Auth.Images.JpegImage::.ctor(System.Byte[]) - + - - + + + - + - + Yoti.Auth.Images.PngImage - + System.Void Yoti.Auth.Images.PngImage::.ctor(System.Byte[]) - + - - + + + - + - + Yoti.Auth.Exceptions.AmlException - + System.Void Yoti.Auth.Exceptions.AmlException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.AmlException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.AmlException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Exceptions.DigitalIdentityException - + System.Void Yoti.Auth.Exceptions.DigitalIdentityException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.DigitalIdentityException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.DigitalIdentityException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Exceptions.DocScanException - + System.Void Yoti.Auth.Exceptions.DocScanException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.DocScanException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.DocScanException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Exceptions.DynamicShareException - + System.Void Yoti.Auth.Exceptions.DynamicShareException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.DynamicShareException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.DynamicShareException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Exceptions.ExtraDataException - + System.Void Yoti.Auth.Exceptions.ExtraDataException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.ExtraDataException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.ExtraDataException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Exceptions.YotiException System.Net.Http.HttpResponseMessage Yoti.Auth.Exceptions.YotiException::get_HttpResponseMessage() - + - + - + - + System.Void Yoti.Auth.Exceptions.YotiException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.YotiException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.YotiException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Exceptions.YotiProfileException System.String Yoti.Auth.Exceptions.YotiProfileException::get_ResponseContent() - + - + - + System.String Yoti.Auth.Exceptions.YotiProfileException::get_ErrorCode() - + - + - + - + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor() - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor(System.String) - + - - + + + - + - + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor(System.String,System.String) - + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + System.Void Yoti.Auth.Exceptions.YotiProfileException::.ctor(System.String,System.Exception) - + - - + + + - + - + Yoti.Auth.Document.DocumentDetails System.String Yoti.Auth.Document.DocumentDetails::get_IssuingCountry() - + - + - + System.String Yoti.Auth.Document.DocumentDetails::get_DocumentNumber() - + - + - + System.Nullable`1<System.DateTime> Yoti.Auth.Document.DocumentDetails::get_ExpirationDate() - + - + - + System.String Yoti.Auth.Document.DocumentDetails::get_DocumentType() - + - + - + System.String Yoti.Auth.Document.DocumentDetails::get_IssuingAuthority() - + - + - + - + System.String Yoti.Auth.Document.DocumentDetails::ToString() - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Void Yoti.Auth.Document.DocumentDetails::.ctor(System.String,System.String,System.String,System.Nullable`1<System.DateTime>,System.String) - + - - - - - - - + + + + + + + + - + - + Yoti.Auth.Document.DocumentDetailsAttributeParser - + Yoti.Auth.Document.DocumentDetails Yoti.Auth.Document.DocumentDetailsAttributeParser::ParseFrom(System.String) - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.Nullable`1<System.DateTime> Yoti.Auth.Document.DocumentDetailsAttributeParser::GetDateSafely(System.String[],System.Int32) - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - + + + + - + - + System.String Yoti.Auth.Document.DocumentDetailsAttributeParser::GetSafely(System.String[],System.Int32) - + - - + + + + - - - - + + + + - + - + Yoti.Auth.Document.DocumentDetailsBuilder - + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithType(System.String) - + - - + + + + - + - + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithIssuingCountry(System.String) - + - - + + + + - + - + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithNumber(System.String) - + - - + + + + - + - + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithDate(System.Nullable`1<System.DateTime>) - + - - + + + + - + - + Yoti.Auth.Document.DocumentDetailsBuilder Yoti.Auth.Document.DocumentDetailsBuilder::WithAuthority(System.String) - + - - + + + + - + - + Yoti.Auth.Document.DocumentDetails Yoti.Auth.Document.DocumentDetailsBuilder::Build() - + - - - - + + + + + + - + - + System.Void Yoti.Auth.Document.DocumentDetailsBuilder::.ctor() - + - - + + + - + - + Yoti.Auth.DocScan.DocScanClient + + + + Yoti.Auth.DocScan.DocScanClient Yoti.Auth.DocScan.DocScanClient::WithAuthToken(System.String,System.String,System.Net.Http.HttpClient,System.Uri) + + + + + + + + + + + + + + + + + + - + Yoti.Auth.DocScan.Session.Create.CreateSessionResult Yoti.Auth.DocScan.DocScanClient::CreateSession(Yoti.Auth.DocScan.Session.Create.SessionSpecification) - + - + + + - + - + Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult Yoti.Auth.DocScan.DocScanClient::GetSession(System.String) - + - + + + - + - + System.Void Yoti.Auth.DocScan.DocScanClient::DeleteSession(System.String) - + - - + + + - + - + Yoti.Auth.MediaValue Yoti.Auth.DocScan.DocScanClient::GetMediaContent(System.String,System.String) - + - + + + - + - + System.Void Yoti.Auth.DocScan.DocScanClient::DeleteMediaContent(System.String,System.String) - + - - + + + - + - + Yoti.Auth.DocScan.Support.SupportedDocumentsResponse Yoti.Auth.DocScan.DocScanClient::GetSupportedDocuments(System.Boolean) - + - + + + - + - + Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse Yoti.Auth.DocScan.DocScanClient::CreateFaceCaptureResource(System.String,Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload) - + - + + + - + - + System.Void Yoti.Auth.DocScan.DocScanClient::UploadFaceCaptureImage(System.String,System.String,Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload) - + - - + + + - + - + Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse Yoti.Auth.DocScan.DocScanClient::GetSessionConfiguration(System.String) - + - + + + - + - + System.Void Yoti.Auth.DocScan.DocScanClient::.ctor(System.String,System.IO.StreamReader,System.Net.Http.HttpClient,System.Uri) - + - - + + + - + - + System.Void Yoti.Auth.DocScan.DocScanClient::.ctor(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Net.Http.HttpClient,System.Uri) - + - - - - - - - - - - + + + + + + + + + + + - - + + - + + + + + + System.Void Yoti.Auth.DocScan.DocScanClient::.ctor(System.String,Yoti.Auth.DocScan.DocScanService) + + + + + + + + + + + + - - Yoti.Auth.DocScan.DocScanClient/<CreateFaceCaptureResourceAsync>d__19 + + Yoti.Auth.DocScan.DocScanClient/<CreateFaceCaptureResourceAsync>d__21 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<CreateFaceCaptureResourceAsync>d__19::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<CreateFaceCaptureResourceAsync>d__21::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<CreateSessionAsync>d__6 + + Yoti.Auth.DocScan.DocScanClient/<CreateSessionAsync>d__8 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<CreateSessionAsync>d__6::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<CreateSessionAsync>d__8::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<DeleteMediaContentAsync>d__15 + + Yoti.Auth.DocScan.DocScanClient/<DeleteMediaContentAsync>d__17 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<DeleteMediaContentAsync>d__15::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<DeleteMediaContentAsync>d__17::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<DeleteSessionAsync>d__10 + + Yoti.Auth.DocScan.DocScanClient/<DeleteSessionAsync>d__12 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<DeleteSessionAsync>d__10::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<DeleteSessionAsync>d__12::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<GetMediaContentAsync>d__12 + + Yoti.Auth.DocScan.DocScanClient/<GetMediaContentAsync>d__14 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<GetMediaContentAsync>d__12::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<GetMediaContentAsync>d__14::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<GetSessionAsync>d__8 + + Yoti.Auth.DocScan.DocScanClient/<GetSessionAsync>d__10 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<GetSessionAsync>d__8::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<GetSessionAsync>d__10::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<GetSessionConfigurationAsync>d__23 + + Yoti.Auth.DocScan.DocScanClient/<GetSessionConfigurationAsync>d__25 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<GetSessionConfigurationAsync>d__23::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<GetSessionConfigurationAsync>d__25::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<GetSupportedDocumentsAsync>d__17 + + Yoti.Auth.DocScan.DocScanClient/<GetSupportedDocumentsAsync>d__19 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<GetSupportedDocumentsAsync>d__17::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<GetSupportedDocumentsAsync>d__19::MoveNext() + - - - + + + + - + - - Yoti.Auth.DocScan.DocScanClient/<UploadFaceCaptureImageAsync>d__21 + + Yoti.Auth.DocScan.DocScanClient/<UploadFaceCaptureImageAsync>d__23 - + - System.Void Yoti.Auth.DocScan.DocScanClient/<UploadFaceCaptureImageAsync>d__21::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanClient/<UploadFaceCaptureImageAsync>d__23::MoveNext() + - - - + + + + - + - + Yoti.Auth.DocScan.DocScanService System.Uri Yoti.Auth.DocScan.DocScanService::get_ApiUri() - + - + - + - + System.Uri Yoti.Auth.DocScan.DocScanService::GetApiUri() - + - - - + + + + + + + - - + + - + - + Yoti.Auth.Web.RequestBuilder Yoti.Auth.DocScan.DocScanService::GetSignedRequestBuilder() - + - + + + - + + + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.DocScan.DocScanService::ApplyAuth(Yoti.Auth.Web.RequestBuilder,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + - + System.String Yoti.Auth.DocScan.DocScanService::SessionEndpoint(System.String) - + - + + + - + - + System.String Yoti.Auth.DocScan.DocScanService::MediaEndpoint(System.String,System.String) - + - + + + - + Newtonsoft.Json.JsonSerializerSettings Yoti.Auth.DocScan.DocScanService::get_YotiDefaultJsonSettings() - + - + - + - - + + System.Void Yoti.Auth.DocScan.DocScanService::.ctor(System.Net.Http.HttpClient,System.Uri) - + + + + + + + + + + + + + System.Void Yoti.Auth.DocScan.DocScanService::.ctor(System.Net.Http.HttpClient,System.Uri,Yoti.Auth.CentralAuth.IAuthStrategy) + - - - - - - - + + + + + + + + + + + - - + + - + @@ -13033,13 +14481,13 @@ - Yoti.Auth.MediaValue Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass10_0::<GetMediaContent>b__0() - + Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass10_0::<GetSession>b__0() + - + - + @@ -13050,30 +14498,30 @@ - Yoti.Auth.DocScan.Support.SupportedDocumentsResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass12_0::<GetSupportedDocuments>b__0() - + Yoti.Auth.MediaValue Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass12_0::<GetMediaContent>b__0() + - + - + - Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass13_0 + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass14_0 - Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass13_0::<CreateFaceCaptureResource>b__0() - + Yoti.Auth.DocScan.Support.SupportedDocumentsResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass14_0::<GetSupportedDocuments>b__0() + - + - + @@ -13084,530 +14532,590 @@ - Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass15_0::<GetSessionConfiguration>b__0() - + Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass15_0::<CreateFaceCaptureResource>b__0() + - + - + - Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass7_0 + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass17_0 - Yoti.Auth.DocScan.Session.Create.CreateSessionResult Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass7_0::<CreateSession>b__0() - + Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass17_0::<GetSessionConfiguration>b__0() + - + - + - Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass8_0 + Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass9_0 - Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass8_0::<GetSession>b__0() - + Yoti.Auth.DocScan.Session.Create.CreateSessionResult Yoti.Auth.DocScan.DocScanService/<>c__DisplayClass9_0::<CreateSession>b__0() + - + - + - - Yoti.Auth.DocScan.DocScanService/<CreateFaceCaptureResource>d__13 + + Yoti.Auth.DocScan.DocScanService/<CreateFaceCaptureResource>d__15 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<CreateFaceCaptureResource>d__13::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<CreateFaceCaptureResource>d__15::MoveNext() + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DocScan.DocScanService/<CreateSession>d__7 + + Yoti.Auth.DocScan.DocScanService/<CreateSession>d__9 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<CreateSession>d__7::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<CreateSession>d__9::MoveNext() + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DocScan.DocScanService/<DeleteMediaContent>d__11 + + Yoti.Auth.DocScan.DocScanService/<DeleteMediaContent>d__13 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<DeleteMediaContent>d__11::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<DeleteMediaContent>d__13::MoveNext() + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + - - Yoti.Auth.DocScan.DocScanService/<DeleteSession>d__9 + + Yoti.Auth.DocScan.DocScanService/<DeleteSession>d__11 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<DeleteSession>d__9::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<DeleteSession>d__11::MoveNext() + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + + + - + - - Yoti.Auth.DocScan.DocScanService/<GetMediaContent>d__10 + + Yoti.Auth.DocScan.DocScanService/<GetMediaContent>d__12 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<GetMediaContent>d__10::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<GetMediaContent>d__12::MoveNext() + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + - + - - Yoti.Auth.DocScan.DocScanService/<GetSession>d__8 + + Yoti.Auth.DocScan.DocScanService/<GetSession>d__10 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<GetSession>d__8::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<GetSession>d__10::MoveNext() + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DocScan.DocScanService/<GetSessionConfiguration>d__15 + + Yoti.Auth.DocScan.DocScanService/<GetSessionConfiguration>d__17 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<GetSessionConfiguration>d__15::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<GetSessionConfiguration>d__17::MoveNext() + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DocScan.DocScanService/<GetSupportedDocuments>d__12 + + Yoti.Auth.DocScan.DocScanService/<GetSupportedDocuments>d__14 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<GetSupportedDocuments>d__12::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<GetSupportedDocuments>d__14::MoveNext() + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + - + - - Yoti.Auth.DocScan.DocScanService/<UploadFaceCaptureImage>d__14 + + Yoti.Auth.DocScan.DocScanService/<UploadFaceCaptureImage>d__16 - - + + - System.Void Yoti.Auth.DocScan.DocScanService/<UploadFaceCaptureImage>d__14::MoveNext() - + System.Void Yoti.Auth.DocScan.DocScanService/<UploadFaceCaptureImage>d__16::MoveNext() + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + - + - + Yoti.Auth.DocScan.Support.SupportedCountry System.String Yoti.Auth.DocScan.Support.SupportedCountry::get_Code() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedDocument> Yoti.Auth.DocScan.Support.SupportedCountry::get_SupportedDocuments() - + - + - + - + System.Void Yoti.Auth.DocScan.Support.SupportedCountry::.ctor(System.String,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedDocument>) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Support.SupportedDocument System.String Yoti.Auth.DocScan.Support.SupportedDocument::get_Type() - + - + - + System.Boolean Yoti.Auth.DocScan.Support.SupportedDocument::get_IsStrictlyLatin() - + - + - + - + System.Void Yoti.Auth.DocScan.Support.SupportedDocument::.ctor(System.String,System.Boolean) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Support.SupportedDocumentsResponse System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedCountry> Yoti.Auth.DocScan.Support.SupportedDocumentsResponse::get_SupportedCountries() - + - + - + - + System.Void Yoti.Auth.DocScan.Support.SupportedDocumentsResponse::.ctor(System.Collections.Generic.List`1<Yoti.Auth.DocScan.Support.SupportedCountry>) - + - - - + + + + - + @@ -13619,34 +15127,34 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse::get_SubCheck() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse::get_Result() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse> Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse::get_Details() - + - + - + @@ -13658,23 +15166,23 @@ Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse Yoti.Auth.DocScan.Session.Retrieve.ReportResponse::get_Recommendation() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.BreakdownResponse> Yoti.Auth.DocScan.Session.Retrieve.ReportResponse::get_Breakdown() - + - + - + @@ -13686,23 +15194,23 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse::get_Name() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.DetailsResponse::get_Value() - + - + - + @@ -13714,12 +15222,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse::get_Media() - + - + - + @@ -13731,12 +15239,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.DocumentIdPhotoResponse::get_Media() - + - + - + @@ -13748,12 +15256,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureImageResponse::get_Media() - + - + - + @@ -13765,12 +15273,12 @@ Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureImageResponse Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureResourceResponse::get_Image() - + - + - + @@ -13782,12 +15290,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FaceMapResponse::get_Media() - + - + - + @@ -13799,12 +15307,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FileResponse::get_Media() - + - + - + @@ -13816,12 +15324,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.FrameResponse::get_Media() - + - + - + @@ -13833,332 +15341,354 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia::get_Id() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia::get_Type() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult System.Int32 Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_ClientSessionTokenTtl() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_ClientSessionToken() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_SessionId() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_UserTrackingId() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_State() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_Checks() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_Resources() - + - + - + System.Nullable`1<System.DateTime> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_BiometricConsentTimestamp() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_IdentityProfile() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_IdentityProfilePreviewResponse() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_AdvancedIdentityProfile() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::get_AdvancedIdentityProfilePreviewResponse() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.AuthenticityCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetAuthenticityChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.FaceMatchCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetFaceMatchChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.TextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetTextDataChecks() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.TextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetIdDocumentTextDataChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.LivenessCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetLivenessChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.IdDocumentComparisonCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetIdDocumentComparisonChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.SupplementaryDocTextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetSupplementaryDocTextDataChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.ThirdPartyIdentityCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetThirdPartyIdentityChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.ThirdPartyIdentityFraudOneCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetThirdPartyIdentityFraudOneChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistScreeningCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetWatchlistScreeningChecks() - + - - - + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistAdvancedCaCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.GetSessionResult::GetWatchlistAdvancedCaChecks() - + - - - + + + + + - - + + - + @@ -14170,45 +15700,45 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_Id() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_Type() - + - + - + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_Created() - + - + - + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.MediaResponse::get_LastUpdated() - + - + - + @@ -14220,34 +15750,34 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.PageResponse::get_CaptureMethod() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.PageResponse::get_Media() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.FrameResponse> Yoti.Auth.DocScan.Session.Retrieve.PageResponse::get_Frames() - + - + - + @@ -14259,34 +15789,34 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse::get_Value() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse::get_Reason() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.RecommendationResponse::get_RecoverySuggestion() - + - + - + @@ -14298,50 +15828,61 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse::get_Media() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessImageResponse - - + + Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessImageResponse::get_Media() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse - - + + Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessImageResponse Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse::get_image() - + - + - + - - - + + + + System.String Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse::get_CaptureType() + + + + + + + + + + Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse @@ -14349,23 +15890,23 @@ Yoti.Auth.DocScan.Session.Retrieve.FaceMapResponse Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse::get_FaceMap() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.FrameResponse> Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse::get_Frames() - + - + - + @@ -14377,122 +15918,124 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse::get_Id() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse::get_Type() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_Id() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_State() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_Created() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_LastUpdated() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_GeneratedChecks() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia> Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::get_GeneratedMedia() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.GeneratedTextDataCheckResponse> Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse::GetGeneratedTextDataChecks() - + - - - + + + + + - - + + - + @@ -14504,12 +16047,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse::get_Type() - + - + - + @@ -14521,111 +16064,113 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse::get_Media() - + - + - + System.Nullable`1<System.DateTime> Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse::get_CreatedAt() - + - + - + System.Nullable`1<System.DateTime> Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse::get_LastUpdated() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_DocumentType() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_IssuingCountry() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.PageResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_Pages() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_DocumentFields() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.DocumentIdPhotoResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::get_DocumentIdPhoto() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.TextExtractionTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse::GetTextExtractionTasks() - + - - - + + + + + - - + + - + @@ -14637,132 +16182,144 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.LivenessResourceResponse::get_LivenessType() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.IdDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_IdDocuments() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_SupplementaryDocuments() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.LivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_LivenessCapture() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.FaceCaptureResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_FaceCapture() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_ShareCodes() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.ApplicantProfileResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_ApplicantProfiles() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.ZoomLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_ZoomLivenessResources() - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + - - + + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.StaticLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceContainer::get_StaticLivenessResources() - + - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - + @@ -14774,199 +16331,203 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse::get_Id() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.TaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse::get_Tasks() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ResourceResponse::get_Source() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_CreatedAt() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_LastUpdated() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_LookupProfile() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_ReturnedProfile() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_IdPhoto() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.ShareCodeMediaResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::get_File() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.VerifyShareCodeTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.ShareCodeResourceResponse::GetVerifyShareCodeTasks() - + - - - + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_DocumentType() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_IssuingCountry() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.PageResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_Pages() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.DocumentFieldsResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_DocumentFields() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.FileResponse Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::get_DocumentFile() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Task.SupplementaryDocTextExtractionTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Resource.SupplementaryDocResourceResponse::GetTextExtractionTasks() - + - - - + + + + + - - + + - + @@ -14978,12 +16539,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.IdentityProfilePreview.IdentityProfilePreviewResponse::get_Media() - + - + - + @@ -14995,23 +16556,23 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse::get_ReasonCode() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse::get_RequirementNotMetDetails() - + - + - + @@ -15023,45 +16584,45 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_SubjectId() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_Result() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.FailureReasonResponse Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_FailureReason() - + - + - + System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken> Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.IdentityProfileResponse::get_Report() - + - + - + @@ -15073,56 +16634,56 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_FailureType() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_DocumentType() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_DocumentCountryIsoCode() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_AuditId() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.IdentityProfile.RequirementNotMetDetails::get_Details() - + - + - + @@ -15134,23 +16695,23 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse::get_Id() - + - + - + System.Int32 Yoti.Auth.DocScan.Session.Retrieve.CreateFaceCaptureResourceResponse.CreateFaceCaptureResourceResponse::get_Frames() - + - + - + @@ -15162,155 +16723,169 @@ System.Int32 Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_ClientSessionTokenTtl() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_SessionId() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_RequestedChecks() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse Yoti.Auth.DocScan.Session.Retrieve.Configuration.SessionConfigurationResponse::get_Capture() - + - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::get_BiometricConsent() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::get_RequiredResources() - + - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetDocumentResourceRequirements() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetIdDocumentResourceRequirements() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetSupplementaryResourceRequirements() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetLivenessResourceRequirements() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredZoomLivenessResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetZoomLivenessResourceRequirements() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.FaceCapture.RequiredFaceCaptureResourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::GetFaceCaptureResourceRequirements() - + - + + + - + - - + + System.Collections.Generic.List`1<TResourceType> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.CaptureResponse::FilterRequiredResources() - + - - - + + + + + - - + + - + @@ -15322,59 +16897,59 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_Id() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_State() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Resource.AllowedSourceResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_AllowedSources() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.RequiredResourceResponse::get_IsRelyingBusinessAllowed() - + - + - - + + - + @@ -15386,23 +16961,23 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse::get_State() - + - + - + @@ -15414,12 +16989,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Liveness.RequiredLivenessResourceResponse::get_LivenessType() - + - + - + @@ -15431,12 +17006,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.ObjectiveResponse::get_Type() - + - + - + @@ -15448,12 +17023,12 @@ System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Task.RequestedTaskResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredDocumentResourceResponse::get_RequestedTasks() - + - + - + @@ -15465,34 +17040,34 @@ System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse::get_SupportedCountries() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse::get_AllowedCaptureMethods() - + - + - + System.Collections.Generic.Dictionary`2<System.String,System.Int32> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredIdDocumentResourceResponse::get_AttemptsRemaining() - + - + - + @@ -15504,34 +17079,34 @@ System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse::get_DocumentTypes() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse::get_CountryCodes() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.ObjectiveResponse Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.RequiredSupplementaryDocumentResourceResponse::get_Objective() - + - + - + @@ -15543,23 +17118,23 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse::get_Code() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse> Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedCountryResponse::get_SupportedDocuments() - + - + - + @@ -15571,23 +17146,23 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Configuration.Capture.Document.SupportedDocumentResponse::get_IsStrictlyLatin() - + - + - + @@ -15599,89 +17174,89 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Id() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_State() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_ResourcesUsed() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Retrieve.GeneratedMedia> Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_GeneratedMedia() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.ReportResponse Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Report() - + - + - + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_Created() - + - + - + System.DateTime Yoti.Auth.DocScan.Session.Retrieve.Check.CheckResponse::get_LastUpdated() - + - + - + @@ -15693,12 +17268,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.Check.GeneratedProfileResponse::get_Media() - + - + - + @@ -15710,12 +17285,12 @@ Yoti.Auth.DocScan.Session.Retrieve.Check.GeneratedProfileResponse Yoti.Auth.DocScan.Session.Retrieve.Check.ProfileCheckResponse::get_GeneratedProfile() - + - + - + @@ -15727,12 +17302,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaMatchingStrategyResponse::get_Type() - + - + - + @@ -15744,12 +17319,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaSourcesResponse::get_Type() - + - + - + @@ -15761,12 +17336,12 @@ System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ExactMatchingStrategyResponse::get_ExactMatch() - + - + - + @@ -15778,12 +17353,12 @@ System.Double Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.FuzzyMatchingStrategyResponse::get_Fuzziness() - + - + - + @@ -15795,12 +17370,12 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.RawResults::get_Media() - + - + - + @@ -15812,12 +17387,12 @@ Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ReportResponseWithSummary::get_WatchlistSummary() - + - + - + @@ -15829,12 +17404,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.SearchProfileSourcesResponse::get_SearchProfile() - + - + - + @@ -15846,12 +17421,12 @@ System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.TypeListSourcesResponse::get_Types() - + - + - + @@ -15863,56 +17438,56 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_Type() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_RemoveDeceased() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_ShareUrl() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaSourcesResponse Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_Sources() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.CaMatchingStrategyResponse Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponse::get_MatchingStrategy() - + - + - + @@ -15924,45 +17499,45 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_ApiKey() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_Monitoring() - + - + - + System.Collections.Generic.Dictionary`2<System.String,System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_Tags() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistAdvancedCaSearchConfigResponseCustomAccount::get_ClientRef() - + - + - + @@ -15974,12 +17549,12 @@ System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistScreeningConfig::get_Categories() - + - + - + @@ -15991,45 +17566,45 @@ System.Int32 Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_TotalHits() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.RawResults Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_RawResults() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_AssociatedCountryCodes() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.ISearchConfig Yoti.Auth.DocScan.Session.Retrieve.Check.WatchlistSummary.WatchlistSummary::get_SearchConfig() - + - + - + @@ -16041,45 +17616,45 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_SubjectId() - + - + - + System.String Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_Result() - + - + - + Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.FailureReasonResponse Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_FailureReason() - + - + - + System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken> Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.AdvancedIdentityProfileResponse::get_Report() - + - + - + @@ -16091,12 +17666,12 @@ System.String Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfile.FailureReasonResponse::get_ReasonCode() - + - + - + @@ -16108,151 +17683,162 @@ Yoti.Auth.DocScan.Session.Retrieve.MediaResponse Yoti.Auth.DocScan.Session.Retrieve.AdvancedIdentityProfilePreview.AdvancedIdentityProfilePreviewResponse::get_Media() - + - + - + - + Yoti.Auth.DocScan.Session.Create.ApplicantProfile System.String Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_FullName() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_DateOfBirth() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_NamePrefix() - + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress Yoti.Auth.DocScan.Session.Create.ApplicantProfile::get_StructuredPostalAddress() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.ApplicantProfile::.ctor(System.String,System.String,System.String,Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress) - + - - - - - - - - - - + + + + + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder - + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithFullName(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithDateOfBirth(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithNamePrefix(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::WithStructuredPostalAddress(Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.ApplicantProfile Yoti.Auth.DocScan.Session.Create.ApplicantProfileBuilder::Build() - + - - - - - + + + + + + + - + @@ -16264,12 +17850,12 @@ System.Collections.Generic.Dictionary`2<System.String,System.Int32> Yoti.Auth.DocScan.Session.Create.AttemptsConfiguration::get_IdDocumentTextDataExtraction() - + - + - + @@ -16281,3762 +17867,4066 @@ System.Int32 Yoti.Auth.DocScan.Session.Create.CreateSessionResult::get_ClientSessionTokenTtl() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.CreateSessionResult::get_ClientSessionToken() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.CreateSessionResult::get_SessionId() - + - + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfig System.String Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_AuthToken() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_AuthType() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_Endpoint() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.NotificationConfig::get_Topics() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.NotificationConfig::.ctor(System.String,System.String,System.Collections.Generic.List`1<System.String>,System.String) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithAuthToken(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithAuthTypeBearer() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithAuthTypeBasic() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithEndpoint(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForResourceUpdate() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForTaskCompletion() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForCheckCompletion() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForSessionCompletion() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::ForClientSessionCompletion() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::WithTopic(System.String) - + - - - + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfig Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::Build() - + - + + + - + System.Void Yoti.Auth.DocScan.Session.Create.NotificationConfigBuilder::.ctor() - + - + - + - + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer Yoti.Auth.DocScan.Session.Create.ApplicantProfile Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer::get_ApplicantProfile() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer::.ctor(Yoti.Auth.DocScan.Session.Create.ApplicantProfile) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder - + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder::WithApplicantProfile(Yoti.Auth.DocScan.Session.Create.ApplicantProfile) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer Yoti.Auth.DocScan.Session.Create.ResourceCreationContainerBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfig System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_AllowedCaptureMethods() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_PrimaryColour() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_SecondaryColour() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_FontColour() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_Locale() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_PresetIssuingCountry() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_SuccessUrl() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_ErrorUrl() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SdkConfig::get_PrivacyPolicyUrl() - + - + - + System.Nullable`1<System.Boolean> Yoti.Auth.DocScan.Session.Create.SdkConfig::get_AllowHandoff() - + - + - + Yoti.Auth.DocScan.Session.Create.AttemptsConfiguration Yoti.Auth.DocScan.Session.Create.SdkConfig::get_AttemptsConfiguration() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.SdkConfig::.ctor(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Nullable`1<System.Boolean>,System.Collections.Generic.Dictionary`2<System.String,System.Int32>) - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowsCamera() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowsCameraAndUpload() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowedCaptureMethods(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithPrimaryColour(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithSecondaryColour(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithFontColour(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithLocale(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithPresetIssuingCountry(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithSuccessUrl(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithErrorUrl(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithPrivacyPolicyUrl(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithAllowHandoff(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithIdDocumentTextExtractionCategoryAttempts(System.String,System.Int32) - + - - - - - - + + + + + + + + - - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithIdDocumentTextExtractionReclassificationAttempts(System.Int32) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::WithIdDocumentTextExtractionGenericAttempts(System.Int32) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfig Yoti.Auth.DocScan.Session.Create.SdkConfigBuilder::Build() - + - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecification System.Nullable`1<System.Int32> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_ClientSessionTokenTtl() - + - + - + System.Nullable`1<System.Int32> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_ResourcesTtl() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_UserTrackingId() - + - + - + Yoti.Auth.DocScan.Session.Create.NotificationConfig Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_Notifications() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Check.BaseRequestedCheck> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_RequestedChecks() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Task.BaseRequestedTask> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_RequestedTasks() - + - + - + Yoti.Auth.DocScan.Session.Create.SdkConfig Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_SdkConfig() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.RequiredDocument> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_RequiredDocuments() - + - + - + System.Nullable`1<System.Boolean> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_BlockBiometricConsent() - + - + - + System.Nullable`1<System.DateTimeOffset> Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_SessionDeadline() - + - + - + System.Object Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_IdentityProfileRequirements() - + - + - + System.Object Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_Subject() - + - + - + System.Object Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_AdvancedIdentityProfileRequirements() - + - + - + Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer Yoti.Auth.DocScan.Session.Create.SessionSpecification::get_Resources() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.SessionSpecification::.ctor(System.Nullable`1<System.Int32>,System.Nullable`1<System.Int32>,System.String,Yoti.Auth.DocScan.Session.Create.NotificationConfig,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Check.BaseRequestedCheck>,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Task.BaseRequestedTask>,Yoti.Auth.DocScan.Session.Create.SdkConfig,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.RequiredDocument>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.DateTimeOffset>,System.Object,System.Object,System.Boolean,System.Object,Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer) - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithClientSessionTokenTtl(System.Int32) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithResourcesTtl(System.Int32) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithUserTrackingId(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithNotifications(Yoti.Auth.DocScan.Session.Create.NotificationConfig) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithRequestedCheck(Yoti.Auth.DocScan.Session.Create.Check.BaseRequestedCheck) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithRequestedTask(Yoti.Auth.DocScan.Session.Create.Task.BaseRequestedTask) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithSdkConfig(Yoti.Auth.DocScan.Session.Create.SdkConfig) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithRequiredDocument(Yoti.Auth.DocScan.Session.Create.Filter.RequiredDocument) - + - - - - + + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithBlockBiometricConsent(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithSessionDeadline(System.DateTimeOffset) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithIdentityProfileRequirements(System.Object) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithSubject(System.Object) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithCreateIdentityProfilePreview(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithAdvancedIdentityProfileRequirements(System.Object) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::WithResources(Yoti.Auth.DocScan.Session.Create.ResourceCreationContainer) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.SessionSpecification Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::Build() - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.DocScan.Session.Create.SessionSpecificationBuilder::.ctor() - + - - + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress System.Nullable`1<System.Int32> Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_AddressFormat() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_BuildingNumber() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_AddressLine1() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_TownCity() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_PostalCode() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_CountryIso() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_Country() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::get_FormattedAddress() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress::.ctor(System.Nullable`1<System.Int32>,System.String,System.String,System.String,System.String,System.String,System.String,System.String) - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithAddressFormat(System.Int32) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithBuildingNumber(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithAddressLine1(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithTownCity(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithPostalCode(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithCountryIso(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithCountry(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::WithFormattedAddress(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.StructuredPostalAddress Yoti.Auth.DocScan.Session.Create.StructuredPostalAddressBuilder::Build() - + - - - - - - - - - + + + + + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask::.ctor(Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::WithManualCheckAlways() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::WithManualCheckFallback() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::WithManualCheckNever() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTask Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig::get_ManualCheck() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedSupplementaryDocTextExtractionTaskConfig::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask::.ctor(Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithManualCheckAlways() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithManualCheckFallback() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithManualCheckNever() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithChipDataDesired() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::WithChipDataIgnore() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTask Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskBuilder::Build() - + - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig::get_ManualCheck() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig::get_ChipData() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Task.RequestedTextExtractionTaskConfig::.ctor(System.String,System.String) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Objectives.Objective System.String Yoti.Auth.DocScan.Session.Create.Objectives.Objective::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Objectives.Objective::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjective - + System.Void Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjective::.ctor() - + - - + + + - + - + Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjectiveBuilder - + Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjective Yoti.Auth.DocScan.Session.Create.Objectives.ProofOfAddressObjectiveBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction System.String Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction::get_Inclusion() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction::get_CountryCodes() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction::.ctor(System.String,System.Collections.Generic.List`1<System.String>) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter System.String Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter::.ctor(System.String) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction::get_CountryCodes() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction::get_DocumentTypes() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction::.ctor(System.Collections.Generic.List`1<System.String>,System.Collections.Generic.List`1<System.String>) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder::WithCountries(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder::WithDocumentTypes(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter System.String Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::get_Inclusion() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction> Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::get_Documents() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::get_AllowExpiredDocuments() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter::.ctor(System.String,System.Collections.Generic.List`1<Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction>,System.Boolean) - + - - - - - + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::ForIncludeList() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::ForExcludeList() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::WithDocumentRestriction(System.Collections.Generic.List`1<System.String>,System.Collections.Generic.List`1<System.String>) - + - - - - + + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::WithDocumentRestriction(Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestriction) - + - - - - + + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::withAllowExpiredDocuments() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::withDenyExpiredDocuments() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilter Yoti.Auth.DocScan.Session.Create.Filter.DocumentRestrictionsFilterBuilder::Build() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_CountryRestriction() - + - + - + Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_TypeRestriction() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_AllowExpiredDocuments() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::get_AllowNonLatinDocuments() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter::.ctor(Yoti.Auth.DocScan.Session.Create.Filter.CountryRestriction,Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction,System.Boolean,System.Boolean) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithIncludedCountries(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithExcludedCountries(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithIncludedDocumentTypes(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::WithExcludedDocumentTypes(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::isAllowNonLatinDocuments(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::withAllowExpiredDocuments() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::withDenyExpiredDocuments() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilter Yoti.Auth.DocScan.Session.Create.Filter.OrthogonalRestrictionsFilterBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument::get_Filter() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument::.ctor(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder::WithFilter(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocument Yoti.Auth.DocScan.Session.Create.Filter.RequiredIdDocumentBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument Yoti.Auth.DocScan.Session.Create.Objectives.Objective Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_Objective() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_DocumentTypes() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_CountryCodes() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument::.ctor(Yoti.Auth.DocScan.Session.Create.Objectives.Objective,System.Collections.Generic.List`1<System.String>,System.Collections.Generic.List`1<System.String>) - + - - - - - + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::WithObjective(Yoti.Auth.DocScan.Session.Create.Objectives.Objective) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::WithDocumentTypes(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::WithCountries(System.Collections.Generic.List`1<System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocument Yoti.Auth.DocScan.Session.Create.Filter.RequiredSupplementaryDocumentBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction System.String Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction::get_Inclusion() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction::get_DocumentTypes() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Filter.TypeRestriction::.ctor(System.String,System.Collections.Generic.List`1<System.String>) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload System.String Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload::get_RequirementId() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder - + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder::WithRequirementId(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayload Yoti.Auth.DocScan.Session.Create.FaceCapture.CreateFaceCaptureResourcePayloadBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload System.String Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload::get_ImageContentType() - + - + - + System.Byte[] Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload::get_ImageContents() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload::.ctor(System.String,System.Byte[]) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder - + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::ForJpeg() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::ForPng() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::WithImageContents(System.Byte[]) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayload Yoti.Auth.DocScan.Session.Create.FaceCapture.UploadFaceCaptureImagePayloadBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck System.Boolean Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck::get_Requested() - + - + - + Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck::get_Filter() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck::.ctor(System.Boolean,Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder::WithRequested(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder::WithFilter(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheckBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithManualCheckAlways() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithManualCheckFallback() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithManualCheckNever() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithIssuingAuthoritySubCheck() - + - - - - + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::WithIssuingAuthoritySubCheck(Yoti.Auth.DocScan.Session.Create.Filter.DocumentFilter) - + - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityCheckBuilder::Build() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig::get_ManualCheck() - + - + - + Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig::get_IssuingAuthoritySubCheck() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedDocumentAuthenticityConfig::.ctor(System.String,Yoti.Auth.DocScan.Session.Create.Check.IssuingAuthoritySubCheck) - + - - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder::WithManualCheckNever() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonCheckBuilder::Build() - + - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig::get_ManualCheck() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceComparisonConfig::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::WithManualCheckAlways() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::WithManualCheckFallback() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::WithManualCheckNever() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchCheckBuilder::Build() - + - - - + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig::get_ManualCheck() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedFaceMatchConfig::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonCheckBuilder::Build() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedIdDocumentComparisonConfig::.ctor() - + - - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::ForZoomLiveness() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::ForStaticLiveness() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::WithManualCheck(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::ForLivenessType(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::WithMaxRetries(System.Int32) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::Build() - + - - - + + + + + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessCheckBuilder::.ctor() - + - - + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::get_LivenessType() - + - + - + System.Int32 Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::get_MaxRetries() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::get_ManualCheck() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedLivenessConfig::.ctor(System.Int32,System.String,System.String) - + - - - - - + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckBuilder::Build() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedThirdPartyIdentityCheckConfig::.ctor() - + - - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithRemoveDeceased(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithShareUrl(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithSources(Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilder::WithMatchingStrategy(Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithApiKey(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithMonitoring(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithTags(System.Collections.Generic.Dictionary`2<System.String,System.String>) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::WithClientRef(System.String) - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderCustomAccount::Build() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderYotiAccount - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaCheckBuilderYotiAccount::Build() - + - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig System.Boolean Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_RemoveDeceased() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_ShareUrl() - + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_Sources() - + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::get_MatchingStrategy() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistAdvancedCaConfig::.ctor(System.Boolean,System.Boolean,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck::get_Config() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck::.ctor(Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::ForSanctions() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::ForAdverseMedia() - + - + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::WithCategory(System.String) - + - - - - + + + + + + - - + + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheck Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::Build() - + - - + + + + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningCheckBuilder::.ctor() - + - + - + - + Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig::get_Categories() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.RequestedWatchlistScreeningConfig::.ctor(System.Collections.Generic.List`1<System.String>) - + - - - + + + + - + @@ -20048,252 +21938,257 @@ System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedExactMatchingStrategy::get_Type() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedExactMatchingStrategy::get_ExactMatch() - + - + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy::get_Type() - + - + - + System.Double Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy::get_Fuzziness() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedFuzzyMatchingStrategy::.ctor(System.Double) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources::get_SearchProfile() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedSearchProfileSources::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources::get_Type() - + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources::get_Types() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedTypeListSources::.ctor(System.Collections.Generic.List`1<System.String>) - + - - - + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_Type() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_ApiKey() - + - + - + System.Boolean Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_Monitoring() - + - + - + System.Collections.Generic.Dictionary`2<System.String,System.String> Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_Tags() - + - + - + System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::get_ClientRef() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigCustomAccount::.ctor(System.Boolean,System.Boolean,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy,System.String,System.Boolean,System.Collections.Generic.Dictionary`2<System.String,System.String>,System.String) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigYotiAccount System.String Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigYotiAccount::get_Type() - + - + - + - + System.Void Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedWatchlistAdvancedCaConfigYotiAccount::.ctor(System.Boolean,System.Boolean,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaSources,Yoti.Auth.DocScan.Session.Create.Check.Advanced.RequestedCaMatchingStrategy) - + - - + + + - + @@ -20305,568 +22200,697 @@ System.String Yoti.Auth.DigitalIdentity.CreateQrResult::get_Id() - + - + - + System.String Yoti.Auth.DigitalIdentity.CreateQrResult::get_Uri() - + - + - + - + Yoti.Auth.DigitalIdentity.DigitalIdentityService - - + + + + Yoti.Auth.Web.RequestBuilder Yoti.Auth.DigitalIdentity.DigitalIdentityService::ApplyAuth(Yoti.Auth.Web.RequestBuilder,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,Yoti.Auth.CentralAuth.IAuthStrategy) + + + + + + + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.ShareSessionResult> Yoti.Auth.DigitalIdentity.DigitalIdentityService::CreateShareSession(System.Net.Http.HttpClient,System.Uri,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,Yoti.Auth.DigitalIdentity.ShareSessionRequest) + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.GetSessionResult> Yoti.Auth.DigitalIdentity.DigitalIdentityService::GetSession(System.Net.Http.HttpClient,System.Uri,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String) + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.CreateQrResult> Yoti.Auth.DigitalIdentity.DigitalIdentityService::CreateQrCode(System.Net.Http.HttpClient,System.Uri,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String,Yoti.Auth.DigitalIdentity.QrRequest) + + + + + + + + + + + + + System.Threading.Tasks.Task`1<Yoti.Auth.DigitalIdentity.GetQrCodeResult> Yoti.Auth.DigitalIdentity.DigitalIdentityService::GetQrCode(System.Net.Http.HttpClient,System.Uri,System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.String) + + + + + + + + + + + System.String Yoti.Auth.DigitalIdentity.DigitalIdentityService::Base64ToBase64URL(System.String) - + - - - - - - - - - + + + + + + + + + + + + - + - - + + System.ValueTuple`3<Yoti.Auth.ProtoBuf.Attribute.AttributeList,System.Byte[],System.Exception> Yoti.Auth.DigitalIdentity.DigitalIdentityService::DecryptReceiptContent(Yoti.Auth.DigitalIdentity.Content,System.Byte[]) - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass11_0 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass10_0 - - + + - Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass11_0::<GetReceiptItemKey>b__0() - + Yoti.Auth.DigitalIdentity.CreateQrResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass10_0::<CreateQrCode>b__0() + - + - + - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass4_0 + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass12_0 - Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass4_0::<CreateShareSession>b__0() - + Yoti.Auth.DigitalIdentity.GetQrCodeResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass12_0::<GetQrCode>b__0() + - + - + - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass5_0 + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass13_0 - Yoti.Auth.DigitalIdentity.GetSessionResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass5_0::<GetSession>b__0() - + Yoti.Auth.DigitalIdentity.ReceiptResponse Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass13_0::<GetReceipt>b__0() + - + - + - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass6_0 + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass16_0 - Yoti.Auth.DigitalIdentity.CreateQrResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass6_0::<CreateQrCode>b__0() - + Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass16_0::<GetReceiptItemKey>b__0() + - + - + - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass7_0 + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass6_0 - Yoti.Auth.DigitalIdentity.GetQrCodeResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass7_0::<GetQrCode>b__0() - + Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass6_0::<CreateShareSession>b__0() + - + - + - + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass8_0 - - + + - Yoti.Auth.DigitalIdentity.ReceiptResponse Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass8_0::<GetReceipt>b__0() - + Yoti.Auth.DigitalIdentity.GetSessionResult Yoti.Auth.DigitalIdentity.DigitalIdentityService/<>c__DisplayClass8_0::<GetSession>b__0() + - + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateQrCode>d__6 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateQrCode>d__10 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateQrCode>d__6::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateQrCode>d__10::MoveNext() + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateShareSession>d__4 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateShareSession>d__6 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateShareSession>d__4::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<CreateShareSession>d__6::MoveNext() + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetQrCode>d__7 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetQrCode>d__12 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetQrCode>d__7::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetQrCode>d__12::MoveNext() + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceipt>d__8 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceipt>d__13 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceipt>d__8::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceipt>d__13::MoveNext() + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceiptItemKey>d__11 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceiptItemKey>d__16 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceiptItemKey>d__11::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetReceiptItemKey>d__16::MoveNext() + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetSession>d__5 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetSession>d__8 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetSession>d__5::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetSession>d__8::MoveNext() + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + - + - - Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetShareReceipt>d__10 + + Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetShareReceipt>d__15 - - + + - System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetShareReceipt>d__10::MoveNext() - + System.Void Yoti.Auth.DigitalIdentity.DigitalIdentityService/<GetShareReceipt>d__15::MoveNext() + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - + Yoti.Auth.DigitalIdentity.ErrorDetails - - + + Yoti.Auth.DigitalIdentity.ErrorReason Yoti.Auth.DigitalIdentity.ErrorDetails::get_ErrorReason() - + - + - + - - + + Yoti.Auth.DigitalIdentity.ErrorReason Yoti.Auth.DigitalIdentity.ErrorDetails::GetErrorReason() - + - + + + - + - + Yoti.Auth.DigitalIdentity.ErrorReason - - + + Yoti.DigitalIdentity.RequirementNotMetDetails Yoti.Auth.DigitalIdentity.ErrorReason::get_RequirementNotMetDetails() - + - + - + @@ -20878,222 +22902,222 @@ System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Id() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Expiry() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Policy() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Extensions.BaseExtension> Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Extensions() - + - + - + Yoti.Auth.DigitalIdentity.ShareSessionResult Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_Session() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetQrCodeResult::get_RedirectUri() - + - + - + - + Yoti.Auth.DigitalIdentity.Content - - + + System.Byte[] Yoti.Auth.DigitalIdentity.Content::get_Profile() - + - + - + - - + + System.Byte[] Yoti.Auth.DigitalIdentity.Content::get_ExtraData() - + - + - + - + Yoti.Auth.DigitalIdentity.ReceiptResponse - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_ID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_SessionID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_Timestamp() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_RememberMeID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_ParentRememberMeID() - + - + - + - - + + Yoti.Auth.DigitalIdentity.Content Yoti.Auth.DigitalIdentity.ReceiptResponse::get_Content() - + - + - + - - + + Yoti.Auth.DigitalIdentity.Content Yoti.Auth.DigitalIdentity.ReceiptResponse::get_OtherPartyContent() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_WrappedItemKeyId() - + - + - + - - + + System.Byte[] Yoti.Auth.DigitalIdentity.ReceiptResponse::get_WrappedKey() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptResponse::get_Error() - + - + - + - - + + Yoti.Auth.DigitalIdentity.ErrorDetails Yoti.Auth.DigitalIdentity.ReceiptResponse::get_ErrorDetails() - + - + - + @@ -21105,78 +23129,78 @@ System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Id() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Status() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Expiry() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Created() - + - + - + System.String Yoti.Auth.DigitalIdentity.GetSessionResult::get_Updated() - + - + - + Yoti.Auth.DigitalIdentity.qrCode Yoti.Auth.DigitalIdentity.GetSessionResult::get_QrCode() - + - + - + Yoti.Auth.DigitalIdentity.receipt Yoti.Auth.DigitalIdentity.GetSessionResult::get_Receipt() - + - + - + @@ -21188,12 +23212,12 @@ System.String Yoti.Auth.DigitalIdentity.qrCode::get_Id() - + - + - + @@ -21205,498 +23229,532 @@ System.String Yoti.Auth.DigitalIdentity.receipt::get_Id() - + - + - + - + Yoti.Auth.DigitalIdentity.QrRequest - + System.String Yoti.Auth.DigitalIdentity.QrRequest::get_DisplayMode() - + - + + + - + - + System.String Yoti.Auth.DigitalIdentity.QrRequest::get_Transport() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.QrRequest::.ctor(System.String,System.String) - + - - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.QrRequestBuilder - + Yoti.Auth.DigitalIdentity.QrRequestBuilder Yoti.Auth.DigitalIdentity.QrRequestBuilder::WithTransport(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.QrRequestBuilder Yoti.Auth.DigitalIdentity.QrRequestBuilder::WithDisplayMode(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.QrRequest Yoti.Auth.DigitalIdentity.QrRequestBuilder::Build() - + - + + + - + System.Void Yoti.Auth.DigitalIdentity.QrRequestBuilder::.ctor() - + - - + + - + - + Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse - - + + System.String Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse::get_ID() - + - + - + - - + + System.Byte[] Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse::get_Iv() - + - + - + - - + + System.Byte[] Yoti.Auth.DigitalIdentity.ReceiptItemKeyResponse::get_Value() - + - + - + - + Yoti.Auth.DigitalIdentity.SharedReceiptResponse - - + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_SessionID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_RememberMeID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ParentRememberMeID() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_Timestamp() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_Error() - + - + - + - - + + Yoti.Auth.DigitalIdentity.ErrorDetails Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ErrorDetails() - + - + - + - - + + Yoti.Auth.DigitalIdentity.UserContent Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_UserContent() - + - + - + - - + + Yoti.Auth.DigitalIdentity.ApplicationContent Yoti.Auth.DigitalIdentity.SharedReceiptResponse::get_ApplicationContent() - + - + - + - + Yoti.Auth.DigitalIdentity.ApplicationContent - - + + Yoti.Auth.Profile.ApplicationProfile Yoti.Auth.DigitalIdentity.ApplicationContent::get_ApplicationProfile() - + - + - + - - + + Yoti.Auth.Share.ExtraData Yoti.Auth.DigitalIdentity.ApplicationContent::get_ExtraData() - + - + - + - + Yoti.Auth.DigitalIdentity.UserContent - - + + Yoti.Auth.Profile.YotiProfile Yoti.Auth.DigitalIdentity.UserContent::get_UserProfile() - + - + - + - - + + Yoti.Auth.Share.ExtraData Yoti.Auth.DigitalIdentity.UserContent::get_ExtraData() - + - + - + - + Yoti.Auth.DigitalIdentity.ShareSessionRequest System.String Yoti.Auth.DigitalIdentity.ShareSessionRequest::get__redirectUri() - + - + - + Yoti.Auth.DigitalIdentity.Policy.Notification Yoti.Auth.DigitalIdentity.ShareSessionRequest::get__notification() - + - + - + - + Yoti.Auth.DigitalIdentity.Policy.Policy Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_DynamicPolicy() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Extensions.BaseExtension> Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_Extensions() - + - + + + - + - + System.Object Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_Subject() - + - + + + - + - + System.String Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_RedirectUri() - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.Notification Yoti.Auth.DigitalIdentity.ShareSessionRequest::get_Notification() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.ShareSessionRequest::.ctor(Yoti.Auth.DigitalIdentity.Policy.Policy,System.String,Yoti.Auth.DigitalIdentity.Policy.Notification,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Extensions.BaseExtension>,System.Object) - + - - - - - - - + + + + + + + + - - + + - + - + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder - + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithRedirectUri(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithPolicy(Yoti.Auth.DigitalIdentity.Policy.Policy) - + - - + + + + - + - - + + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithNotification(Yoti.Auth.DigitalIdentity.Policy.Notification) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithExtension(Yoti.Auth.DigitalIdentity.Extensions.BaseExtension) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::WithSubject(System.Object) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.ShareSessionRequest Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::Build() - + - + + + - + System.Void Yoti.Auth.DigitalIdentity.ShareSessionRequestBuilder::.ctor() - + - + - + @@ -21708,34 +23766,34 @@ System.String Yoti.Auth.DigitalIdentity.ShareSessionResult::get_Id() - + - + - + System.String Yoti.Auth.DigitalIdentity.ShareSessionResult::get_Status() - + - + - + System.String Yoti.Auth.DigitalIdentity.ShareSessionResult::get_Expiry() - + - + - + @@ -21747,12 +23805,12 @@ System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Profile> Yoti.Auth.DigitalIdentity.Policy.AdvancedIdentityProfile::get_Profiles() - + - + - + @@ -21764,23 +23822,23 @@ System.String Yoti.Auth.DigitalIdentity.Policy.Profile::get_TrustFramework() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Scheme> Yoti.Auth.DigitalIdentity.Policy.Profile::get_Schemes() - + - + - + @@ -21792,1479 +23850,1647 @@ System.String Yoti.Auth.DigitalIdentity.Policy.Scheme::get_Label() - + - + - + System.String Yoti.Auth.DigitalIdentity.Policy.Scheme::get_Objective() - + - + - + System.String Yoti.Auth.DigitalIdentity.Policy.Scheme::get_Type() - + - + - + - + Yoti.Auth.DigitalIdentity.Policy.Constraint System.String Yoti.Auth.DigitalIdentity.Policy.Constraint::get_ConstraintType() - + - + - + - + System.Void Yoti.Auth.DigitalIdentity.Policy.Constraint::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.Notification - - + + System.String Yoti.Auth.DigitalIdentity.Policy.Notification::get_Url() - + - + - + - - + + System.String Yoti.Auth.DigitalIdentity.Policy.Notification::get_Method() - + - + - + - - + + System.Collections.Generic.Dictionary`2<System.String,System.String> Yoti.Auth.DigitalIdentity.Policy.Notification::get_Headers() - + - + - + - - + + System.Boolean Yoti.Auth.DigitalIdentity.Policy.Notification::get_VerifyTls() - + - + - + - - + + System.Void Yoti.Auth.DigitalIdentity.Policy.Notification::.ctor(System.String,System.String,System.Collections.Generic.Dictionary`2<System.String,System.String>,System.Boolean) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder - - + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithUrl(System.String) - + - - + + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithMethod(System.String) - + - - + + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithHeaders(System.Collections.Generic.Dictionary`2<System.String,System.String>) - + - - + + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::WithVerifyTls(System.Boolean) - + - - + + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.Notification Yoti.Auth.DigitalIdentity.Policy.NotificationBuilder::Build() - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.Policy - + System.Collections.Generic.ICollection`1<Yoti.Auth.DigitalIdentity.Policy.WantedAttribute> Yoti.Auth.DigitalIdentity.Policy.Policy::get_WantedAttributes() - + - + + + - + - + System.Collections.Generic.HashSet`1<System.Int32> Yoti.Auth.DigitalIdentity.Policy.Policy::get_WantedAuthTypes() - + - + + + - + - + System.Boolean Yoti.Auth.DigitalIdentity.Policy.Policy::get_WantedRememberMeId() - + - + + + - + - + System.Object Yoti.Auth.DigitalIdentity.Policy.Policy::get_IdentityProfileRequirements() - + - + + + - + - + System.Object Yoti.Auth.DigitalIdentity.Policy.Policy::get_AdvancedIdentityProfileRequirements() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Policy.Policy::.ctor(System.Collections.Generic.ICollection`1<Yoti.Auth.DigitalIdentity.Policy.WantedAttribute>,System.Collections.Generic.HashSet`1<System.Int32>,System.Boolean,System.Object,System.Object) - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithWantedAttribute(Yoti.Auth.DigitalIdentity.Policy.WantedAttribute) - + - - - - - - + + + + + + + + + + - - - - - - + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithWantedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - - - - - + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithFamilyName(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithGivenNames(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithFullName(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithDateOfBirth(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAgeOver(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAgeUnder(System.Int32,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAgeDerivedAttribute(System.String,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - - - - - - + + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithGender(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithStructuredPostalAddress(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithNationality(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithPhoneNumber(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithSelfie(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithEmail(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithDocumentDetails(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithDocumentImages(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithSelfieAuthentication(System.Boolean) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithPinAuthentication(System.Boolean) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAuthType(System.Int32,System.Boolean) - + - - - - - + + + + + + + + - - + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithRememberMeId(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithIdentityProfileRequirements(System.Object) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::WithAdvancedIdentityProfileRequirements(Yoti.Auth.DigitalIdentity.Policy.AdvancedIdentityProfile) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.Policy Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::Build() - + - + + + - + System.Void Yoti.Auth.DigitalIdentity.Policy.PolicyBuilder::.ctor() - + - - + + - + - + Yoti.Auth.DigitalIdentity.Policy.PreferredSources System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.WantedAnchor> Yoti.Auth.DigitalIdentity.Policy.PreferredSources::get_WantedAnchors() - + - + - + System.Boolean Yoti.Auth.DigitalIdentity.Policy.PreferredSources::get_SoftPreference() - + - + - + - + System.Void Yoti.Auth.DigitalIdentity.Policy.PreferredSources::.ctor(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.WantedAnchor>,System.Boolean) - + - - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.SourceConstraint Yoti.Auth.DigitalIdentity.Policy.PreferredSources Yoti.Auth.DigitalIdentity.Policy.SourceConstraint::get_PreferredSources() - + - + - + - + System.Void Yoti.Auth.DigitalIdentity.Policy.SourceConstraint::.ctor(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.WantedAnchor>,System.Boolean) - + - - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder - - + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithAnchor(Yoti.Auth.DigitalIdentity.Policy.WantedAnchor) - + - - + + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithSoftPreference(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithAnchorByValue(System.String,System.String) - + - - - - - - + + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithPassport(System.String) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithDrivingLicense(System.String) - + - + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithNationalId(System.String) - + - + + + - + - - + + Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::WithPasscard(System.String) - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.SourceConstraint Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::Build() - + - + + + - + System.Void Yoti.Auth.DigitalIdentity.Policy.SourceConstraintBuilder::.ctor() - + - + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAnchor System.String Yoti.Auth.DigitalIdentity.Policy.WantedAnchor::get_Name() - + - + - + System.String Yoti.Auth.DigitalIdentity.Policy.WantedAnchor::get_SubType() - + - + - + - + System.Void Yoti.Auth.DigitalIdentity.Policy.WantedAnchor::.ctor(System.String,System.String) - + - - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder - + Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder::WithValue(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder::WithSubType(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAnchor Yoti.Auth.DigitalIdentity.Policy.WantedAnchorBuilder::Build() - + - + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttribute System.String Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Name() - + - + - + System.String Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Derivation() - + - + - + System.Nullable`1<System.Boolean> Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Optional() - + - + - + System.Nullable`1<System.Boolean> Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_AcceptSelfAsserted() - + - + - + System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint> Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::get_Constraints() - + - + - + - + System.Void Yoti.Auth.DigitalIdentity.Policy.WantedAttribute::.ctor(System.String,System.String,System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>) - + - - - - - - - + + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithName(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithOptional(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithDerivation(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithConstraint(Yoti.Auth.DigitalIdentity.Policy.Constraint) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithConstraints(System.Collections.Generic.List`1<Yoti.Auth.DigitalIdentity.Policy.Constraint>) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::WithAcceptSelfAsserted(System.Boolean) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Policy.WantedAttribute Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::Build() - + - - + + + + - + System.Void Yoti.Auth.DigitalIdentity.Policy.WantedAttributeBuilder::.ctor() - + - + - + - + Yoti.Auth.DigitalIdentity.Extensions.BaseExtension - + System.String Yoti.Auth.DigitalIdentity.Extensions.BaseExtension::get_ExtensionType() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.BaseExtension::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation - - + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_Latitude() - + - + + + - + - - + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_Longitude() - + - + + + - + - - + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_Radius() - + - + + + - + - - + + System.Double Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::get_MaxUncertainty() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation::.ctor(System.Double,System.Double,System.Double,System.Double) - + - - - - - - + + + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.Extension`1 - + T Yoti.Auth.DigitalIdentity.Extensions.Extension`1::get_Content() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.Extension`1::.ctor(System.String,T) - + - - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1 - + Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1<T> Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1::WithType(System.String) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1<T> Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1::WithContent(T) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<T> Yoti.Auth.DigitalIdentity.Extensions.ExtensionBuilder`1::Build() - + - + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent - - + + Yoti.Auth.DigitalIdentity.Extensions.DeviceLocation Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent::get_ExpectedDeviceLocation() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent::.ctor(System.Double,System.Double,System.Double,System.Double) - + - - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder - + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithLatitude(System.Double) - + - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithLongitude(System.Double) - + - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithRadius(System.Double) - + - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::WithMaxUncertainty(System.Double) - + - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintContent> Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::Build() - + - - + + + + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.LocationConstraintExtensionBuilder::.ctor() - + - - + + - + - + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition> Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent::get_Definitions() - + - + - + - + System.String Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent::get_ExpiryDate() - + - + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent::.ctor(System.DateTime,System.Collections.Generic.List`1<Yoti.Auth.Share.ThirdParty.AttributeDefinition>) - + - - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder - + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::WithExpiryDate(System.DateTime) - + - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinition(System.String) - + - - - + + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::WithDefinitions(System.Collections.Generic.List`1<System.String>) - + - - - - - - + + + + + + + + + + - - + + - + - + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeContent> Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::Build() - + - - - - + + + + + + - + - + System.Void Yoti.Auth.DigitalIdentity.Extensions.ThirdPartyAttributeExtensionBuilder::.ctor() - + - - - + + + + - + - + Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1 - - + + Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1<T> Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1::WithContent(T) - + - - - + + + + + - + - - + + Yoti.Auth.DigitalIdentity.Extensions.Extension`1<T> Yoti.Auth.DigitalIdentity.Extensions.TransactionalFlowExtensionBuilder`1::Build() - + - + + + - + @@ -23276,12 +25502,12 @@ Yoti.Auth.DataObjects.ReceiptDO Yoti.Auth.DataObjects.ProfileDO::get_Receipt() - + - + - + @@ -23293,1113 +25519,1777 @@ System.String Yoti.Auth.DataObjects.ReceiptDO::get_ReceiptId() - + - + - + System.String Yoti.Auth.DataObjects.ReceiptDO::get_OtherPartyProfileContent() - + - + - + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ProfileContent() - + - + - + System.String Yoti.Auth.DataObjects.ReceiptDO::get_OtherPartyExtraDataContent() - + - + - + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ExtraDataContent() - + - + - + System.String Yoti.Auth.DataObjects.ReceiptDO::get_WrappedReceiptKey() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_PolicyURI() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_PersonalKey() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_RememberMeId() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_ParentRememberMeId() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_SharingOutcome() + + + + + + + + + + + System.String Yoti.Auth.DataObjects.ReceiptDO::get_Timestamp() + + + + + + + + + + + + Yoti.Auth.Constants.Api + + + + + System.Void Yoti.Auth.Constants.Api::.cctor() + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenException + + + + + System.Void Yoti.Auth.CentralAuth.AuthenticationTokenException::.ctor(System.String) + + + + + + + + + + + + + System.Void Yoti.Auth.CentralAuth.AuthenticationTokenException::.ctor(System.String,System.Exception) - + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator::CreateBuilder() + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenResponse Yoti.Auth.CentralAuth.AuthenticationTokenGenerator::Generate(System.Collections.Generic.IList`1<System.String>) + + + + + + + + + + + + + System.String Yoti.Auth.CentralAuth.AuthenticationTokenGenerator::CreateSignedJwt() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Byte[] Yoti.Auth.CentralAuth.AuthenticationTokenGenerator::SignWithPs384(System.Byte[]) + + + + + + + + + + + + + + + + + + + + + + + + + + + System.String Yoti.Auth.CentralAuth.AuthenticationTokenGenerator::Base64UrlEncode(System.Byte[]) + + + + + + + + + + + + + + + + System.Void Yoti.Auth.CentralAuth.AuthenticationTokenGenerator::.ctor(System.String,Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair,System.Func`1<System.String>,System.String,System.Net.Http.HttpClient) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::WithSdkId(System.String) + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::WithKeyPair(System.IO.StreamReader) + + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::WithKeyPair(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::WithJwtIdSupplier(System.Func`1<System.String>) + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::WithAuthApiUrl(System.String) + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::WithHttpClient(System.Net.Http.HttpClient) + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::Build() + + + + + + + + + + + + + + + + + + + + + + + + + + + + System.Void Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/Builder::.ctor() + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/<GenerateAsync>d__7 + + + + + System.Void Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/<GenerateAsync>d__7::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/<PerformFormRequestAsync>d__11 + + + + + System.Void Yoti.Auth.CentralAuth.AuthenticationTokenGenerator/<PerformFormRequestAsync>d__11::MoveNext() + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.AuthenticationTokenResponse + + + + + System.String Yoti.Auth.CentralAuth.AuthenticationTokenResponse::get_AccessToken() + + + + + + + + + + + System.Int32 Yoti.Auth.CentralAuth.AuthenticationTokenResponse::get_ExpiresIn() + + + - + - System.String Yoti.Auth.DataObjects.ReceiptDO::get_PolicyURI() - + System.String Yoti.Auth.CentralAuth.AuthenticationTokenResponse::get_TokenType() + - + - + - System.String Yoti.Auth.DataObjects.ReceiptDO::get_PersonalKey() - + System.String Yoti.Auth.CentralAuth.AuthenticationTokenResponse::get_Scope() + - + - + + + + + + Yoti.Auth.CentralAuth.BearerTokenStrategy + - System.String Yoti.Auth.DataObjects.ReceiptDO::get_RememberMeId() - + System.Boolean Yoti.Auth.CentralAuth.BearerTokenStrategy::get_RequiresNonceAndTimestamp() + - + - + - - + + - System.String Yoti.Auth.DataObjects.ReceiptDO::get_ParentRememberMeId() - + System.Net.Http.HttpRequestMessage Yoti.Auth.CentralAuth.BearerTokenStrategy::ApplyAuth(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpMethod,System.String,System.Byte[]) + - + + + + + - + + + + + + System.Void Yoti.Auth.CentralAuth.BearerTokenStrategy::.ctor(System.String) + + + + + + + + + + + + + + + + + + + + Yoti.Auth.CentralAuth.SignedRequestStrategy + - System.String Yoti.Auth.DataObjects.ReceiptDO::get_SharingOutcome() - + System.Boolean Yoti.Auth.CentralAuth.SignedRequestStrategy::get_RequiresNonceAndTimestamp() + - + - + - - + + - System.String Yoti.Auth.DataObjects.ReceiptDO::get_Timestamp() - + System.Net.Http.HttpRequestMessage Yoti.Auth.CentralAuth.SignedRequestStrategy::ApplyAuth(System.Net.Http.HttpRequestMessage,System.Net.Http.HttpMethod,System.String,System.Byte[]) + - + + + + + + + + - + - - - - - Yoti.Auth.Constants.Api - - + - System.Void Yoti.Auth.Constants.Api::.cctor() - + System.Void Yoti.Auth.CentralAuth.SignedRequestStrategy::.ctor(Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair) + - - - + + + + + - + - + Yoti.Auth.Attribute.AttributeConverter - + System.Collections.Generic.Dictionary`2<System.String,System.Collections.Generic.List`1<Yoti.Auth.Attribute.BaseAttribute>> Yoti.Auth.Attribute.AttributeConverter::ConvertToBaseAttributes(Yoti.Auth.ProtoBuf.Attribute.AttributeList) - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - + Yoti.Auth.Attribute.BaseAttribute Yoti.Auth.Attribute.AttributeConverter::ConvertToBaseAttribute(Yoti.Auth.ProtoBuf.Attribute.Attribute) - + - - - - - - + + + + + + + + - - - - + + + + - + - + Yoti.Auth.Attribute.BaseAttribute Yoti.Auth.Attribute.AttributeConverter::CreateYotiAttribute(Yoti.Auth.ProtoBuf.Attribute.Attribute,NLog.Logger,System.Byte[]) - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + System.Object Yoti.Auth.Attribute.AttributeConverter::ParseAttributeValue(Yoti.Auth.ProtoBuf.Attribute.ContentType,NLog.Logger,System.Byte[]) - + - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.AttributeConverter::ParseAnchors(Yoti.Auth.ProtoBuf.Attribute.Attribute) - + - - - - + + + + + + + + - - + + - + - + System.Collections.Generic.Dictionary`2<System.String,Newtonsoft.Json.Linq.JToken> Yoti.Auth.Attribute.AttributeConverter::GetJsonValue(System.Byte[]) - + - - - + + + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Attribute.MultiValueItem> Yoti.Auth.Attribute.AttributeConverter::ConvertMultiValue(System.Byte[]) - + - - - - - - - + + + + + + + + + + + - - + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Images.Image> Yoti.Auth.Attribute.AttributeConverter::CreateImageListFromMultiValue(System.Collections.Generic.List`1<Yoti.Auth.Attribute.MultiValueItem>) - + - - - - - - - - + + + + + + + + + + + + - - - - - - + + + + + + - + - - + + System.DateTime Yoti.Auth.Attribute.AttributeConverter::GetDateValue(System.Byte[]) - + - - - - - - - - + + + + + + + + + + + - - + + - + - + Yoti.Auth.Attribute.BaseAttribute - + System.String Yoti.Auth.Attribute.BaseAttribute::GetName() - + - + + + - + - + System.String Yoti.Auth.Attribute.BaseAttribute::GetId() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.BaseAttribute::GetAnchors() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.BaseAttribute::GetSources() - + - + + + - + - + System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor> Yoti.Auth.Attribute.BaseAttribute::GetVerifiers() - + - + + + - + - + System.Void Yoti.Auth.Attribute.BaseAttribute::.ctor(System.String,System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor>,System.String) - + - - - - - + + + + + + - + - + Yoti.Auth.Attribute.MultiValueItem System.Object Yoti.Auth.Attribute.MultiValueItem::get_Value() - + - + - + Yoti.Auth.ProtoBuf.Attribute.ContentType Yoti.Auth.Attribute.MultiValueItem::get_ContentType() - + - + - + - + System.Void Yoti.Auth.Attribute.MultiValueItem::.ctor(System.Object,Yoti.Auth.ProtoBuf.Attribute.ContentType) - + - - - - + + + + + - + - + Yoti.Auth.Attribute.YotiAttribute`1 - + T Yoti.Auth.Attribute.YotiAttribute`1::GetValue() - + - + + + - + - + System.Void Yoti.Auth.Attribute.YotiAttribute`1::.ctor(System.String,T,System.Collections.Generic.List`1<Yoti.Auth.Anchors.Anchor>,System.String) - + - - - + + + + - + - + Yoti.Auth.Anchors.Anchor - + System.Collections.Generic.List`1<System.Security.Cryptography.X509Certificates.X509Certificate2> Yoti.Auth.Anchors.Anchor::ConvertRawCertToX509List(Google.Protobuf.Collections.RepeatedField`1<Google.Protobuf.ByteString>) - + - - - - - + + + + + + + + + - - + + - + - + Yoti.Auth.Anchors.AnchorType Yoti.Auth.Anchors.Anchor::GetAnchorType() - + - + + + - + - + System.String Yoti.Auth.Anchors.Anchor::GetValue() - + - + + + - + - + System.Collections.Generic.List`1<System.Security.Cryptography.X509Certificates.X509Certificate2> Yoti.Auth.Anchors.Anchor::GetOriginServerCerts() - + - + + + - + - + System.Byte[] Yoti.Auth.Anchors.Anchor::GetSignature() - + - + + + - + - + Yoti.Auth.Anchors.SignedTimestamp Yoti.Auth.Anchors.Anchor::GetSignedTimeStamp() - + - + + + - + - + System.String Yoti.Auth.Anchors.Anchor::GetSubType() - + - + + + - + - + System.Void Yoti.Auth.Anchors.Anchor::.ctor(Yoti.Auth.ProtoBuf.Attribute.Anchor) - + - - - - - - - - - - - + + + + + + + + + + + + - + - + Yoti.Auth.Anchors.AnchorCertificateParser - + Yoti.Auth.Anchors.AnchorVerifierSourceData Yoti.Auth.Anchors.AnchorCertificateParser::GetTypesFromAnchor(Yoti.Auth.ProtoBuf.Attribute.Anchor) - + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - + System.Collections.Generic.List`1<System.String> Yoti.Auth.Anchors.AnchorCertificateParser::GetListOfStringsFromExtension(System.Security.Cryptography.X509Certificates.X509Certificate2,System.String) - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - + System.String Yoti.Auth.Anchors.AnchorCertificateParser::ExtensionOid(System.Enum) - + - - - - - - - + + + + + + + + + - + - + Yoti.Auth.Anchors.AnchorVerifierSourceData - + System.Collections.Generic.HashSet`1<System.String> Yoti.Auth.Anchors.AnchorVerifierSourceData::GetEntries() - + - + + + - + - + Yoti.Auth.Anchors.AnchorType Yoti.Auth.Anchors.AnchorVerifierSourceData::GetAnchorType() - + - + + + - + - + System.Void Yoti.Auth.Anchors.AnchorVerifierSourceData::.ctor(System.Collections.Generic.HashSet`1<System.String>,Yoti.Auth.Anchors.AnchorType) - + - - - - + + + + + - + - + Yoti.Auth.Anchors.ExtensionOidAttribute - + System.Void Yoti.Auth.Anchors.ExtensionOidAttribute::.ctor(System.String) - + - - - + + + + - + - + Yoti.Auth.Anchors.SignedTimestamp - + System.DateTime Yoti.Auth.Anchors.SignedTimestamp::ConvertMicroSecondsSinceEpochToDateTime(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) - + - - - - + + + + + + - + - + System.Int32 Yoti.Auth.Anchors.SignedTimestamp::GetVersion() - + - + + + - + - + System.DateTime Yoti.Auth.Anchors.SignedTimestamp::GetTimestamp() - + - + + + - + - + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetMessageDigest() - + - + + + - + - + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetChainDigest() - + - + + + - + - + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetChainDigestSkip1() - + - + + + - + - + System.Byte[] Yoti.Auth.Anchors.SignedTimestamp::GetChainDigestSkip2() - + - + + + - + - + System.Void Yoti.Auth.Anchors.SignedTimestamp::.ctor(Yoti.Auth.ProtoBuf.Common.SignedTimestamp) - + - - - - - - - - - + + + + + + + + + + - + - + Yoti.Auth.Aml.AmlAddress - + System.String Yoti.Auth.Aml.AmlAddress::GetCountry() - + - + + + - + - + System.String Yoti.Auth.Aml.AmlAddress::GetPostcode() - + - + + + - + - + System.Void Yoti.Auth.Aml.AmlAddress::.ctor(System.String,System.String) - + - - - - + + + + + - + - + Yoti.Auth.Aml.AmlProfile - + Yoti.Auth.Aml.IAmlAddress Yoti.Auth.Aml.AmlProfile::GetAmlAddress() - + - + + + - + - + System.String Yoti.Auth.Aml.AmlProfile::GetFamilyName() - + - + + + - + - + System.String Yoti.Auth.Aml.AmlProfile::GetGivenNames() - + - + + + - + - + System.String Yoti.Auth.Aml.AmlProfile::GetSsn() - + - + + + - + - + System.Void Yoti.Auth.Aml.AmlProfile::.ctor(System.String,System.String,Yoti.Auth.Aml.AmlAddress,System.String) - + - - - - - - + + + + + + + - + - + Yoti.Auth.Aml.AmlResult - + System.Boolean Yoti.Auth.Aml.AmlResult::IsOnFraudList() - + - + + + - + - + System.Boolean Yoti.Auth.Aml.AmlResult::IsOnPepList() - + - + + + - + - + System.Boolean Yoti.Auth.Aml.AmlResult::IsOnWatchList() - + - + + + - + - + Yoti.Auth.Aml.RemoteAmlService/<PerformCheck>d__0 - + System.Void Yoti.Auth.Aml.RemoteAmlService/<PerformCheck>d__0::MoveNext() - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - +