Skip to content

Verify a Credential

CogniPilot credentials are digitally signed using the Data Integrity EdDSA Cryptosuites specification. This page explains how to verify the authenticity of a CogniPilot credential.

Quick Verification

Using Our Python Tool

If you have Python installed, you can verify credentials using our verification script:

# Clone the repository
git clone https://github.com/cognipilot/cognipilot_badges.git
cd cognipilot_badges

# Create virtual environment and install dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# Verify a credential
python scripts/verify_credential.py your-credential.json --key keys/key-1-public.json

What Gets Verified

When you verify a credential, the following checks are performed:

  1. Proof Type - Confirms the credential uses DataIntegrityProof
  2. Cryptosuite - Validates the eddsa-jcs-2022 cryptosuite is used
  3. Signature - Cryptographically verifies the Ed25519 signature
  4. Integrity - Ensures the credential hasn't been tampered with

Manual Verification

Issuer Public Key

CogniPilot credentials are signed with the following public key:

Property Value
Key ID https://credentials.cognipilot.org/issuer#key-1
Type Multikey (Ed25519)
Public Key z6Mkp7ErHCMw7ofrmXRnc17RuppRRJnAdAkdACwFUmxmeRVS

The full issuer profile is available at: /issuer.json

Verification Process

The eddsa-jcs-2022 cryptosuite verification process:

  1. Extract the proof object from the credential
  2. Remove proofValue and @context from the proof to create proof configuration
  3. Canonicalize both the proof configuration and credential (without proof) using JCS (RFC 8785)
  4. SHA-256 hash both canonicalized documents
  5. Concatenate the hashes: proof_hash || credential_hash
  6. Verify the Ed25519 signature against the concatenated hash

Third-Party Verifiers

You can also verify CogniPilot credentials using any OpenBadges 3.0 compatible verifier:

Troubleshooting

"Signature verification failed"

This could indicate:

  • The credential was modified after signing
  • The wrong public key is being used for verification
  • The credential was not issued by CogniPilot

"Unsupported cryptosuite"

Ensure your verification tool supports the eddsa-jcs-2022 cryptosuite. Some older tools may only support deprecated proof types.

Questions?

If you have questions about credential verification, please open an issue on our GitHub repository.