PHPackages                             pps-protocol/pps-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. pps-protocol/pps-php

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

pps-protocol/pps-php
====================

PHP implementation of the PulseProof Sentinel Protocol (PPS): time-bound asymmetric authentication proofs for offline, OTP-style, transaction-signing, duress-aware, and multi-device flows.

v0.1.0(today)23↑2900%Apache-2.0PHPPHP ^8.1CI passing

Since Jul 23Pushed todayCompare

[ Source](https://github.com/pps-protocol/pps-php)[ Packagist](https://packagist.org/packages/pps-protocol/pps-php)[ Docs](https://github.com/pps-protocol/pps-php)[ RSS](/packages/pps-protocol-pps-php/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

PPS-PHP
=======

[](#pps-php)

  **PHP implementation of the PulseProof Sentinel Protocol (PPS)**

 [ ![IETF Internet-Draft](https://camo.githubusercontent.com/bd612b1153b793dd518cf4d8abebf5ced7e845a07673dabfc17d2fe92489caae/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f494554462d64726166742d2d68657a616d692d2d70756c736570726f6f662d2d73656e74696e656c2d626c7565) ](https://datatracker.ietf.org/doc/draft-hezami-pulseproof-sentinel/) [![Protocol Version 1](https://camo.githubusercontent.com/d4943e8c757bf873d2394d0b8a2fc4c48c4893ccb28d6db29e68edf44c2c6683/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50726f746f636f6c25323056657273696f6e2d312d6f72616e6765)](https://camo.githubusercontent.com/d4943e8c757bf873d2394d0b8a2fc4c48c4893ccb28d6db29e68edf44c2c6683/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50726f746f636f6c25323056657273696f6e2d312d6f72616e6765) [![PHP 8.1+](https://camo.githubusercontent.com/3a73e2280ec14e7ba71344d0c7bcdf21c2f95f4bd8ee037a42fdbd89da744e65/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d373737424234)](https://camo.githubusercontent.com/3a73e2280ec14e7ba71344d0c7bcdf21c2f95f4bd8ee037a42fdbd89da744e65/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d373737424234) [![Status: Experimental](https://camo.githubusercontent.com/f044217add8beefe0e05d0ab03b1f423bb4e04c25e462382efdedf73ffb2bbf1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374617475732d4578706572696d656e74616c2d726564)](https://camo.githubusercontent.com/f044217add8beefe0e05d0ab03b1f423bb4e04c25e462382efdedf73ffb2bbf1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374617475732d4578706572696d656e74616c2d726564) [![License: Apache-2.0](https://camo.githubusercontent.com/bbb012395ef1fa09ec910634c05f9b3ac78fa2ab7ac4c9a825fba78b82a1adf7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368652d2d322e302d626c7565)](https://camo.githubusercontent.com/bbb012395ef1fa09ec910634c05f9b3ac78fa2ab7ac4c9a825fba78b82a1adf7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368652d2d322e302d626c7565)

---

What is PPS-PHP?
----------------

[](#what-is-pps-php)

**PPS-PHP** is a complete PHP implementation of the PulseProof Sentinel Protocol (PPS), an experimental authentication protocol that replaces shared-secret TOTP-style codes with signed, time-bound, asymmetric proofs called **Pulses**.

PPS is designed to complement, not replace, WebAuthn/FIDO2. It targets operational gaps where WebAuthn is unavailable or insufficient:

- offline or semi-offline authentication
- legacy OTP-style input flows
- constrained hardware terminals
- QR-code and deep-link authentication
- transaction signing with human-visible amount confirmation
- silent duress signaling
- offline multi-device threshold approval

---

Features
--------

[](#features)

### Core Protocol

[](#core-protocol)

- Ed25519 digital signatures
- Deterministic CBOR encoding
- Time-bound authentication proofs
- Server nonce binding
- Monotonic counter replay protection
- Expiration enforcement
- RP (Relying Party) binding

### Advanced Features

[](#advanced-features)

- **Verifiable Forward-Secure Ratchet** — automatic key rotation with signed next public key
- **Rotation Certificates** — offline key rotation catch-up
- **Silent Duress / Honey-Pulse** — hidden duress key with indistinguishable response
- **Threshold Mode** — n-of-m Ed25519 multisignature for offline multi-device approval
- **Transaction Signing** — AmountMark embedding in Trust Code
- **Policy Binding** — dynamic server-issued security policy enforcement
- **Context Binding** — session, BLE, acoustic, and device integrity binding
- **Trust Code** — human-verifiable numeric code derived from signature
- **Trust Phrase** — optional three-word human-friendly phrase
- **Offline Mode** — authentication without live network round-trip

### Implementation Quality

[](#implementation-quality)

- PHP 8.1+ with strict types
- `ext-sodium` for Ed25519
- `ext-gmp` for unbiased decimal derivation
- Constant-time comparisons
- Pluggable storage backends
- Comprehensive test suite
- PSR-12 code style

---

Requirements
------------

[](#requirements)

RequirementVersionPHP8.1 or higherext-sodiumrequiredext-gmprequiredext-hashrequiredext-jsonrequiredext-mbstringrecommended### Optional Extensions

[](#optional-extensions)

ExtensionPurposeext-pdoDatabase storage backendext-redisRedis storage backend---

Installation
------------

[](#installation)

### Composer

[](#composer)

```
composer require pps-protocol/pps-php
```

### From Source

[](#from-source)

```
git clone https://github.com/pps-protocol/pps-php.git
cd pps-php
composer install
```

### Verify Installation

[](#verify-installation)

```
