Skip to content

About

Stops fake/altered course certificates from passing as genuine in developer internship applications, by digitally signing every certificate the Society issues and giving anyone a way to verify that signature independently.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

50 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

CertVerifySystem

Stop fake or altered course certificates from being accepted as genuine.
CertVerifySystem digitally signs every certificate issued by the Society and provides a public verification flow so anyone can independently validate authenticity.


🚀 Overview

In internship hiring and developer program applications, certificate fraud can happen through:

  • edited certificate details,
  • fabricated certificate files,
  • reused certificates from other people.

CertVerifySystem addresses this by:

  1. generating certificates with tamper-evident digital signatures,
  2. storing/verifying trusted signature metadata,
  3. exposing a verification interface for recruiters, reviewers, and admins.

If a certificate is modified after issuance, verification fails.


✨ Core Features

  • Digital certificate signing at issuance time
  • Independent verification without trusting screenshots alone
  • Tamper detection for edited/forged certificates
  • Issuer-backed trust model for Society-issued credentials
  • Web-based verification interface for easy checking
  • Backend services for signing, retrieval, and validation workflows

🧱 Tech Stack

Based on repository language composition:

  • C# (48.6%) – primary backend/services logic
  • JavaScript (27.2%) – frontend behavior and UI interactions
  • CSS (14.3%) – styling
  • Go (7.0%) – supporting services/utilities
  • PowerShell (2.3%) – scripts/automation
  • Dockerfile – containerization support

🏗️ High-Level Architecture

[Certificate Issuer/Admin]
          |
          v
  [Signing Service]
          |
          v
[Issued Certificate + Signature/Proof]
          |
          v
 [Verification Portal/API] <---- [Recruiter/Verifier]
          |
          v
 [Valid / Invalid / Not Found result]

🔐 Verification Model (Conceptual)

Each certificate is tied to verifiable data (for example: certificate ID, recipient, course, issue date) and a digital signature produced using the issuer’s private key.

Verification:

  1. extracts certificate data and provided proof/signature,
  2. recomputes/normalizes the signed payload,
  3. validates signature using the trusted public key,
  4. returns authenticity status.

Any post-issuance modification should invalidate the signature.


📁 Suggested Repository Structure

Update this section to match your exact folders.

CertVerifySystem/
├─ backend/                # C# APIs/services
├─ frontend/               # JS/CSS web app
├─ verifier/               # verification logic/services
├─ scripts/                # PowerShell automation
├─ deployments/            # Docker and infra configs
└─ README.md

⚙️ Getting Started

The exact commands depend on your folder structure.
Replace placeholders below with your real project paths.

1) Clone the repository

git clone https://github.com/Krishmal2004/CertVerifySystem.git
cd CertVerifySystem

2) Configure environment

Create environment files (example):

cp .env.example .env

Typical variables you may need:

  • signing key/private key path (or key vault reference),
  • verification public key path,
  • database/storage connection strings,
  • API base URLs and ports.

3) Run backend (C#)

dotnet restore
dotnet build
dotnet run

4) Run frontend (JavaScript)

npm install
npm run dev

5) (Optional) Run with Docker

docker compose up --build

🧪 Testing

Recommended test categories:

  • signature generation correctness,
  • signature verification (valid certificate),
  • tampered certificate rejection,
  • wrong public key rejection,
  • expired/revoked (if implemented),
  • API integration and UI flow tests.

Example commands:

dotnet test
npm test

📡 API (Example Contract)

Replace with your real endpoints.

Verify certificate

POST /api/certificates/verify

Request body

{
  "certificateId": "CERT-2026-000123",
  "certificateData": "...",
  "signature": "base64-signature"
}

Response

{
  "status": "valid",
  "message": "Certificate is authentic and untampered."
}

Possible status values:

  • valid
  • invalid
  • not_found
  • error

👥 User Roles

  • Issuer/Admin: issues and signs certificates
  • Candidate: shares certificate/proof
  • Verifier (Recruiter/Reviewer): validates authenticity through system tools

🔒 Security Notes

  • Never commit private keys to the repository.
  • Use secure key storage (KMS/HSM/vault) in production.
  • Rotate keys with a planned migration strategy.
  • Log verification attempts for auditability.
  • Protect verification APIs with rate limiting and monitoring.

🛣️ Roadmap Ideas

  • QR-based one-click verification links
  • certificate revocation registry
  • timestamping with trusted authority
  • downloadable signed metadata (JSON proof bundle)
  • recruiter-friendly verification dashboard
  • webhook integrations for application platforms

🤝 Contributing

Contributions are welcome.

  1. Fork the repo
  2. Create a feature branch
  3. Commit changes
  4. Open a pull request with clear context and test evidence

📄 License

Add your license here (e.g., MIT, Apache-2.0, or proprietary internal license).


🙌 Acknowledgment

Built to strengthen trust in technical certification during internship and developer hiring workflows.

About

Stops fake/altered course certificates from passing as genuine in developer internship applications, by digitally signing every certificate the Society issues and giving anyone a way to verify that signature independently.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages