You've already forked wc-licensed-product
Release v0.2.0 - Security and integrity features
- Add REST API response signing using HMAC-SHA256 - Add SHA256 hash validation for version file uploads - Add ResponseSigner class for automatic API response signing - Add file_hash column to database schema - Remove external URL support from version uploads - Update translations with all fuzzy strings resolved Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
50
CLAUDE.md
50
CLAUDE.md
@@ -36,6 +36,8 @@ This project is proudly **"vibe-coded"** using Claude.AI - the entire codebase w
|
||||
|
||||
No known bugs at the moment
|
||||
|
||||
No planned features at this time. See Session History for completed work.
|
||||
|
||||
## Technical Stack
|
||||
|
||||
- **Language:** PHP 8.3.x
|
||||
@@ -667,3 +669,51 @@ Security practices verified:
|
||||
- Created release package: `releases/wc-licensed-product-0.1.0.zip` (478 KB)
|
||||
- SHA256: `62638e240315107098be4cb40faff8395e9e1b719d79b73d80e69d680b305e87`
|
||||
- Tagged as `v0.1.0` and pushed to `main` branch
|
||||
|
||||
### 2026-01-22 - Version 0.2.0 - Security & Integrity Features
|
||||
|
||||
**Overview:**
|
||||
|
||||
Added response signing for REST API security and SHA256 checksum validation for uploaded version files.
|
||||
|
||||
**Implemented:**
|
||||
|
||||
- REST API response signing using HMAC-SHA256 for tamper-proof responses
|
||||
- SHA256 hash field for product version uploads with server-side validation
|
||||
- Per-license key derivation using HKDF-like approach
|
||||
- Automatic signature headers on license API endpoints
|
||||
|
||||
**Removed:**
|
||||
|
||||
- External download URL field from product version form
|
||||
- Direct URL support in version uploads (Media Library only now)
|
||||
|
||||
**New files:**
|
||||
|
||||
- `src/Api/ResponseSigner.php` - HMAC-SHA256 response signing class
|
||||
|
||||
**Modified files:**
|
||||
|
||||
- `src/Installer.php` - Added `file_hash` column to versions table schema
|
||||
- `src/Product/ProductVersion.php` - Added `fileHash` property and getter
|
||||
- `src/Product/VersionManager.php` - Removed `$downloadUrl` parameter, added `$fileHash` with validation
|
||||
- `src/Admin/VersionAdminController.php` - Removed URL field, added SHA256 hash field
|
||||
- `assets/js/versions.js` - Updated form handling for hash field
|
||||
- `src/Plugin.php` - Initialize ResponseSigner when server secret is configured
|
||||
|
||||
**Technical notes:**
|
||||
|
||||
- Response signing only activates when `WC_LICENSE_SERVER_SECRET` constant is defined
|
||||
- Signature algorithm: `HMAC-SHA256(derived_key, timestamp + ':' + canonical_json)`
|
||||
- Key derivation: `HMAC-SHA256(HMAC-SHA256(license_key, server_secret) + "\x01", server_secret)`
|
||||
- Hash validation throws `InvalidArgumentException` on mismatch
|
||||
- Compatible with `magdev/wc-licensed-product-client` SecureLicenseClient
|
||||
- Database migration handled by WordPress `dbDelta()` function
|
||||
|
||||
**Configuration:**
|
||||
|
||||
To enable response signing, add to `wp-config.php`:
|
||||
|
||||
```php
|
||||
define('WC_LICENSE_SERVER_SECRET', 'your-secure-random-string-min-32-chars');
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user