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.
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:
- generating certificates with tamper-evident digital signatures,
- storing/verifying trusted signature metadata,
- exposing a verification interface for recruiters, reviewers, and admins.
If a certificate is modified after issuance, verification fails.
- 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
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
[Certificate Issuer/Admin]
|
v
[Signing Service]
|
v
[Issued Certificate + Signature/Proof]
|
v
[Verification Portal/API] <---- [Recruiter/Verifier]
|
v
[Valid / Invalid / Not Found result]
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:
- extracts certificate data and provided proof/signature,
- recomputes/normalizes the signed payload,
- validates signature using the trusted public key,
- returns authenticity status.
Any post-issuance modification should invalidate the signature.
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
The exact commands depend on your folder structure.
Replace placeholders below with your real project paths.
git clone https://github.com/Krishmal2004/CertVerifySystem.git
cd CertVerifySystemCreate environment files (example):
cp .env.example .envTypical 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.
dotnet restore
dotnet build
dotnet runnpm install
npm run devdocker compose up --buildRecommended 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 testReplace with your real endpoints.
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:
validinvalidnot_founderror
- Issuer/Admin: issues and signs certificates
- Candidate: shares certificate/proof
- Verifier (Recruiter/Reviewer): validates authenticity through system tools
- 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.
- 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
Contributions are welcome.
- Fork the repo
- Create a feature branch
- Commit changes
- Open a pull request with clear context and test evidence
Add your license here (e.g., MIT, Apache-2.0, or proprietary internal license).
Built to strengthen trust in technical certification during internship and developer hiring workflows.