Server IP : 144.76.124.212 / Your IP : 216.73.216.26 Web Server : LiteSpeed System : Linux l4cp.vnetindia.com 4.18.0-553.40.1.lve.el8.x86_64 #1 SMP Wed Feb 12 18:54:57 UTC 2025 x86_64 User : rakcha ( 1356) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /opt/cpguard/app/api/public/captcha/vendor/altcha-org/altcha/ |
Upload File : |
# ALTCHA PHP Library The ALTCHA PHP Library is a lightweight, zero-dependency library designed for creating and verifying [ALTCHA](https://altcha.org) challenges, specifically tailored for PHP applications. ## Compatibility This library is compatible with: - PHP 7.4+ - All major platforms (Linux, Windows, macOS) ## Example - [Demo server](https://github.com/altcha-org/altcha-starter-php) ## Installation To install the ALTCHA PHP Library, use the following command: ```sh composer require altcha-org/altcha ``` ## Usage Here’s a basic example of how to use the ALTCHA PHP Library: ```php <?php require 'vendor/autoload.php'; use AltchaOrg\Altcha\ChallengeOptions; use AltchaOrg\Altcha\Altcha; $hmacKey = 'secret hmac key'; // Create a new challenge $options = new ChallengeOptions([ 'hmacKey' => $hmacKey, 'maxNumber' => 50000, // the maximum random number ]); $challenge = Altcha::createChallenge($options); echo "Challenge created: " . json_encode($challenge) . "\n"; // Example payload to verify $payload = [ 'algorithm' => $challenge->algorithm, 'challenge' => $challenge->challenge, 'number' => 12345, // Example number 'salt' => $challenge->salt, 'signature' => $challenge->signature, ]; // Verify the solution $ok = Altcha::verifySolution($payload, $hmacKey, true); if ($ok) { echo "Solution verified!\n"; } else { echo "Invalid solution.\n"; } ``` ## API ### `Altcha::createChallenge(array $options): array` Creates a new challenge for ALTCHA. **Parameters:** - `options array`: - `algorithm string`: Hashing algorithm to use (`SHA-1`, `SHA-256`, `SHA-512`, default: `SHA-256`). - `maxNumber int`: Maximum number for the random number generator (default: 1,000,000). - `saltLength int`: Length of the random salt (default: 12 bytes). - `hmacKey string`: Required HMAC key. - `salt string`: Optional salt string. If not provided, a random salt will be generated. - `number int`: Optional specific number to use. If not provided, a random number will be generated. - `expires \DateTime`: Optional expiration time for the challenge. - `params array`: Optional URL-encoded query parameters. **Returns:** `array` ### `Altcha::verifySolution(array $payload, string $hmacKey, bool $checkExpires): bool` Verifies an ALTCHA solution. **Parameters:** - `payload array`: The solution payload to verify. - `hmacKey string`: The HMAC key used for verification. - `checkExpires bool`: Whether to check if the challenge has expired. **Returns:** `bool` ### `Altcha::extractParams(array $payload): array` Extracts URL parameters from the payload's salt. **Parameters:** - `payload array`: The payload containing the salt. **Returns:** `array` ### `Altcha::verifyFieldsHash(array $formData, array $fields, string $fieldsHash, string $algorithm): bool` Verifies the hash of form fields. **Parameters:** - `formData array`: The form data to hash. - `fields array`: The fields to include in the hash. - `fieldsHash string`: The expected hash value. - `algorithm string`: Hashing algorithm (`SHA-1`, `SHA-256`, `SHA-512`). **Returns:** `bool` ### `Altcha::verifyServerSignature($payload, string $hmacKey): array` Verifies the server signature. **Parameters:** - `payload mixed`: The payload to verify (string or `ServerSignaturePayload` array). - `hmacKey string`: The HMAC key used for verification. **Returns:** `array` ### `Altcha::solveChallenge(string $challenge, string $salt, string $algorithm, int $max, int $start, $stopChan = null): array` Finds a solution to the given challenge. **Parameters:** - `challenge string`: The challenge hash. - `salt string`: The challenge salt. - `algorithm string`: Hashing algorithm (`SHA-1`, `SHA-256`, `SHA-512`). - `max int`: Maximum number to iterate to. - `start int`: Starting number. **Returns:** `array` ## Tests ```sh vendor/bin/phpunit --bootstrap src/Altcha.php tests/AltchaTest.php ``` ## License MIT