ডিজিটাল আইডি অ্যাপ-মধ্যস্থ এবং ওয়েব ফ্লো উভয় ক্ষেত্রেই গ্রহণ করা যেতে পারে। গুগল ওয়ালেট থেকে শংসাপত্র গ্রহণ করতে আপনার প্রয়োজন হবে:
- প্রদত্ত নির্দেশাবলী অনুসরণ করে অ্যাপ বা ওয়েব ব্যবহার করে একীভূত করুন।
- Google Wallet স্যান্ডবক্স ব্যবহার করে আপনার প্রবাহ পরীক্ষা করতে পরীক্ষা আইডি ব্যবহার করুন।
- লাইভ হতে, অ্যাক্সেসের অনুরোধ করতে এবং Google Wallet শংসাপত্রের পরিষেবার শর্তাবলী গ্রহণ করতে এই ফর্মটি পূরণ করুন। আপনার প্রতিটি ব্যবসায়িক সত্তার জন্য আপনাকে এটি পূরণ করতে হবে। ফর্মটি পূরণ করার পরে আমাদের টিম আপনার সাথে যোগাযোগ করবে।
- আপনার যদি কোন প্রশ্ন থাকে, তাহলে আপনি
wallet-identity-rp-support@google.comঠিকানায় যোগাযোগ করতে পারেন।
সমর্থিত শংসাপত্রের ফর্ম্যাটগুলি
ডিজিটাল পরিচয় নথির ডেটা ফর্ম্যাট নির্ধারণের জন্য বেশ কয়েকটি প্রস্তাবিত মান বিদ্যমান, যার মধ্যে দুটি উল্লেখযোগ্য শিল্প আকর্ষণ অর্জন করেছে:
- mdocs - ISO দ্বারা সংজ্ঞায়িত।
- w3c যাচাইযোগ্য শংসাপত্র - w3c দ্বারা সংজ্ঞায়িত।
অ্যান্ড্রয়েড ক্রেডেনশিয়াল ম্যানেজার উভয় ফর্ম্যাটই সাপোর্ট করে, কিন্তু গুগল ওয়ালেট বর্তমানে শুধুমাত্র mdoc ভিত্তিক ডিজিটাল আইডি সাপোর্ট করে।
সমর্থিত শংসাপত্র
গুগল ওয়ালেট ২ ধরণের শংসাপত্র সমর্থন করে:
- মোবাইল ড্রাইভিং লাইসেন্স (mDL)
- আইডি পাস
আপনি আপনার প্রবাহে একটি মাত্র প্যারামিটার পরিবর্তনের মাধ্যমে যেকোনো একটি শংসাপত্রের জন্য অনুরোধ করতে পারেন।
ব্যবহারকারীর অভিজ্ঞতা
এই বিভাগে প্রস্তাবিত অনলাইন উপস্থাপনা প্রবাহ সম্পর্কে আলোচনা করা হয়েছে। প্রবাহটি অ্যালকোহল সরবরাহের জন্য একটি অ্যাপে বয়সের উপস্থাপনা দেখায়, তবে UX ওয়েবের পাশাপাশি অন্যান্য ধরণের উপস্থাপনার জন্যও একই রকম।
![]() | ![]() | ![]() | ![]() | ![]() |
| অ্যাপ বা ওয়েবসাইটে ব্যবহারকারীকে বয়স যাচাই করতে বলা হয়েছে | ব্যবহারকারী উপলব্ধ যোগ্য শংসাপত্রগুলি দেখেন | ব্যবহারকারী গুগল ওয়ালেটে নিশ্চিতকরণ পৃষ্ঠাটি দেখেন | ব্যবহারকারী শেয়ারিং নিশ্চিত করার জন্য প্রমাণীকরণ করে | অ্যাপ বা ওয়েবসাইটে ডেটা পাঠানো হয়েছে |
মূল নোট
- অ্যাপ বা ওয়েবসাইটে API-তে প্রবেশের স্থান তৈরি করার ক্ষেত্রে নমনীয়তা রয়েছে। ধাপ ১-এ দেখানো হয়েছে, আমরা "ডিজিটাল আইডি দিয়ে যাচাই করুন" এর মতো একটি জেনেরিক বোতাম দেখানোর পরামর্শ দিচ্ছি কারণ ওভারটাইম আমরা আশা করি যে Google Wallet-এর বাইরেও API-এর মাধ্যমে বিকল্পগুলি উপলব্ধ থাকবে।
- ধাপ ২-এ নির্বাচক স্ক্রিনটি Android দ্বারা রেন্ডার করা হয়েছে। প্রতিটি Wallet দ্বারা প্রদত্ত নিবন্ধন যুক্তি এবং নির্ভরকারী পক্ষ দ্বারা প্রেরিত অনুরোধের মধ্যে মিলের মাধ্যমে যোগ্য শংসাপত্রগুলি নির্ধারিত হয়।
- ধাপ ৩ গুগল ওয়ালেট দ্বারা রেন্ডার করা হয়েছে। গুগল ওয়ালেট এই স্ক্রিনে ডেভেলপারের দেওয়া নাম, লোগো এবং গোপনীয়তা নীতি দেখাবে।
একটি ডিজিটাল আইডি ফ্লো যোগ করুন
যদি ব্যবহারকারীর কাছে কোনও শংসাপত্র না থাকে, তাহলে আমরা "ডিজিটাল আইডি দিয়ে যাচাই করুন" বোতামের পাশে একটি লিঙ্ক প্রদান করার পরামর্শ দিচ্ছি যা ব্যবহারকারীকে একটি ডিজিটাল আইডি যোগ করার অনুমতি দেওয়ার জন্য গুগল ওয়ালেটের সাথে গভীরভাবে লিঙ্ক করবে।
![]() | ![]() |
| অ্যাপ বা ওয়েবসাইটে ব্যবহারকারীকে বয়স যাচাই করতে বলা হয়েছে | ডিজিটাল আইডি পেতে ব্যবহারকারীকে গুগল ওয়ালেটে নিয়ে যাওয়া হয়েছে |
কোনও ডিজিটাল আইডি পাওয়া যাচ্ছে না
যদি ব্যবহারকারী ডিজিটাল আইডি ছাড়াই "ডিজিটাল আইডি দিয়ে যাচাই করুন" বিকল্পটি নির্বাচন করেন তবে তাদের এই ত্রুটি বার্তাটি দেখানো হবে।
![]() | ![]() |
| অ্যাপ বা ওয়েবসাইটে ব্যবহারকারীকে বয়স যাচাই করতে বলা হয়েছে | ব্যবহারকারীর একটি ত্রুটি দেখানো হয়েছে যে তাদের ডিজিটাল আইডি নেই। |
ব্যবহারকারীর গোপনীয়তা রক্ষা করার জন্য ব্যবহারকারীর কাছে কোনও ডিজিটাল আইডি আছে কিনা তা নীরবে জানার জন্য API কোনও বৈশিষ্ট্য সমর্থন করে না। তাই আমরা দেখানো হিসাবে অনবোর্ডিং লিঙ্ক বিকল্পটি অন্তর্ভুক্ত করার পরামর্শ দিচ্ছি।
ওয়ালেট থেকে আইডি শংসাপত্রের অনুরোধের জন্য অনুরোধ ফর্ম্যাট
এখানে একটি অ্যান্ড্রয়েড ডিভাইস বা ওয়েবের যেকোনো ওয়ালেট থেকে পরিচয়পত্র পেতে mdoc requestJson অনুরোধের একটি নমুনা দেওয়া হল।
{
"requests" : [
{
"protocol": "openid4vp-v1-unsigned",
"data": {<credential_request>} // This is an object, shouldn't be a string.
}
]
}
এনক্রিপশনের অনুরোধ করুন
client_metadata তে প্রতিটি অনুরোধের জন্য এনক্রিপশন পাবলিক কী থাকে। আপনাকে প্রতিটি অনুরোধের জন্য ব্যক্তিগত কী সংরক্ষণ করতে হবে এবং ওয়ালেট অ্যাপ থেকে প্রাপ্ত টোকেনটি প্রমাণীকরণ এবং অনুমোদন করতে এটি ব্যবহার করতে হবে।
requestJson এর credential_request প্যারামিটারে নিম্নলিখিত ক্ষেত্রগুলি থাকবে।
নির্দিষ্ট শংসাপত্র
{
"response_type": "vp_token",
"response_mode": "dc_api.jwt", // change this to dc_api if you want to demo with a non encrypted response.
"nonce": "1234",
"dcql_query": {
"credentials": [
{
"id": "cred1",
"format": "mso_mdoc",
"meta": {
"doctype_value": "org.iso.18013.5.1.mDL" // this is for mDL. Use com.google.wallet.idcard.1 for ID pass
},
"claims": [
{
"path": [
"org.iso.18013.5.1",
"family_name"
],
"intent_to_retain": false // set this to true if you are saving the value of the field
},
{
"path": [
"org.iso.18013.5.1",
"given_name"
],
"intent_to_retain": false
},
{
"path": [
"org.iso.18013.5.1",
"age_over_18"
],
"intent_to_retain": false
}
]
}
]
},
"client_metadata": {
"jwks": {
"keys": [ // sample request encryption key
{
"kty": "EC",
"crv": "P-256",
"x": "pDe667JupOe9pXc8xQyf_H03jsQu24r5qXI25x_n1Zs",
"y": "w-g0OrRBN7WFLX3zsngfCWD3zfor5-NLHxJPmzsSvqQ",
"use": "enc",
"kid" : "1", // This is required
"alg" : "ECDH-ES", // This is required
}
]
},
"vp_formats_supported": {
"mso_mdoc": {
"deviceauth_alg_values": [
-7
],
"isserauth_alg_values": [
-7
]
}
}
}
}
যেকোনো যোগ্য শংসাপত্র
এখানে mDL এবং idpass উভয়ের জন্য উদাহরণ অনুরোধটি দেওয়া হয়েছে এবং ব্যবহারকারী যেকোনো একটি দিয়ে এগিয়ে যেতে পারেন।
{
"response_type": "vp_token",
"response_mode": "dc_api.jwt", // change this to dc_api if you want to demo with a non encrypted response.
"nonce": "1234",
"dcql_query": {
"credentials": [
{
"id": "mdl-request",
"format": "mso_mdoc",
"meta": {
"doctype_value": "org.iso.18013.5.1.mDL"
},
"claims": [
{
"path": [
"org.iso.18013.5.1",
"family_name"
],
"intent_to_retain": false // set this to true if you are saving the value of the field
},
{
"path": [
"org.iso.18013.5.1",
"given_name"
],
"intent_to_retain": false
},
{
"path": [
"org.iso.18013.5.1",
"age_over_18"
],
"intent_to_retain": false
}
]
},
{ // Credential type 2
"id": "id_pass-request",
"format": "mso_mdoc",
"meta": {
"doctype_value": "com.google.wallet.idcard.1"
},
"claims": [
{
"path": [
"org.iso.18013.5.1",
"family_name"
],
"intent_to_retain": false // set this to true if you are saving the value of the field
},
{
"path": [
"org.iso.18013.5.1",
"given_name"
],
"intent_to_retain": false
},
{
"path": [
"org.iso.18013.5.1",
"age_over_18"
],
"intent_to_retain": false
}
]
}
]
credential_sets : [
{
"options": [
[ "mdl-request" ],
[ "id_pass-request" ]
]
}
]
},
"client_metadata": {
"jwks": {
"keys": [ // sample request encryption key
{
"kty": "EC",
"crv": "P-256",
"x": "pDe667JupOe9pXc8xQyf_H03jsQu24r5qXI25x_n1Zs",
"y": "w-g0OrRBN7WFLX3zsngfCWD3zfor5-NLHxJPmzsSvqQ",
"use": "enc",
"kid" : "1", // This is required
"alg" : "ECDH-ES", // This is required
}
]
},
"vp_formats_supported": {
"mso_mdoc": {
"deviceauth_alg_values": [
-7
],
"isserauth_alg_values": [
-7
]
}
}
}
}
আপনি Google Wallet-এ সংরক্ষিত যেকোনো পরিচয় শংসাপত্র থেকে যেকোনো সংখ্যক সমর্থিত বৈশিষ্ট্যের জন্য অনুরোধ করতে পারেন।
অ্যাপে
আপনার অ্যান্ড্রয়েড অ্যাপ থেকে পরিচয়পত্রের জন্য অনুরোধ করতে এই পদক্ষেপগুলি অনুসরণ করুন:
নির্ভরতা আপডেট করুন
আপনার প্রোজেক্টের build.gradle-এ, Credential Manager (বিটা) ব্যবহার করার জন্য আপনার নির্ভরতা আপডেট করুন:
dependencies {
implementation("androidx.credentials:credentials:1.5.0-beta01")
// optional - needed for credentials support from play services, for devices running Android 13 and below.
implementation("androidx.credentials:credentials-play-services-auth:1.5.0-beta01")
}
ক্রেডেনশিয়াল ম্যানেজার কনফিগার করুন
একটি CredentialManager অবজেক্ট কনফিগার এবং ইনিশিয়ালাইজ করতে, নিম্নলিখিতগুলির মতো লজিক যোগ করুন:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = CredentialManager.create(context)
পরিচয় বৈশিষ্ট্যের অনুরোধ করুন
পরিচয় অনুরোধের জন্য পৃথক প্যারামিটার নির্দিষ্ট করার পরিবর্তে, অ্যাপটি CredentialOption-এর মধ্যে JSON স্ট্রিং হিসেবে সেগুলিকে একসাথে প্রদান করে। Credential Manager এই JSON স্ট্রিংটি এর বিষয়বস্তু পরীক্ষা না করেই উপলব্ধ ডিজিটাল ওয়ালেটে প্রেরণ করে। প্রতিটি ওয়ালেট তখন নিম্নলিখিতগুলির জন্য দায়ী: - পরিচয় অনুরোধ বোঝার জন্য JSON স্ট্রিংটি পার্স করা। - এর কোন সংরক্ষিত শংসাপত্র, যদি থাকে, তা নির্ধারণ করা, অনুরোধটি পূরণ করে।
আমরা অংশীদারদের সুপারিশ করি যে তারা অ্যান্ড্রয়েড অ্যাপ ইন্টিগ্রেশনের জন্যও সার্ভারে তাদের অনুরোধ তৈরি করে।
আপনি GetDigitalCredentialOption() ফাংশন কলে request অন্তর্ভুক্ত করে অনুরোধ ফর্ম্যাট থেকে requestJson ব্যবহার করবেন
// The request in the JSON format to conform with
// the JSON-ified Digital Credentials API request definition.
val requestJson = generateRequestFromServer()
val digitalCredentialOption =
GetDigitalCredentialOption(requestJson = requestJson)
// Use the option from the previous step to build the `GetCredentialRequest`.
val getCredRequest = GetCredentialRequest(
listOf(digitalCredentialOption)
)
coroutineScope.launch {
try {
val result = credentialManager.getCredential(
context = activityContext,
request = getCredRequest
)
verifyResult(result)
} catch (e : GetCredentialException) {
handleFailure(e)
}
}
প্রতিক্রিয়া যাচাই করুন এবং যাচাই করুন
ওয়ালেট থেকে একবার প্রতিক্রিয়া পেলে, আপনি যাচাই করবেন যে প্রতিক্রিয়াটি সফল হয়েছে কিনা এবং এতে credentialJson প্রতিক্রিয়া রয়েছে কিনা।
// Handle the successfully returned credential.
fun verifyResult(result: GetCredentialResponse) {
val credential = result.credential
when (credential) {
is DigitalCredential -> {
val responseJson = credential.credentialJson
validateResponseOnServer(responseJson) // make a server call to validate the response
}
else -> {
// Catch any unrecognized credential type here.
Log.e(TAG, "Unexpected type of credential ${credential.type}")
}
}
}
// Handle failure.
fun handleFailure(e: GetCredentialException) {
when (e) {
is GetCredentialCancellationException -> {
// The user intentionally canceled the operation and chose not
// to share the credential.
}
is GetCredentialInterruptedException -> {
// Retry-able error. Consider retrying the call.
}
is NoCredentialException -> {
// No credential was available.
}
else -> Log.w(TAG, "Unexpected exception type ${e::class.java}")
}
}
credentialJson রেসপন্সে একটি এনক্রিপ্টেড আইডেন্টিটিটোকেন (JWT) থাকে, যা W3C দ্বারা সংজ্ঞায়িত। ওয়ালেট অ্যাপ এই রেসপন্স তৈরির জন্য দায়ী।
উদাহরণ:
{
"protocol" : "openid4vp-v1-unsigned",
"data" : {
<encrpted_response>
}
}
এর সত্যতা যাচাই করার জন্য আপনি এই প্রতিক্রিয়াটি সার্ভারে ফেরত পাঠাবেন। আপনি শংসাপত্র প্রতিক্রিয়া যাচাই করার পদক্ষেপগুলি খুঁজে পেতে পারেন।
ওয়েব
Chrome বা অন্যান্য সমর্থিত ব্রাউজারে ডিজিটাল ক্রেডেনশিয়াল API ব্যবহার করে পরিচয় শংসাপত্রের অনুরোধ করতে, নিম্নলিখিত অনুরোধটি ট্রিগার করুন।
const credentialResponse = await navigator.credentials.get({
digital : {
requests : [
{
protocol: "openid4vp-v1-unsigned",
data: {<credential_request>} // This is an object, shouldn't be a string.
}
]
}
})
শংসাপত্রের প্রতিক্রিয়া যাচাই করার জন্য এই API থেকে প্রতিক্রিয়াটি আপনার সার্ভারে ফেরত পাঠান।
শংসাপত্রের প্রতিক্রিয়া যাচাই করার পদক্ষেপ
আপনার অ্যাপ বা ওয়েবসাইট থেকে এনক্রিপ্ট করা আইডেন্টিটিটোকেন পাওয়ার পরে, প্রতিক্রিয়াটি বিশ্বাস করার আগে আপনাকে একাধিক যাচাইকরণ করতে হবে।
প্রাইভেট কী ব্যবহার করে প্রতিক্রিয়া ডিক্রিপ্ট করুন
প্রথম ধাপ হল সংরক্ষিত প্রাইভেট কী ব্যবহার করে টোকেনটি ডিক্রিপ্ট করা এবং একটি প্রতিক্রিয়া JSON পাওয়া।
পাইথন উদাহরণ:
from jwcrypto import jwe, jwk # Retrieve the Private Key from Datastore reader_private_jwk = jwk.JWK.from_json(jwe_private_key_json_str) # Save public key thumbprint for session transcript encryption_public_jwk_thumbprint = reader_private_jwk.thumbprint() # Decrypt the JWE encrypted response from Google Wallet jwe_object = jwe.JWE() jwe_object.deserialize(encrypted_jwe_response_from_wallet) jwe_object.decrypt(reader_private_jwk) decrypted_payload_bytes = jwe_object.payload decrypted_data = json.loads(decrypted_payload_bytes)decrypted_dataফলে একটিvp_tokenJSON আসবে যার মধ্যে শংসাপত্র থাকবে{ "vp_token": { "cred1": "<credential_token>" } }সেশন ট্রান্সক্রিপ্ট তৈরি করুন
পরবর্তী ধাপ হল ISO/IEC 18013-5:2021 থেকে একটি Android বা ওয়েব নির্দিষ্ট হ্যান্ডওভার কাঠামো ব্যবহার করে SessionTranscript তৈরি করা:
SessionTranscript = [ null, // DeviceEngagementBytes not available null, // EReaderKeyBytes not available [ "OpenID4VPDCAPIHandover", AndroidHandoverDataBytes // BrowserHandoverDataBytes for Web ] ]অ্যান্ড্রয়েড / ওয়েব উভয় হ্যান্ডওভারের জন্যই আপনাকে
credential_requestতৈরি করতে যে nonce ব্যবহার করেছিলেন সেই একই nonce ব্যবহার করতে হবে।অ্যান্ড্রয়েড হ্যান্ডওভার
AndroidHandoverData = [ origin, // "android:apk-key-hash:<base64SHA256_ofAppSigningCert>", nonce, // nonce that was used to generate credential request, encryption_public_jwk_thumbprint, // Encryption public key (JWK) Thumbprint ] AndroidHandoverDataBytes = hashlib.sha256(cbor2.dumps(AndroidHandoverData)).digest()
ব্রাউজার হস্তান্তর
BrowserHandoverData =[ origin, // Origin URL nonce, // nonce that was used to generate credential request encryption_public_jwk_thumbprint, // Encryption public key (JWK) Thumbprint ] BrowserHandoverDataBytes = hashlib.sha256(cbor2.dumps(BrowserHandoverData)).digest()
SessionTranscriptব্যবহার করে DeviceResponse কে ISO/IEC 18013-5:2021 ধারা 9 অনুসারে যাচাই করতে হবে। এর মধ্যে বেশ কয়েকটি ধাপ অন্তর্ভুক্ত রয়েছে, যেমন:রাজ্য ইস্যুকারীর সার্টিফিকেট পরীক্ষা করুন। সমর্থিত ইস্যুকারীর IACA সার্টিফিকেট পরীক্ষা করুন।
MSO স্বাক্ষর যাচাই করুন (18013-5 ধারা 9.1.2)
ডেটা এলিমেন্টের জন্য ভ্যালুডাইজেস্ট গণনা করুন এবং পরীক্ষা করুন (18013-5 বিভাগ 9.1.2)
deviceSignatureস্বাক্ষর যাচাই করুন (18013-5 বিভাগ 9.1.3)
{
"version": "1.0",
"documents": [
{
"docType": "org.iso.18013.5.1.mDL",
"issuerSigned": {
"nameSpaces": {...}, // contains data elements
"issuerAuth": [...] // COSE_Sign1 w/ issuer PK, mso + sig
},
"deviceSigned": {
"nameSpaces": 24(<< {} >>), // empty
"deviceAuth": {
"deviceSignature": [...] // COSE_Sign1 w/ device signature
}
}
}
],
"status": 0
}
আপনার সমাধান পরীক্ষা করুন
আপনার সমাধান পরীক্ষা করার জন্য, আমাদের ওপেন সোর্স রেফারেন্স হোল্ডার অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরি করুন এবং চালান। রেফারেন্স হোল্ডার অ্যাপ তৈরি এবং চালানোর ধাপগুলি এখানে দেওয়া হল:
- রেফারেন্স অ্যাপস রিপোজিটরি ক্লোন করুন
- অ্যান্ড্রয়েড স্টুডিওতে প্রকল্পটি খুলুন।
- আপনার অ্যান্ড্রয়েড ডিভাইস বা এমুলেটরে
appholderটার্গেট তৈরি করুন এবং চালান।
জিরো নলেজ প্রুফ (ZKP) ভিত্তিক যাচাইকরণ
জিরো-নলেজ প্রুফ (ZKP) হল একটি ক্রিপ্টোগ্রাফিক পদ্ধতি যা একজন ব্যক্তিকে (প্রবাদদাতা) একজন যাচাইকারীর কাছে প্রমাণ করতে দেয় যে তাদের কাছে একটি নির্দিষ্ট পরিচয় তথ্য আছে অথবা তারা একটি নির্দিষ্ট মানদণ্ড পূরণ করে (যেমন, 18 বছরের বেশি বয়সী, একটি বৈধ শংসাপত্র ধারণ করে) প্রকৃত অন্তর্নিহিত তথ্য প্রকাশ না করেই। মূলত, এটি সংবেদনশীল বিবরণ গোপন রেখে নিজের পরিচয় সম্পর্কে একটি বিবৃতির সত্যতা নিশ্চিত করার একটি উপায়।
ডিজিটাল পরিচয় ব্যবস্থা যা সরাসরি পরিচয় তথ্য ভাগাভাগির উপর নির্ভর করে, প্রায়শই ব্যবহারকারীদের অতিরিক্ত ব্যক্তিগত তথ্য ভাগাভাগি করতে বাধ্য করে, যা তথ্য লঙ্ঘন এবং পরিচয় চুরির ঝুঁকি বাড়ায়। ZKPs একটি আদর্শ পরিবর্তন প্রদান করে, ন্যূনতম প্রকাশের সাথে যাচাইকরণ সক্ষম করে।
ডিজিটাল পরিচয়ে ZKP-এর মূল ধারণা:
- প্রুভার: যে ব্যক্তি তার পরিচয়ের একটি দিক প্রমাণ করার চেষ্টা করছে।
- যাচাইকারী: যে সত্তা একটি পরিচয় বৈশিষ্ট্যের প্রমাণ অনুরোধ করে।
- প্রমাণ: একটি ক্রিপ্টোগ্রাফিক প্রোটোকল যা প্রবাদককে গোপন তথ্য প্রকাশ না করেই তাদের দাবির সত্যতা যাচাইকারীকে বোঝাতে সাহায্য করে।
শূন্য-জ্ঞান প্রমাণের মূল বৈশিষ্ট্য:
- সম্পূর্ণতা: যদি বিবৃতিটি সত্য হয় এবং প্রবাদক এবং যাচাইকারী উভয়ই সৎ হন, তাহলে যাচাইকারী নিশ্চিত হবেন।
- যুক্তিসঙ্গততা: যদি বিবৃতিটি মিথ্যা হয়, তাহলে একজন অসৎ প্রবাদক (খুব উচ্চ সম্ভাবনার সাথে) একজন সৎ যাচাইকারীকে বোঝাতে পারবেন না যে এটি সত্য।
- শূন্য-জ্ঞান: যাচাইকারী বিবৃতিটি সত্য বলে প্রমাণিত হওয়ার বাইরে আর কিছুই শেখেন না। প্রবাদের পরিচয় থেকে কোনও প্রকৃত তথ্য প্রকাশ করা হয় না।
গুগল ওয়ালেট থেকে জিরো নলেজ প্রুফ ফিরে পেতে, আপনাকে অনুরোধের ফর্ম্যাটটি mso_mdoc_zk এ পরিবর্তন করতে হবে এবং আপনার অনুরোধে zk_system_type যোগ করতে হবে।
...
"dcql_query": {
"credentials": [{
"id": "cred1",
"format": "mso_mdoc_zk",
"meta": {
"doctype_value": "org.iso.18013.5.1.mDL"
"zk_system_type": [
{
"system": "longfellow-libzk-v1",
"circuit_hash": "bd3168ea0a9096b4f7b9b61d1c210dac1b7126a9ec40b8bc770d4d485efce4e9", // This will differ if you need more than 1 attribute.
"num_attributes": 1, // number of attributes (in claims) this has can support
"version": 3
},
{
"system": "longfellow-libzk-v1",
"circuit_hash": "89288b9aa69d2120d211618fcca8345deb4f85d2e710c220cc9c059bbee4c91f", // This will differ if you need more than 1 attribute.
"num_attributes": 1, // number of attributes (in claims) this has can support
"version": 4
}
{
"system": "longfellow-libzk-v1",
"circuit_hash": "f88a39e561ec0be02bb3dfe38fb609ad154e98decbbe632887d850fc612fea6f", // This will differ if you need more than 1 attribute.
"num_attributes": 1, // number of attributes (in claims) this has can support
"version": 5
}
{
"system": "longfellow-libzk-v1",
"circuit_hash": "137e5a75ce72735a37c8a72da1a8a0a5df8d13365c2ae3d2c2bd6a0e7197c7c6", // This will differ if you need more than 1 attribute.
"num_attributes": 1, // number of attributes (in claims) this has can support
"version": 6
}
],
"verifier_message": "challenge"
},
"claims": [{
...
"client_metadata": {
"jwks": {
"keys": [ // sample request encryption key
{
...
আপনি ওয়ালেট থেকে একটি এনক্রিপ্টেড জিরো নলেজ প্রুফ ফেরত পাবেন। আপনি longfellow-zk লাইব্রেরি বাই গুগল ব্যবহার করে ইস্যুকারী IACA সার্টিফিকেটের বিরুদ্ধে এই প্রমাণ যাচাই করতে পারেন।
যাচাইকারী-পরিষেবাটিতে একটি স্থাপনার জন্য প্রস্তুত ডকার ভিত্তিক সার্ভার রয়েছে যা আপনাকে নির্দিষ্ট ইস্যুকারী IACA সার্টিফিকেটের বিরুদ্ধে প্রতিক্রিয়া যাচাই করতে দেয়।
আপনি বিশ্বাস করতে চান এমন IACA ইস্যুকারী সার্টিফিকেট পরিচালনা করতে certs.pem পরিবর্তন করতে পারেন।
আরও বিস্তারিত জানার জন্য আপনি সহায়তা ইমেলে যোগাযোগ করতে পারেন wallet-identity-rp-support@google.com







