Skip to content

Commit

Permalink
Merge pull request #119 from NicolasCARPi/nico-sensitive-attr
Browse files Browse the repository at this point in the history
Add SensitiveParameter to sensitive arguments
  • Loading branch information
RobThree authored Apr 17, 2024
2 parents ecef270 + e08b0a5 commit b909cb3
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 11 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/test-bacon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ jobs:

strategy:
matrix:
php-version: ['8.1', '8.2']
php-version: ['8.2', '8.3']

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: shivammathur/setup-php@v2
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-endroid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ jobs:

strategy:
matrix:
php-version: ['8.1', '8.2']
php-version: ['8.2', '8.3']
endroid-version: ["^3","^4","^5"]

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: shivammathur/setup-php@v2
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ jobs:

strategy:
matrix:
php-version: ['8.1', '8.2']
php-version: ['8.2', '8.3']

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- uses: shivammathur/setup-php@v2
with:
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,17 @@
# RobThree\TwoFactorAuth changelog

# Version 3.x

## Breaking changes

### PHP Version

Version 3.x requires at least PHP 8.2.

## Other changes

* The new PHP attribute [SensitiveParameter](https://www.php.net/manual/en/class.sensitiveparameter.php) was added to the code, to prevent accidental leak of secrets in stack traces.

# Version 2.x

## Breaking changes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ You can make use of the included [Endroid](https://robthree.github.io/TwoFactorA

## Requirements

* Requires PHP version >=8.1
* Requires PHP version >=8.2
* [cURL](http://php.net/manual/en/book.curl.php) when using the provided `QRServerProvider` (default), `ImageChartsQRCodeProvider` or `QRicketProvider` but you can also provide your own QR-code provider.

Optionally, you may need:
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"source": "https://github.com/RobThree/TwoFactorAuth"
},
"require": {
"php": ">=8.1.0"
"php": ">=8.2.0"
},
"require-dev": {
"phpunit/phpunit": "^9",
Expand Down
7 changes: 4 additions & 3 deletions lib/TwoFactorAuth.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
use RobThree\Auth\Providers\Time\ITimeProvider;
use RobThree\Auth\Providers\Time\LocalMachineTimeProvider;
use RobThree\Auth\Providers\Time\NTPTimeProvider;
use SensitiveParameter;

// Based on / inspired by: https://github.com/PHPGangsta/GoogleAuthenticator
// Algorithms, digits, period etc. explained: https://github.com/google/google-authenticator/wiki/Key-Uri-Format
Expand Down Expand Up @@ -66,7 +67,7 @@ public function createSecret(int $bits = 80): string
/**
* Calculate the code with given secret and point in time
*/
public function getCode(string $secret, ?int $time = null): string
public function getCode(#[SensitiveParameter] string $secret, ?int $time = null): string
{
$secretkey = $this->base32Decode($secret);

Expand Down Expand Up @@ -104,7 +105,7 @@ public function verifyCode(string $secret, string $code, int $discrepancy = 1, ?
/**
* Get data-uri of QRCode
*/
public function getQRCodeImageAsDataUri(string $label, string $secret, int $size = 200): string
public function getQRCodeImageAsDataUri(string $label, #[SensitiveParameter] string $secret, int $size = 200): string
{
if ($size <= 0) {
throw new TwoFactorAuthException('Size must be > 0');
Expand Down Expand Up @@ -150,7 +151,7 @@ public function ensureCorrectTime(?array $timeproviders = null, int $leniency =
/**
* Builds a string to be encoded in a QR code
*/
public function getQRText(string $label, string $secret): string
public function getQRText(string $label, #[SensitiveParameter] string $secret): string
{
return 'otpauth://totp/' . rawurlencode($label)
. '?secret=' . rawurlencode($secret)
Expand Down

0 comments on commit b909cb3

Please sign in to comment.