Skip to content

Add EfCore.TamperEvident to Security section - #923

Open
furkiak wants to merge 1 commit into
thangchung:masterfrom
furkiak:master
Open

Add EfCore.TamperEvident to Security section#923
furkiak wants to merge 1 commit into
thangchung:masterfrom
furkiak:master

Conversation

@furkiak

@furkiak furkiak commented May 17, 2026

Copy link
Copy Markdown

Hi! I'd like to contribute my open-source library to the Security section.

  • Name: EfCore.TamperEvident
  • Description: A zero-trust, tamper-evident audit logging mechanism for Entity Framework Core. It uses cryptographic SHA-256 hash chaining to link logs, making internal database manipulation (like manual updates or deletes by a DBA) instantly detectable through external SMTP anchoring.
  • Guidelines Check: It is fully open-source, supports the latest .NET/EF Core standards, and addresses a crucial security blind spot in traditional audit logging.

Thank you for maintaining this awesome list!

Summary by CodeRabbit

  • Documentation
    • Added documentation for EfCore.TamperEvident, a zero-trust, tamper-evident audit logging library for EF Core featuring cryptographic hash chaining and SMTP anchoring.

Review Change Stack

Added EfCore.TamperEvident library for audit logging.
@coderabbitai

coderabbitai Bot commented May 17, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR adds a single entry to the Security section of README.md, documenting the EfCore.TamperEvident library—a zero-trust, tamper-evident audit logging library for EF Core that employs cryptographic hash chaining and SMTP anchoring for security.

Changes

Security Documentation Update

Layer / File(s) Summary
Security library entry documentation
README.md
Added EfCore.TamperEvident entry to the Security section describing its features: tamper-evident audit logging for EF Core using cryptographic hash chaining and SMTP anchoring.

🎯 1 (Trivial) | ⏱️ ~2 minutes

🐰 A library joins the list so fine,
Tamper-evident, cryptographic line,
EF Core audits, hash-chained and true,
SMTP anchors seal what's new! ✓

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and specifically summarizes the main change: adding a new library entry to the Security section of the README.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Warning

⚠️ This pull request might be slop. It has been flagged by CodeRabbit slop detection and should be reviewed carefully.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Line 699: The README entry for "EfCore.TamperEvident" should be removed or
replaced with evidence of maturity: either delete the "*
[EfCore.TamperEvident](https://github.com/furkiak/EfCore.TamperEvident) ..."
line, or update it to include links/badges proving test coverage and adoption
(e.g., CI badge, coverage badge, link to a tests directory and representative
test files, NuGet download/stats and community links); reference the repository
by name "EfCore.TamperEvident" in your change so reviewers can verify the added
test/CI artifacts and community metrics before re-inclusion.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b5beb9e2-62aa-4ef1-9ba7-fe990d9c84bc

📥 Commits

Reviewing files that changed from the base of the PR and between 26204aa and a8a6f3c.

📒 Files selected for processing (1)
  • README.md

Comment thread README.md

### Security
* [aspnetcore-security-headers](https://github.com/juunas11/aspnetcore-security-headers) - Middleware for adding security headers to an ASP.NET Core application.
* [EfCore.TamperEvident](https://github.com/furkiak/EfCore.TamperEvident) - A zero-trust, tamper-evident audit logging library for EF Core using cryptographic hash chaining and SMTP anchoring to detect database tampering.

@coderabbitai coderabbitai Bot May 17, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify the repository exists and check basic quality metrics

# Check if repository exists and is accessible
echo "=== Repository Check ==="
gh repo view furkiak/EfCore.TamperEvident --json name,description,createdAt,updatedAt,stargazerCount,forkCount,isArchived,isEmpty 2>&1

# Check for README/documentation
echo -e "\n=== Documentation Check ==="
gh api repos/furkiak/EfCore.TamperEvident/readme --jq '.name' 2>&1 || echo "No README found"

# Check recent activity
echo -e "\n=== Recent Activity ==="
gh api repos/furkiak/EfCore.TamperEvident/commits --jq '.[0:3] | .[] | {date: .commit.author.date, message: .commit.message}' 2>&1

# Check for test files
echo -e "\n=== Test Files Check ==="
gh api repos/furkiak/EfCore.TamperEvident/contents --jq '.[] | select(.name | test("test|spec"; "i")) | .name' 2>&1 || echo "No obvious test directories found in root"

# Check for NuGet package
echo -e "\n=== NuGet Package Check ==="
curl -s "https://api.nuget.org/v3-flatcontainer/efcore.tamperevident/index.json" | jq -r '.versions[-1] // "Package not found on NuGet"' 2>&1

Repository: thangchung/awesome-dotnet-core

Length of output: 936


🌐 Web query:

EfCore.TamperEvident .NET security library reviews adoption

💡 Result:

As of May 17, 2026, there is no widely recognized or standard.NET library named EfCore.TamperEvident. The term appears to refer to a specific architectural concept or a custom, niche implementation rather than a mainstream, publicly adopted NuGet package [1]. Recent technical discussions in the.NET ecosystem highlight that developers seeking tamper-evident audit trails in Entity Framework Core (EF Core) typically implement custom solutions using cryptographic hash chains [1]. These custom implementations often leverage EF Core's SaveChangesInterceptor to capture entity states and generate SHA-256 hashes that link transactions, ensuring that any unauthorized modification to historical audit logs breaks the chain [1]. For general auditing and change tracking in EF Core, the community and industry standard remains Audit.NET, which is widely used for its broad feature set and integration capabilities [2][3]. While Audit.NET is suitable for most standard auditing needs, experts note that it may not meet the strict requirements for immutable, tamper-evident logs [2]. Consequently, teams with high-compliance or zero-trust requirements often opt for custom-built interceptors or database-level features like SQL Server Temporal Tables, rather than relying on a single third-party library [4][5][2][6].

Citations:


Remove library or provide evidence of test coverage and active community adoption.

Repository exists with documentation and a NuGet package, but lacks critical maturity indicators for inclusion in a curated awesome list:

  • No test coverage: Repository contains no test directories or test files, critical for any security library
  • Zero community adoption: 0 stars, 0 forks, newly created on 2026-05-17
  • Brand new: Initial NuGet release (1.0.0) with only 3 commits, all on creation day
  • Not recognized in ecosystem: Web search indicates EfCore.TamperEvident is not widely adopted; mainstream alternative remains Audit.NET

For security libraries especially, the awesome list should prioritize established solutions with proven reliability, test coverage, and community validation. Consider waiting for this library to gain traction, demonstrate test coverage, and receive community review before inclusion.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` at line 699, The README entry for "EfCore.TamperEvident" should be
removed or replaced with evidence of maturity: either delete the "*
[EfCore.TamperEvident](https://github.com/furkiak/EfCore.TamperEvident) ..."
line, or update it to include links/badges proving test coverage and adoption
(e.g., CI badge, coverage badge, link to a tests directory and representative
test files, NuGet download/stats and community links); reference the repository
by name "EfCore.TamperEvident" in your change so reviewers can verify the added
test/CI artifacts and community metrics before re-inclusion.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the review. I understand the concerns regarding the library being new. To address the testing requirements, I have just added comprehensive unit tests to the repository ( (https://github.com/furkiak/EfCore.TamperEvident/tree/main/EfCore.TamperEvident.Tests). While the project is newly released, it solves a critical architecture gap in EF Core auditing. I am actively working on building its community adoption.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify the test files have been added and check current repo metrics

echo "=== Repository Metrics ==="
gh repo view furkiak/EfCore.TamperEvident --json name,description,stargazerCount,forkCount,createdAt,updatedAt 2>&1

echo -e "\n=== Test Directory Contents ==="
gh api repos/furkiak/EfCore.TamperEvident/contents/EfCore.TamperEvident.Tests --jq '.[] | {name: .name, type: .type}' 2>&1

echo -e "\n=== Recent Commits ==="
gh api repos/furkiak/EfCore.TamperEvident/commits --jq '.[0:5] | .[] | {date: .commit.author.date, message: .commit.message}' 2>&1

echo -e "\n=== NuGet Stats ==="
curl -s "https://api.nuget.org/v3/registration5-semver1/efcore.tamperevident/index.json" | python3 -c "
import json, sys
data = json.load(sys.stdin)
items = data.get('items', [])
if items:
    for page in items:
        for entry in page.get('items', []):
            print('Version:', entry.get('catalogEntry', {}).get('version'), 'Published:', entry.get('catalogEntry', {}).get('published'))
else:
    print('No entries found')
" 2>&1

Length of output: 1227


🏁 Script executed:

#!/bin/bash
echo "=== AuditVerifierTests.cs ==="
gh api repos/furkiak/EfCore.TamperEvident/contents/EfCore.TamperEvident.Tests/AuditVerifierTests.cs --jq '.content' | base64 -d 2>&1

echo -e "\n=== SecurityHelperTests.cs ==="
gh api repos/furkiak/EfCore.TamperEvident/contents/EfCore.TamperEvident.Tests/SecurityHelperTests.cs --jq '.content' | base64 -d 2>&1

Length of output: 7031


@furkiak, thank you for the quick follow-up — I've verified the test additions.

What looks good now:

  • AuditVerifierTests.cs covers the two most critical scenarios: valid hash chain passes and a broken chain is correctly detected
  • SecurityHelperTests.cs validates hash determinism, key sensitivity, and dictionary serialization ordering
  • ✅ Tests follow proper Arrange/Act/Assert structure using xUnit with an in-memory EF Core database
  • ✅ NuGet updated to v1.0.1 on the same day

Remaining concerns for the maintainer's consideration:

The tests address the coverage gap I raised, which is a meaningful step. However, for inclusion in a curated "awesome" list, a few maturity signals are still worth noting:

  1. Community adoption — The repo currently has 0 stars and 0 forks. Awesome lists typically reflect community-validated libraries, not just newly published ones.
  2. CI/CD pipeline — There's no visible CI badge or GitHub Actions workflow running the tests on push, which is standard practice for security libraries.
  3. Age — All activity (creation, tests, NuGet publish) occurred on the same day (2026-05-17), making it difficult for reviewers to assess real-world reliability.

A suggested path forward would be to add a GitHub Actions CI workflow to prove tests pass automatically, and revisit this PR once the library has gathered some community traction (stars, issues, external users). The final inclusion decision, of course, rests with the repository maintainer.

(◕‿◕✿) 🐇 — good progress on the tests!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following up on the previous feedback, I have successfully added a GitHub Actions CI workflow to automatically build the project and run the unit tests. The pipeline is now fully active, and all checks are passing completely green.

https://github.com/furkiak/EfCore.TamperEvident/actions/runs/26022300709

Thank you again for the constructive guidance on improving the repository's maturity. I will continue working on building community adoption and addressing the compiler warnings in the meantime.

@BabuBahir

Copy link
Copy Markdown

looks good

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants