Skip to content

Fix iCloud Passwords YubiKey input handling - #540

Merged
kayjoosten merged 1 commit into
mainfrom
feature/issue-486-icloud-yubikey-otp-fix
Sep 10, 2026
Merged

kayjoosten merged 1 commit into
mainfrom
feature/issue-486-icloud-yubikey-otp-fix

Conversation

@kayjoosten

Copy link
Copy Markdown
Contributor

Summary

  • Rename the RA browser-visible YubiKey input so iCloud Passwords does not intercept the Enter key.
  • Preserve the downstream otp request payload contract.
  • Add regression tests for form binding and request serialization.

Fixes #486

Test plan

  • XDEBUG_MODE=off vendor/bin/phpunit --configuration=ci/qa/phpunit.xml src/Surfnet/StepupRa/RaBundle/Tests/Form/Type/VerifyYubikeyPublicIdTypeTest.php src/Surfnet/StepupRa/RaBundle/Tests/Service/YubikeyServiceTest.php
  • Full PHPUnit suite: 88 tests, 142 assertions
  • COMPOSER_MEMORY_LIMIT=1G composer check-ci reaches all QA stages; local PHPUnit exits with the existing no-coverage-driver warning under PHP 8.5.

Why is this change needed?
Prior to this change, Safari and iCloud Passwords treated the browser-visible `otp` field as a one-time-password input and intercepted the YubiKey-generated Enter event, preventing the RA form from submitting.

How does it address the issue?
This change renames the browser-visible field to `yubikeyInput` across the RA form and command flow while preserving the downstream `otp.value` API payload. Regression tests cover rendered field metadata, command mapping, and API serialization.

Issue: #486
Pull request: #540
@kayjoosten
kayjoosten force-pushed the feature/issue-486-icloud-yubikey-otp-fix branch from da41faf to 72f2579 Compare September 9, 2026 10:46
@kayjoosten
kayjoosten merged commit a2cf43f into main Sep 10, 2026
2 checks passed
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.

When using the Apple password manager, yubikey entry is broken

2 participants