| # AmanPay demo samples |
|
|
| Default biometric samples so co-authors can test the full pipeline **without |
| capturing their own biometrics**. Two identities: |
|
|
| - **alice** β enroll + authenticate pairs for **all three modalities** |
| (face, fingerprint, voice). Voice clips are two utterances from the same |
| LibriSpeech speaker (id 426), so enroll/auth genuinely match. |
| - **bob** β a distinct identity (face + fingerprint) for impostor / negative tests. |
|
|
| Layout is described in [`manifest.json`](manifest.json). |
|
|
| ## Fastest: one-click demo in the web app |
|
|
| Open the app (`https://<host>:8443/`) β **Pay** tab β **βΆ Load demo**. This calls |
| `POST /demo/seed`, which server-side enrolls the tri-modal `alice` identity, records |
| consent, links a token-backed Chase account, and pre-fills the pay form with alice's |
| *authenticate* samples. Then hit **Pay with biometrics**. |
|
|
| ## Or: seed via the API |
|
|
| ```bash |
| # Seed a demo identity + wallet; returns the account + authenticate samples. |
| curl -sk -X POST https://<host>:8443/demo/seed | jq . |
| ``` |
|
|
| ## Or: drive it yourself (Python) |
|
|
| ```python |
| import base64, requests, urllib3; urllib3.disable_warnings() |
| B = "https://<host>:8443"; S = requests.Session(); S.verify = False |
| def b(p, mt): return f"data:{mt};base64," + base64.b64encode(open(p, "rb").read()).decode() |
| |
| fe = b("examples/alice_face_enroll.jpg", "image/jpeg") |
| pe = b("examples/alice_fp_enroll.png", "image/png") |
| ve = b("examples/alice_voice_enroll.wav", "audio/wav") |
| S.post(B+"/unified/enroll", json={"user_id": "alice", "face_image": fe, |
| "fingerprint_image": pe, "voice_audio": ve}) |
| ``` |
|
|
| These files are small, synthetic/benchmark-derived, and safe to commit β no real |
| personal biometric data. |
|
|