Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
CRLReason
100.00% covered (success)
100.00%
13 / 13
100.00% covered (success)
100.00%
2 / 2
2
100.00% covered (success)
100.00%
1 / 1
 getDescription
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
1
 isValid
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5/**
6 * SPDX-FileCopyrightText: 2025 LibreCode coop and contributors
7 * SPDX-License-Identifier: AGPL-3.0-or-later
8 */
9
10namespace OCA\Libresign\Enum;
11
12/**
13 * RFC 5280 CRLReason codes
14 */
15enum CRLReason: int {
16    case UNSPECIFIED = 0;
17    case KEY_COMPROMISE = 1;
18    case CA_COMPROMISE = 2;
19    case AFFILIATION_CHANGED = 3;
20    case SUPERSEDED = 4;
21    case CESSATION_OF_OPERATION = 5;
22    case CERTIFICATE_HOLD = 6;
23    case REMOVE_FROM_CRL = 8;
24    case PRIVILEGE_WITHDRAWN = 9;
25    case AA_COMPROMISE = 10;
26
27    public function getDescription(): string {
28        return match ($this) {
29            self::UNSPECIFIED => 'unspecified',
30            self::KEY_COMPROMISE => 'keyCompromise',
31            self::CA_COMPROMISE => 'cACompromise',
32            self::AFFILIATION_CHANGED => 'affiliationChanged',
33            self::SUPERSEDED => 'superseded',
34            self::CESSATION_OF_OPERATION => 'cessationOfOperation',
35            self::CERTIFICATE_HOLD => 'certificateHold',
36            self::REMOVE_FROM_CRL => 'removeFromCRL',
37            self::PRIVILEGE_WITHDRAWN => 'privilegeWithdrawn',
38            self::AA_COMPROMISE => 'aACompromise',
39        };
40    }
41
42    public static function isValid(int $code): bool {
43        return self::tryFrom($code) !== null;
44    }
45}