Ana i├žeri─če ge├ž

Verification (Do─črulama) ­čÄ»

Bu k─▒s─▒mda Verifier bireyinin rollerini birlikte ger├žekle┼čtirece─čiz.

alternative text

Bu i┼člemler:

  • ­čôą Claimer taraf─▒ndan verilen Presentation objesini teslim alaca─č─▒z.
  • ­čžÉ Veri i├žerisindeki bilgilerin do─črulu─čunu kontrol edece─čiz.
  • ­čöŚ attestation i┼čleminin do─čru olup olmad─▒─č─▒n─▒ zincirdeki hash de─čerini kontrol ederek onaylayacaks─▒n. Bu attestation revoke da edilmi┼č olabilir. Bu duruma da bakmak gerekir.
  • ­čĄö G├Ânderilen kimlik belgesinin Claimer taraf─▒ndan g├Ânderildi─čine emin olacaks─▒n.
­čÄë Presentation: ┼×imdi ben PowerPoint Sunumu mu haz─▒rl─▒cam birde yuha!

Presentation yani t├╝rk├žesi ile sunum yapt─▒─č─▒m─▒z belge credential kullan─▒larak ├╝retilecek belgedir. Bir presentation credential'in aksine i├žerisindeki belgelerin baz─▒lar─▒n─▒ saklayabilir. Bu bilgiler verifier'lar taraf─▒ndan bilinmesi gerekmeyen bilgilerdir. Bu presentation ayn─▒ zamanda credential'in Claimer'a ait oldu─čunu kan─▒tlamaktad─▒r.

­čĄô Verification Neydi ya hat─▒rlasak m─▒?

­čöŹ Bir Claimer, onaylanm─▒┼č bir Kimlik Bilgisini (Credential) ald─▒─č─▒nda, bunu c├╝zdanlar─▒nda saklayabilir. Ancak bu kimlik bilgisinin bir kopyas─▒ yoksa, ge├žerlili─čini nas─▒l belirleyebiliriz?

­čöĺ KILT, bir Claimer taraf─▒ndan bir kimlik bilgisinde sunulan bilgilerin do─črulu─čunu ve ge├žerlili─čini bir Do─črulay─▒c─▒ya (Verifier) do─črulama olana─č─▒ tan─▒r.

­čĺí Do─črulay─▒c─▒, bu ├╝├ž├╝nc├╝ tarafa ya do─črudan kendi itibarlar─▒na dayanarak ya da Onaylay─▒c─▒n─▒n dahil oldu─ču bir delegasyon yap─▒s─▒ arac─▒l─▒─č─▒yla g├╝ven duyar.

Ôťů Do─črulama s├╝reci i├žin:

­čöĹ Claimer, kimlik bilgisi ve tan─▒mlay─▒c─▒lar─▒yla ili┼čkilendirilmi┼č ├Âzel anahtara ihtiya├ž duyar.

­čöĺ Do─črulay─▒c─▒, g├╝vendi─či Onaylay─▒c─▒n─▒n tan─▒mlay─▒c─▒s─▒na ihtiya├ž duyar.

­čöÄ Do─črulama s├╝reci s─▒ras─▒nda, Claimer, Do─črulay─▒c─▒ya ├╝├ž ┼čeyi kan─▒tlamay─▒ ama├žlar:

1´ŞĆÔâú Kimlik bilgisi ge├žerlidir ve Onaylay─▒c─▒ taraf─▒ndan iptal edilmemi┼čtir. 2´ŞĆÔâú Kimlik bilgisinde belirtilen ├Âzellikler ger├žekten Claimer'a aittir. 3´ŞĆÔâú Kimlik bilgisi, belirli bir kullan─▒m durumu i├žin Do─črulay─▒c─▒ i├žin ilgili bilgileri i├žerir.

­čÄĘ Presentation Olu┼čturmaÔÇő

Sadece Claimer'─▒ g├Ânderip Verifier'─▒n do─črulmas─▒n─▒ bekleyemez. Ayn─▒ zamanda bu credantial ile birlikte o credantial'in sahibi oldu─čunu kan─▒tlamas─▒ gerekmektedir. Bu sahipli─či kan─▒tlamak i├žin bir presentation olu┼čturup imzalamas─▒ gerekmektedir.

­čôŽ Paketlerin Eklenmesi:ÔÇő

claimer/createPresentation.ts
import * as Kilt from '@kiltprotocol/sdk-js'

Bu sat─▒r, KILT SDK's─▒n─▒ projeye dahil eder. Bu SDK, KILT protokol├╝ ile etkile┼čimde bulunmak i├žin gerekli fonksiyonlar─▒ ve s─▒n─▒flar─▒ sa─člar.

­čŤá createPresentation Fonksiyonu:ÔÇő

claimer/createPresentation.ts
export async function createPresentation(
credential: Kilt.ICredential,
signCallback: Kilt.SignCallback,
challenge?: string
): Promise<Kilt.ICredentialPresentation> {

Bu fonksiyon, bir kimlik bilgisi sunumu olu┼čturmak i├žin asenkron bir fonksiyondur. ├ť├ž parametre al─▒r:

  • credential: Do─črulay─▒c─▒ya sunulacak olan kimlik bilgisi.
  • signCallback: Kimlik bilgisi sunumunun imzalanmas─▒ i├žin kullan─▒lacak geri ├ža─č─▒rma fonksiyonu.
  • challenge: Opsiyonel bir parametre. Bu, do─črulay─▒c─▒n─▒n talep etti─či rastgele bir dizedir ve kimlik bilgisi sunumunun do─črulay─▒c─▒ taraf─▒ndan talep edildi─čini do─črulamak i├žin kullan─▒l─▒r.

Fonksiyon, bir ICredentialPresentation nesnesi d├Ând├╝r├╝r. Bu nesne, kimlik bilgisi sunumunun kendisidir.

­čÄĘ Sunumu Olu┼čturma:ÔÇő

claimer/createPresentation.ts
return Kilt.Credential.createPresentation({
credential,
signCallback,
challenge
})

Bu k─▒s─▒m, Kilt.Credential.createPresentation fonksiyonunu kullanarak bir kimlik bilgisi sunumu olu┼čturur. Bu fonksiyon, yukar─▒da belirtti─čimiz ├╝├ž parametreyi al─▒r ve bir kimlik bilgisi sunumu d├Ând├╝r├╝r.

­čîŹ Geni┼č bir bak─▒┼č yapal─▒m

┼×imdi kodun tamam─▒na bakarak i┼člevini anlamak istersek:

claimer/createPresentation.ts
import * as Kilt from '@kiltprotocol/sdk-js'

export async function createPresentation(
credential: Kilt.ICredential,
signCallback: Kilt.SignCallback,
challenge?: string
): Promise<Kilt.ICredentialPresentation> {
// Create the presentation from credential, DID and challenge.
return Kilt.Credential.createPresentation({
credential,
signCallback,
challenge
})
}

├ľzetle, bu kod, bir kimlik bilgisi sunumu olu┼čturmay─▒ sa─člar. Bu sunum, bir do─črulay─▒c─▒ya kimlik bilgisi sunarken kullan─▒l─▒r. Do─črulay─▒c─▒, bu sunumu kullanarak kimlik bilgisinin ge├žerlili─čini ve kimlik bilgisi sahibinin kimli─čini do─črulayabilir.

Verify (Onaylama)ÔÇő

Hadi verification kodumuzu yazal─▒m. ─░lk olarak getChallange ad─▒nda bir fonksiyon olu┼čturarak Claimer'─▒n imzalayarak credantial'a sahip oldu─čunu kan─▒tlayaca─č─▒z.

Sonras─▒nda verifyPresentation fonksiyonu ile ger├žek do─črulama yani verification i┼člemini ger├žekle┼čtirece─čiz. Bu i┼člemler i├žin verify.ts dosyas─▒n─▒ kullanaca─č─▒z.

Paket ve Mod├╝l ─░├že Aktarmalar─▒ÔÇő

verify.ts
import { config as envConfig } from 'dotenv'
import * as Kilt from '@kiltprotocol/sdk-js'
import { createPresentation } from './claimer/createPresentation'
import { generateKeypairs } from './claimer/generateKeypairs'
import { generateLightDid } from './claimer/generateLightDid'

Bu b├Âl├╝mde gerekli mod├╝ller ve paketler i├že aktar─▒l─▒yor. ├ľzellikle dotenv kullan─▒larak ortam de─či┼čkenleri y├╝kleniyor ve KILT SDK's─▒ ile di─čer yard─▒mc─▒ fonksiyonlar dahil ediliyor. Belirtilen Paketleri daha ├Âncesinde s─▒ras─▒yla birlikte olu┼čturmu┼čtuk.

Benzersiz Challenge Olu┼čturmaÔÇő

verify.ts
function getChallenge(): string {
return Kilt.Utils.UUID.generate()
}

Bu fonksiyon do─črulama s├╝reci i├žin benzersiz bir challenge olu┼čturur.

alternative text

Sunumu Do─črulama FonksiyonuÔÇő

verify.ts
async function verifyPresentation(
presentation: Kilt.ICredentialPresentation,
challenge: string,
trustedAttesterUris: Kilt.DidUri[]
): Promise<boolean> {

Do─črulama i┼člemi i├žin bir fonksiyon olu┼čturarak i┼čleme ba┼člayabiliriz. Bu fonksiyon i├žerisine 3 adet parametre alacak olup True veya False olmak ├╝zere bir Promise d├Ând├╝recektir. Bu parametrelere bak─▒lacak olunursa s─▒ras─▒yla:

  1. presentation: Do─črulanacak kimlik bilgisi sunumu.
  2. challenge: Do─črulay─▒c─▒n─▒n (Verifier) g├Ânderdi─či benzersiz de─čer. Bu, kimlik bilgisi sunumunun do─črulay─▒c─▒ taraf─▒ndan talep edildi─čini do─črulamak i├žin kullan─▒l─▒r.
  3. trustedAttesterUris: G├╝vendi─čimiz onaylay─▒c─▒lar─▒n (Attester) DID URI'lerinin listesi.

Bu fonksiyon bir credential presentation'u do─črular. Sunumun ge├žerli olup olmad─▒─č─▒n─▒, sahipli─čini ve attestation'─▒n do─čru olup olmad─▒─č─▒n─▒ kontrol eder.

KILT API'sine Eri┼čim:ÔÇő

verify.ts
Kilt.ConfigService.get('api')

Bu sat─▒r, KILT API'sine eri┼čim sa─člar.

Try Catch Yap─▒s─▒ÔÇő

verify.ts
try {
.
.
.
} catch {
return false
}

Sonras─▒nda devam─▒nda bizi ilk olarak bir try catch yap─▒s─▒ kar┼č─▒lar. Bu yap─▒ attestationun do─čru olup olmad─▒─č─▒n─▒ kontrol etmektedir. E─čer do─čru de─čilse yap─▒ catch blo─čuna yakalan─▒r ve false de─čeri ile attestation'un zincirde olmad─▒─č─▒ anla┼č─▒l─▒r.

Sunumu Do─črulama:ÔÇő

verify.ts
const { revoked, attester } = await Kilt.Credential.verifyPresentation(
presentation,
{ challenge }
)

Try yap─▒s─▒n─▒n i├žerisine girildi─činde as─▒l do─črulaman─▒n yap─▒ld─▒─č─▒ Kilt.Credential.verifyPresentation fonksiyonu bizi kar┼č─▒lamaktad─▒r. Bu fonskiyon i├žerisine 2 adet de─či┼čken almaktad─▒r. Bunlar sunulan presentation ve claimer'─▒n do─čru birey oldu─čunu kan─▒tlamak i├žin challange de─čerleridir.

Bu fonksiyon ├ž─▒kt─▒ olarak 2 adet de─čer d├Ând├╝r├╝r. Bu de─čerler attestation'un revoke edilip edilmedi─čini yani ge├žerlili─čini yitirip yitirmedi─čini ifade eden de─čer olmaktayken di─čer de─čer ise sunumu onaylayan attester'─▒n kim oldu─čudur.

verify.ts
if (revoked) {
return false
}

E─čer revoke de─čeri true ise yani credenatial ge├žerlili─čini yitirmi┼čse verification de─čeri false olarak ├ž─▒kt─▒ verilir.

verify.ts
return trustedAttesterUris.includes(attester)

Bu sat─▒r, sunumu onaylayan─▒n (attester) g├╝vendi─čimiz onaylay─▒c─▒ listesinde (trustedAttesterUris) olup olmad─▒─č─▒n─▒ kontrol eder. E─čer onaylay─▒c─▒ bu listede ise, fonksiyon true d├Ând├╝r├╝r, aksi takdirde false d├Ând├╝r├╝r.

tehlike

Bir Verifier'─▒n kontrol etmesi gereken en ├Ânemli niteliklerden biri bir attester'a g├╝venip g├╝venmedi─čidir. E─čer g├╝venmiyorsa attestation zincirde olsun olmas─▒n belgeyi kabul etmeyebilir. Bu durum attesterlar aras─▒ndaki g├╝ven yar─▒┼č─▒n─▒ olu┼čturur.

Do─črulama Ak─▒┼č─▒ (Verification Flow)ÔÇő

verify.ts
export async function verificationFlow(
credential: Kilt.ICredential,
signCallback: Kilt.SignCallback,
trustedAttesterUris: Kilt.DidUri[] = []
) {

Bu fonksiyon, do─črulama s├╝recini y├Ânetir. ├ľncelikle bir challenge olu┼čturur, ard─▒ndan bir sunum olu┼čturur ve son olarak sunumu do─črular. Bu fonksiyonda i├žerisine 3 adet parametre almaktad─▒r. Bu parametrelere teker teker bak─▒lacak olunursa:

  1. credential: Kilt.ICredential: Do─črulay─▒c─▒ya sunulacak olan kimlik bilgisi.
  2. signCallback: Kilt.SignCallback: Kimlik bilgisi sunumunun imzalanmas─▒ i├žin kullan─▒lacak geri ├ža─č─▒rma fonksiyonu.
  3. trustedAttesterUris: Kilt.DidUri[]: Do─črulay─▒c─▒n─▒n g├╝vendi─či Onaylay─▒c─▒lar─▒n (Attester) DID URI'lerinin listesi. Opsiyonel bir parametre ve varsay─▒lan olarak bo┼č bir liste ile ba┼člar.
verificationFlow ve verifyPresentation Fark─▒ Ne?

Asl─▒nda bu fonksiyonu olu┼čturarak t├╝m verification i┼člemini tek bir yerde y├Ânetmekteyiz.

verificationFlow fonksiyonu, verifyPresentation fonksiyonunu i├žeren daha geni┼č bir do─črulama s├╝recini temsil eder. Tek ba┼č─▒na verifyPresentation fonksiyonu sadece bir kimlik bilgisi sunumunun do─črulu─čunu kontrol eder. Ancak, ger├žek d├╝nyada bir do─črulama s├╝reci, sadece sunumun do─črulu─čunu kontrol etmekten daha fazlas─▒n─▒ gerektirir. ─░┼čte bu y├╝zden verificationFlow fonksiyonuna ihtiya├ž duyar─▒z.

verificationFlow fonksiyonunun amac─▒ ┼čunlard─▒r:

  1. Benzersiz Bir Challenge Olu┼čturma: Do─črulay─▒c─▒, Claimer'a benzersiz bir challenge g├Ânderir. Bu, sunumun ger├žek zamanl─▒ olarak ve belirli bir talep i├žin olu┼čturuldu─čundan emin olmak i├žin kullan─▒l─▒r.

  2. Sunumu Olu┼čturma: Claimer, bu challenge'─▒ kullanarak kimlik bilgisi sunumunu olu┼čturur ve imzalar.

  3. Sunumu Do─črulama: Do─črulay─▒c─▒, Claimer'dan al─▒nan sunumu verifyPresentation fonksiyonu ile do─črular.

  4. Sonu├žlar─▒ Bildirme: Sunum do─čruysa, do─črulay─▒c─▒ ba┼čar─▒l─▒ bir do─črulama mesaj─▒ yazd─▒r─▒r. Aksi takdirde, ba┼čar─▒s─▒z bir do─črulama mesaj─▒ yazd─▒r─▒r.

Bu ad─▒mlar─▒n her biri, merkezi olmayan bir kimlik do─črulama s├╝recinin kritik bile┼čenleridir. verifyPresentation fonksiyonu, bu s├╝recin sadece bir par├žas─▒d─▒r. verificationFlow fonksiyonu, bu ad─▒mlar─▒ bir araya getirerek tam bir do─črulama s├╝reci sa─člar. Bu nedenle, sadece verifyPresentation fonksiyonuna de─čil, ayn─▒ zamanda bu ad─▒mlar─▒ birle┼čtiren verificationFlow fonksiyonuna da ihtiya├ž duyar─▒z.

Benzersiz Challenge Olu┼čturmaÔÇő

verify.ts
const challenge = getChallenge()

Bu sat─▒r, Claimer'a g├Ânderilmek ├╝zere benzersiz bir challenge olu┼čturur. Bu, sunumun ger├žek zamanl─▒ olarak ve belirli bir talep i├žin olu┼čturuldu─čundan emin olmak i├žin kullan─▒l─▒r. Bu fonksiyonu ├Ânceden olu┼čturmu┼čtuk.

Kimlik Bilgisi Sunumu Olu┼čturmaÔÇő

verify.ts
const presentation = await createPresentation(
credential,
signCallback,
challenge
)

Bu sat─▒r, verilen kimlik bilgisi, imza geri ├ža─č─▒rma fonksiyonu ve challenge kullanarak bir kimlik bilgisi sunumu olu┼čturur. Bu fonksiyonu claimer klas├Âr├╝nde birlikte olu┼čturmu┼čtuk.

Sunumu Do─črulama:ÔÇő

verify.ts
const isValid = await verifyPresentation(
presentation,
challenge,
trustedAttesterUris
)

Bu sat─▒r, olu┼čturulan kimlik bilgisi sunumunu do─črular. E─čer sunum ge├žerliyse, isValid de─čeri true olacakt─▒r.

Sonu├žlar─▒ Bildirme:ÔÇő

verify.ts
if (isValid) {
console.log('Verification successful! You are allowed to enter the club ­čÄë')
} else {
console.log('Verification failed! ­čÜź')
}

Bu k─▒s─▒m, sunumun do─črulu─čuna g├Âre bir mesaj yazd─▒r─▒r. E─čer sunum do─čruysa, ba┼čar─▒l─▒ bir do─črulama mesaj─▒ yazd─▒r─▒l─▒r. Aksi takdirde, ba┼čar─▒s─▒z bir do─črulama mesaj─▒ yazd─▒r─▒l─▒r.

Fonksiyon Ne yapt─▒?

verificationFlow() fonksiyonunun i├žeri─čine bakt─▒─č─▒m─▒zda asl─▒nda ├Ânceden yazd─▒─č─▒m─▒z fonksiyonlar─▒ ├žal─▒┼čt─▒r─▒r─▒z. S─▒ras─▒yla

  • Claimer'─▒ onaylamak i├žin bir Challange olu┼čtururuz.
  • Claimer taraf─▒ndan bir presentation olu┼čtururuz.
  • Sunulan do─črulamay─▒ Verifier olarak do─črular─▒z.

Ana FonksiyonÔÇő

Bu b├Âl├╝m bu dosyan─▒n do─črudan ├žal─▒┼čt─▒r─▒lmas─▒ durumunda ├žal─▒┼čacak olan ana fonksiyonu i├žerir. Ortam de─či┼čkenlerini y├╝kler, KILT'a ba─član─▒r ve do─črulama ak─▒┼č─▒n─▒ ba┼člat─▒r.

verify.ts
if (require.main === module) {
;(async () => {

If yap─▒s─▒ ile mod├╝l├╝n direkt olarak ├žal─▒┼čt─▒r─▒l─▒p ├žal─▒┼čt─▒r─▒lmad─▒─č─▒n─▒ kontrol ederiz.

Ortam De─či┼čkenlerinin Y├╝klenmesi:ÔÇő

verify.ts
envConfig()

Bu sat─▒r, .env dosyas─▒ndaki ortam de─či┼čkenlerini y├╝kler. Bu, projede kullan─▒lan ├že┼čitli yap─▒land─▒rma de─čerlerini saklamak i├žin kullan─▒l─▒r.

KILT'a Ba─članma:ÔÇő

verify.ts
await Kilt.connect(process.env.WSS_ADDRESS as string)

Bu sat─▒r, KILT a─č─▒na ba─član─▒r. Ba─člant─▒ adresi .env dosyas─▒ndan al─▒n─▒r.

Claimer'─▒n DID Bilgilerini Olu┼čturma:ÔÇő

verify.ts
const claimerDidMnemonic = process.env.CLAIMER_DID_MNEMONIC as string
const { authentication } = generateKeypairs(claimerDidMnemonic)
const claimerDid = generateLightDid(claimerDidMnemonic)

Bu ad─▒mlar, Claimer'─▒n DID (Decentralized Identifier) bilgilerini olu┼čturmak i├žin kullan─▒l─▒r. Bu, kimlik bilgisi sunumunu imzalamak i├žin gereklidir.

uyar─▒

Fark etmi┼č olabilece─činiz gibi Claimer'─▒n DID'sini sorgularken yeni bir Light DID olu┼čturma fonksiyonu ├žal─▒┼čt─▒rd─▒k. Bu durumun nedeni zincir ├╝zerinde depolanmayan light DID'lerin her seferinde yeniden olu┼čuturulmaya a├ž─▒k olmas─▒d─▒r.

verificationFlow() fonskiyonunun i├žerisinde presantation olu┼čturma fonksiyonu da ├žal─▒┼čmaktad─▒r. Bu nedenle Claimer bireyinin DID'sine ihtiya├ž vard─▒r.

Attester'─▒n DID Bilgilerini Y├╝kleme:ÔÇő

verify.ts
const attesterDid = process.env.ATTESTER_DID_URI as Kilt.DidUri

Bu sat─▒r, Attester'─▒n DID URI'sini .env dosyas─▒ndan al─▒r.

Kimlik Bilgisini Y├╝kleme:ÔÇő

verify.ts
const credential = JSON.parse(process.env.CLAIMER_CREDENTIAL as string)

Bu sat─▒r daha ├Ânceden attestation b├Âl├╝m├╝nde kodumuzu ├žal─▒┼čt─▒rarak elde etti─čimiz ve .env dosyas─▒ i├žerisine kaydetti─čimiz Credantial'─▒n kod i├žerisine eklenmesini sa─člamaktad─▒r.

Do─črulama Ak─▒┼č─▒n─▒ Ba┼člatma:ÔÇő

verify.ts
await verificationFlow(
credential,
async ({ data }) => ({
signature: authentication.sign(data),
keyType: authentication.type,
keyUri: `${claimerDid.uri}${claimerDid.authentication[0].id}`
}),
[attesterDid]
)

Bu sat─▒r, yukar─▒da tan─▒mlanan verificationFlow fonksiyonunu ├ža─č─▒rarak do─črulama s├╝recini ba┼člat─▒r.

Hata Yakalama:ÔÇő

verify.ts
} catch (e) {
console.log('Error in the verification flow')
throw e
}

Bu k─▒s─▒m, do─črulama s├╝reci s─▒ras─▒nda herhangi bir hata olu┼čursa bu hatay─▒ yakalar ve bir hata mesaj─▒ yazd─▒r─▒r.


Kodun B├╝t├╝n├╝

Kodun b├╝t├╝n├╝ne bir arada bakarak yap─▒lan i┼člemleri incelememiz gerekirse:

verify.ts
import { config as envConfig } from 'dotenv'

import * as Kilt from '@kiltprotocol/sdk-js'

import { createPresentation } from './claimer/createPresentation'
import { generateKeypairs } from './claimer/generateKeypairs'
import { generateLightDid } from './claimer/generateLightDid'

function getChallenge(): string {
return Kilt.Utils.UUID.generate()
}

// Verifies validity, ownership & attestation.
async function verifyPresentation(
presentation: Kilt.ICredentialPresentation,
challenge: string,
trustedAttesterUris: Kilt.DidUri[]
): Promise<boolean> {
Kilt.ConfigService.get('api')

try {
const { revoked, attester } = await Kilt.Credential.verifyPresentation(
presentation,
{ challenge }
)

if (revoked) {
return false
}
// Returns true if no trusted attester URI is provided or, if it is, if it matches the one that issued the presented credential.
return trustedAttesterUris.includes(attester)
} catch {
return false
}
}

export async function verificationFlow(
credential: Kilt.ICredential,
signCallback: Kilt.SignCallback,
trustedAttesterUris: Kilt.DidUri[] = []
) {
// Verifier sends a unique challenge to the claimer ­čĽŐ
const challenge = getChallenge()

// Create a presentation and send it to the verifier ­čĽŐ
const presentation = await createPresentation(
credential,
signCallback,
challenge
)

// The verifier checks the presentation.
const isValid = await verifyPresentation(
presentation,
challenge,
trustedAttesterUris
)

if (isValid) {
console.log('Verification successful! You are allowed to enter the club ­čÄë')
} else {
console.log('Verification failed! ­čÜź')
}
}

// Don't execute if this is imported by another file.
if (require.main === module) {
;(async () => {
envConfig()

try {
await Kilt.connect(process.env.WSS_ADDRESS as string)
const claimerDidMnemonic = process.env.CLAIMER_DID_MNEMONIC as string
const { authentication } = generateKeypairs(claimerDidMnemonic)
const claimerDid = generateLightDid(claimerDidMnemonic)
const attesterDid = process.env.ATTESTER_DID_URI as Kilt.DidUri
// Load credential and claimer DID
const credential = JSON.parse(process.env.CLAIMER_CREDENTIAL as string)
await verificationFlow(
credential,
async ({ data }) => ({
signature: authentication.sign(data),
keyType: authentication.type,
keyUri: `${claimerDid.uri}${claimerDid.authentication[0].id}`
}),
[attesterDid]
)
} catch (e) {
console.log('Error in the verification flow')
throw e
}
})()
}

S─▒ras─▒yla i┼člevler:

  • Paketler eklenir.
  • Claimer'─▒n kendinin credential'a sahip oldu─čunu kan─▒tlamak i├žin bir challange olu┼čturulur.
  • True ve False ┼čeklinde bir ├ž─▒kt─▒ veren Presantation onaylama fonksiyonu yaz─▒l─▒r.
  • Ba┼čtan sona t├╝m i┼člemleri bir arada ├žal─▒┼čt─▒rmak i├žin verificationFlow() fonksiyonu yaz─▒l─▒r.
  • Fonksiyonun tek ba┼č─▒na ├žal─▒┼č─▒rken neler yapaca─č─▒n─▒ belirten fonksiyon yaz─▒l─▒r.

Kodu ├çal─▒┼čt─▒ral─▒m!ÔÇő

Kodu ├žal─▒┼čt─▒rmak i├žin terminalde kilt-rocks klas├Âr├╝nde bulundu─čumuza emin olduktan sonra alt k─▒s─▒mdaki kodu ├žal─▒┼čt─▒rabiliriz:

yarn ts-node verify.ts
BA┼×ARDIN

T├╝m bireyleri t├╝m kodlar─▒ ile birlikte ├žal─▒┼čt─▒rd─▒n ve hallettin! Seninle gurur duyuyorum! Hadi birlikte KILT-SDK ile projeler ger├žekle┼čtirelim!