aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sec_certs/sample/fips_algorithm.py
blob: 16f19e64e9986b2b4958bfd5bf7d20db5d296299 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from __future__ import annotations

from dataclasses import dataclass
from datetime import date
from typing import ClassVar

from sec_certs import constants
from sec_certs.serialization.json import ComplexSerializableType
from sec_certs.serialization.pandas import PandasSerializableType


@dataclass(eq=True, frozen=True)
class FIPSAlgorithm(PandasSerializableType, ComplexSerializableType):
    """
    Data structure for algorithm of `FIPSCertificate`
    """

    alg_number: str
    algorithm_type: str
    vendor: str
    implementation_name: str
    validation_date: date

    pandas_columns: ClassVar[list[str]] = [
        "dgst",
        "alg_number",
        "algorithm_type",
        "vendor",
        "implementation_name",
        "validation_date",
    ]

    @property
    def pandas_tuple(self) -> tuple:
        return (
            self.dgst,
            self.alg_number,
            self.algorithm_type,
            self.vendor,
            self.implementation_name,
            self.validation_date,
        )

    @property
    def dgst(self) -> str:
        return f"{self.algorithm_type}{self.alg_number}"

    @property
    def page_url(self) -> str:
        return constants.FIPS_ALG_URL.format(self.algorithm_type, self.alg_number)