Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
50e226d
Set version -> 3.13.0
mehmet-yoti Jan 9, 2023
8b57ee1
Set version -> 3.13.0
mehmet-yoti Jan 9, 2023
8387a46
Merge pull request #417 from getyoti/development
mehmet-yoti Jan 9, 2023
1c419dd
Cleanup unneccessary files
mehmet-yoti Jan 9, 2023
c591365
Cleanup unneccessary files
mehmet-yoti Jan 9, 2023
4cadc41
Update .gitignore
mehmet-yoti Jan 9, 2023
2e3b570
Merge pull request #418 from getyoti/release/3.13.0
mehmet-yoti Jan 9, 2023
8e51452
Merge pull request #428 from getyoti/development
mehmet-yoti Apr 11, 2023
d48e8c1
Merge pull request #429 from getyoti/SDK-2201-Add-support-to-fetch-th…
mehmet-yoti Apr 18, 2023
91deb94
Merge pull request #431 from getyoti/SDK-2201-Add-support-to-fetch-th…
mehmet-yoti Apr 20, 2023
85d4483
update versions
mehmet-yoti Apr 20, 2023
5633d67
Merge branch 'master' into release/3.14.0
mehmet-yoti Apr 21, 2023
8607339
Merge pull request #424 from getyoti/release/3.14.0
mehmet-yoti Apr 21, 2023
d53bf73
Release/3.15.0 (#450)
mehmet-yoti Feb 13, 2024
657ba60
Yoti.Auth version string update (#452)
mehmet-yoti Feb 14, 2024
8330968
Release/3.16.0 (#465)
mehmet-yoti May 14, 2024
a8bc9e7
SDK-2238:added net-create-session work
mehmet-yoti Sep 29, 2023
6894167
SDK:2238 refatoring tests
mehmet-yoti Oct 5, 2023
43ba692
updated test franework version
mehmet-yoti Oct 5, 2023
f752746
updated test franework version
mehmet-yoti Oct 5, 2023
6d2a181
SDK-2245: net retrieve session
mehmet-yoti Oct 6, 2023
075d91e
SDK-2245: net retrieve session
mehmet-yoti Oct 6, 2023
96275bb
SDK-2245: update session response
mehmet-yoti Oct 10, 2023
b121aa2
SDK-2466 added notification builder and test (#468)
mehmet-yoti Jun 28, 2024
a81e5c3
SDK-2354 added error details and related tests (#467)
mehmet-yoti Jun 28, 2024
1bf3cec
SDK-2374 added failure reason info to idv and added tests (#466)
mehmet-yoti Jun 28, 2024
168cda7
Updated Release Version To 3.17
mehmet-yoti Jun 28, 2024
534b730
SDK-2382: Update IDV example project defaults (#440) (#470)
mehmet-yoti Jun 28, 2024
e9d2296
SDK-2354 added error info to example success pages in docscan and dig…
msepici Oct 1, 2024
522f5a7
Updated Examples
mehmet-yoti Oct 2, 2024
66c2af2
SDK-2354-added-dbs-example-digital-identity-project
msepici Oct 2, 2024
59e9ce8
Updated Examples
mehmet-yoti Oct 2, 2024
eda8295
Release changes
mehmet-yoti Oct 11, 2024
d909db6
Release changes
mehmet-yoti Oct 11, 2024
957ec85
SDK-2238:added net-create-session work
mehmet-yoti Sep 29, 2023
b69e2b9
SDK:2238 refatoring tests
mehmet-yoti Oct 5, 2023
a9c1669
updated test franework version
mehmet-yoti Oct 5, 2023
d76fbca
SDK-2245: net retrieve session
mehmet-yoti Oct 6, 2023
a982586
SDK-2245: net retrieve session
mehmet-yoti Oct 6, 2023
b01ddfc
SDK-2245: update session response
mehmet-yoti Oct 10, 2023
2e137e3
IN-5590: Update support link (#437)
nikhilPank Jan 10, 2024
ebd0a46
Updated Examples
mehmet-yoti Oct 2, 2024
81debf5
rebase into master
mehmet-yoti Oct 11, 2024
39a1ea2
rebase into master
mehmet-yoti Oct 11, 2024
00666f9
rebase into master
mehmet-yoti Oct 11, 2024
12bb76e
rebase into master
mehmet-yoti Oct 11, 2024
106da4c
rebase into master
mehmet-yoti Oct 11, 2024
9961e74
Updated Home Controller to solve minor issue
mehmet-yoti Oct 17, 2024
7984ba5
Updated Home Controller to solve minor issue
mehmet-yoti Oct 17, 2024
d6e0021
Merge pull request #475 from getyoti/release/3.17.0
mehmet-yoti Oct 17, 2024
2da8475
release/3.18.0 (#492)
mehmet-yoti Oct 27, 2025
f07a02c
Release/3.19.0 (#530)
mehmet-yoti Mar 23, 2026
3d8b363
SDK-2806 Fix DigitalIdentityService QR-code URL construction
mehmet-yoti May 15, 2026
cd8112c
SDK-2806 Address Copilot review: validate sessionId, tighten URL asserts
mehmet-yoti May 15, 2026
c034cb4
Merge pull request #546 from getyoti/SDK-2806-digital-identity-servic…
mehmet-yoti May 15, 2026
51b3c3c
addedd null check test
mehmet-yoti May 26, 2026
88a7eb9
updated version number to 3.20
mehmet-yoti May 26, 2026
3cef843
updated version number to 3.20
mehmet-yoti May 26, 2026
5471420
Merge pull request #547 from getyoti/release/3.20.0
mehmet-yoti May 26, 2026
5797202
feat(SDK-2808): .NET - SDK Security Dependency Upgrade
mehmet-yoti Jun 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ assignees: ''
#
# There's a better way to get help!
#
# Send your questions or issues to sdksupport@yoti.com
# Send your questions or issues to https://support.yoti.com
#
#
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -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.
4 changes: 1 addition & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,6 @@ Backup*/
# except build/, which is used as an MSBuild target.
!**/packages/build/

.DS_STORE
.DS_Store

# Coverage
OpenCover/

Expand All @@ -45,3 +42,4 @@ src/tools/

# Code Coverage Results
src/TestResults/
*.lscache
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
59 changes: 59 additions & 0 deletions azure-pipelines-sonar-only.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Minimal SonarCloud-only pipeline for testing
# This is a temporary pipeline to test SonarCloud configuration

trigger:
branches:
include:
- release/3.20.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.20.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
4 changes: 2 additions & 2 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ steps:
scannerMode: 'MSBuild'
projectKey: 'getyoti:dotnet'
projectName: '.NET SDK'
projectVersion: '3.11.0'
projectVersion: '3.20.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
sonar.exclusions = src/Yoti.Auth/ProtoBuf/**,src/Examples/**,**/obj/**,**/*.dll,src/Yoti.Auth/DigitalIdentity/**
displayName: SonarCloud Prepare Analysis

- task: NuGetToolInstaller@1
Expand Down
7 changes: 5 additions & 2 deletions src/Examples/Aml/AmlExample/AmlExample.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
Expand All @@ -12,7 +12,10 @@

<ItemGroup>
<PackageReference Include="DotNetEnv" Version="2.3.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
<!-- CVE fixes: GHSA-ghhp-997w-qr28 (Critical), GHSA-cmhx-cq75-c4mj (High) -->
<PackageReference Include="System.Text.Encodings.Web" Version="4.7.2" />
<PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
</ItemGroup>

<ItemGroup>
Expand Down
25 changes: 25 additions & 0 deletions src/Examples/DigitalIdentity/DigitalIdentity/.dockerignore
Original file line number Diff line number Diff line change
@@ -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
2 changes: 2 additions & 0 deletions src/Examples/DigitalIdentity/DigitalIdentity/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
YOTI_CLIENT_SDK_ID=yourClientSdkId
YOTI_KEY_FILE_PATH=yourKeyFilePath
Original file line number Diff line number Diff line change
@@ -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<AdvancedIdentityShareController> 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);
Comment on lines +30 to +38

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"",

}
Comment on lines +46 to +57
]
}
]

}";

var advancedIdentityProfile = JsonConvert.DeserializeObject<AdvancedIdentityProfile>(advancedIdentityProfileJson);

var policy = new PolicyBuilder()
.WithAdvancedIdentityProfileRequirements(advancedIdentityProfile)
.Build();

var sessionReq = new ShareSessionRequestBuilder().WithPolicy(policy)
.WithRedirectUri("https:/www.yoti.com")
.Build();
Comment on lines +69 to +72

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");
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
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<DbsController> 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);

Comment on lines +29 to +38
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();
Comment on lines +62 to +69

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");
}
}
}
}
Loading