verified-email

Retrieve cryptographically verified email via Android Credential Manager with OpenID4VP.

174|8|Updated Jan 9, 2024
One-click install
npx skills add https://github.com/klxiaoniu/QQVersionList --skill verified-email-klxiaoniu
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: verified-email
Source: https://github.com/klxiaoniu/QQVersionList/tree/main/.agents/skills/verified-email
Command: npx skills add https://github.com/klxiaoniu/QQVersionList --skill verified-email-klxiaoniu

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

High-friction sign-up and recovery flows that require users to complete OTPs or magic links instead of using a secure, device-held verified email.

Core Features & Use Cases

  • OTP-less verified email retrieval: Uses Android Credential Manager to request a cryptographically verified email credential via OpenID4VP and SD-JWT.
  • Client-side parsing for better UX (not security): Extracts claims like email and name to immediately update UI while keeping real security validation on the server.
  • Server-side validation to prevent replay and impersonation: Requires validating issuer, SD-JWT signature, key binding (cnf), and nonce on your backend before provisioning accounts.
  • Use cases: account creation/sign-up, account recovery, and re-authentication for sensitive actions, optionally followed by passkey creation.

Quick Start

Ask the verified-email skill to generate an Android Credential Manager GetCredential flow that requests a UserInfoCredential with email_verified, parses the returned SD-JWT claims for display, and sends the full credential JSON plus the original nonce to your server for cryptographic validation.

Frequently Asked Questions about verified-email

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I get a cryptographically verified email on Android without OTPs?

You can get a cryptographically verified email without OTPs by using Android Credential Manager to request an OpenID4VP SD-JWT credential. The device presents a built-in UI, extracts the vp_token for immediate client display, and sends the data to your server for validation.

Does client-side parsing of SD-JWT claims secure my Android app?

Client-side parsing of SD-JWT claims only improves UX by displaying email and name immediately; it does not provide security. You must enforce mandatory server-side validation of the issuer, SD-JWT signature, key binding cnf, and original nonce to prevent replay and impersonation.

Can I use Android Credential Manager for account recovery and re-authentication?

Android Credential Manager supports account creation, account recovery, and re-authentication flows using OpenID4VP DCQL requests. It retrieves a verified email credential from trusted providers, which can be optionally followed by passkey creation for secure access.

What do I need to validate on my server for an OpenID4VP SD-JWT credential?

Your server must validate the issuer, SD-JWT signature, key binding cnf, and the original nonce for OpenID4VP SD-JWT credentials. This mandatory server-side cryptographic validation ensures the verified email attribute is authentic and prevents replay attacks before provisioning accounts.

How do I build a GetCredentialRequest for a verified email attribute?

Build a GetCredentialRequest containing a GetDigitalCredentialOption JSON to query a UserInfoCredential with email_verified using OpenID4VP DCQL. Android Credential Manager handles presenting the built-in UI and returning the vp_token and SD-JWT for your backend validation.