• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / typo3-form-consent / 20137980723

11 Dec 2025 03:16PM UTC coverage: 95.51% (+2.3%) from 93.23%
20137980723

push

github

web-flow
Merge pull request #436 from eliashaeussler/task/drop-typo3-v12

30 of 39 new or added lines in 6 files covered. (76.92%)

16 existing lines in 3 files now uncovered.

787 of 824 relevant lines covered (95.51%)

15.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

91.67
/Classes/Compatibility/Migration/HmacHashMigration.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the TYPO3 CMS extension "form_consent".
7
 *
8
 * Copyright (C) 2021-2025 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 2 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\Typo3FormConsent\Compatibility\Migration;
25

26
use TYPO3\CMS\Core;
27

28
/**
29
 * HmacHashMigration
30
 *
31
 * @author Elias Häußler <elias@haeussler.dev>
32
 * @license GPL-2.0-or-later
33
 * @internal
34
 */
35
final readonly class HmacHashMigration
36
{
37
    public function __construct(
21✔
38
        private Core\Crypto\HashService $hashService,
39
    ) {}
21✔
40

41
    public function migrate(string $string, string $secret): string
14✔
42
    {
43
        // Early return if string does not have HMAC appended
44
        if (strlen($string) < 40) {
14✔
45
            return $string;
1✔
46
        }
47

48
        // Early return if secret is empty
49
        if ($secret === '') {
13✔
NEW
50
            return $string;
×
51
        }
52

53
        // Validate hash
54
        try {
55
            $this->hashService->validateAndStripHmac($string, $secret);
13✔
56

57
            // Hash is valid
58
            return $string;
11✔
59
        } catch (Core\Exception\Crypto\InvalidHashStringException) {
2✔
60
            // Hash is invalid and needs migration
61
        }
62

63
        $string = substr($string, 0, -40);
2✔
64

65
        return $this->hashService->appendHmac($string, $secret);
2✔
66
    }
67
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc