-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdata.py
More file actions
220 lines (193 loc) · 7.8 KB
/
data.py
File metadata and controls
220 lines (193 loc) · 7.8 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# coding: utf-8
"""
STACKIT Application Load Balancer Certificates API
This API offers the ability to store TLS certificates, which can be used by load balancing servers in STACKIT. They can be between consumer and load balancing server and/or between load balancing server and endpoint server.
The version of the OpenAPI document: 2.0.0
Generated by OpenAPI Generator (https://openapi-generator.tech)
Do not edit the class manually.
""" # noqa: E501
from __future__ import annotations
import json
import pprint
import re # noqa: F401
from typing import Any, ClassVar, Dict, List, Optional, Set
from pydantic import (
BaseModel,
ConfigDict,
Field,
StrictBool,
StrictStr,
field_validator,
)
from pydantic_core import to_jsonable_python
from typing_extensions import Annotated, Self
class Data(BaseModel):
"""
Data
""" # noqa: E501
dns_names: Optional[StrictStr] = Field(
default=None,
description="Comma-separated list of all domains and IP addresses the certificate is valid for (Subject Alternative Names).",
alias="dnsNames",
)
extended_key_usage: Optional[StrictStr] = Field(
default=None,
description="Comma-separated list of purposes the cert is valid for. 'Server Auth' is required for Load Balancer use.",
alias="extendedKeyUsage",
)
fingerprint_sha1: Optional[Annotated[str, Field(strict=True)]] = Field(
default=None,
description="The legacy SHA1 thumbprint. Provided for cross-referencing with older systems and browsers.",
alias="fingerprintSha1",
)
fingerprint_sha256: Optional[Annotated[str, Field(strict=True)]] = Field(
default=None,
description="The unique SHA256 hash of the raw certificate bytes. Use this as the primary unique identifier.",
alias="fingerprintSha256",
)
is_ca: Optional[StrictBool] = Field(
default=None,
description="Indicates if the certificate is a Certificate Authority, meaning it can sign other certificates.",
alias="isCa",
)
is_self_signed: Optional[StrictBool] = Field(
default=None,
description="Indicates if the certificate was signed by its own private key rather than a trusted third-party CA.",
alias="isSelfSigned",
)
issuer_cn: Optional[StrictStr] = Field(
default=None,
description="The Common Name of the Certificate Authority (CA) that signed and issued the certificate.",
alias="issuerCn",
)
key_strength: Optional[StrictStr] = Field(
default=None,
description="Human-readable summary of the public key's algorithm and bit-length or curve name.",
alias="keyStrength",
)
not_after: Optional[StrictStr] = Field(
default=None,
description="The expiration timestamp. After this date, browsers will show security warnings (RFC3339 format).",
alias="notAfter",
)
not_before: Optional[StrictStr] = Field(
default=None,
description="The timestamp indicating when the certificate starts being valid (RFC3339 format).",
alias="notBefore",
)
organization: Optional[StrictStr] = Field(
default=None, description="Organization name associated with the certificate subject."
)
public_key_algorithm: Optional[StrictStr] = Field(
default=None,
description="The cryptographic algorithm used to generate the public/private key pair.",
alias="publicKeyAlgorithm",
)
serial_number: Optional[StrictStr] = Field(
default=None,
description="The unique serial number assigned by the CA, represented in uppercase hexadecimal format.",
alias="serialNumber",
)
signature_algorithm: Optional[StrictStr] = Field(
default=None, description="The algorithm used by the CA to sign this certificate.", alias="signatureAlgorithm"
)
subject_cn: Optional[StrictStr] = Field(
default=None,
description="The primary identity of the certificate. Fallback sequence: Common Name -> First DNS Name -> Full Subject String.",
alias="subjectCn",
)
__properties: ClassVar[List[str]] = [
"dnsNames",
"extendedKeyUsage",
"fingerprintSha1",
"fingerprintSha256",
"isCa",
"isSelfSigned",
"issuerCn",
"keyStrength",
"notAfter",
"notBefore",
"organization",
"publicKeyAlgorithm",
"serialNumber",
"signatureAlgorithm",
"subjectCn",
]
@field_validator("fingerprint_sha1")
def fingerprint_sha1_validate_regular_expression(cls, value):
"""Validates the regular expression"""
if value is None:
return value
if not isinstance(value, str):
value = str(value)
if not re.match(r"^[a-fA-F0-9]{40}$", value):
raise ValueError(r"must validate the regular expression /^[a-fA-F0-9]{40}$/")
return value
@field_validator("fingerprint_sha256")
def fingerprint_sha256_validate_regular_expression(cls, value):
"""Validates the regular expression"""
if value is None:
return value
if not isinstance(value, str):
value = str(value)
if not re.match(r"^[a-fA-F0-9]{64}$", value):
raise ValueError(r"must validate the regular expression /^[a-fA-F0-9]{64}$/")
return value
model_config = ConfigDict(
validate_by_name=True,
validate_by_alias=True,
validate_assignment=True,
protected_namespaces=(),
)
def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))
def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
return json.dumps(to_jsonable_python(self.to_dict()))
@classmethod
def from_json(cls, json_str: str) -> Optional[Self]:
"""Create an instance of Data from a JSON string"""
return cls.from_dict(json.loads(json_str))
def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:
* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
excluded_fields: Set[str] = set([])
_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
return _dict
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"""Create an instance of Data from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate(
{
"dnsNames": obj.get("dnsNames"),
"extendedKeyUsage": obj.get("extendedKeyUsage"),
"fingerprintSha1": obj.get("fingerprintSha1"),
"fingerprintSha256": obj.get("fingerprintSha256"),
"isCa": obj.get("isCa"),
"isSelfSigned": obj.get("isSelfSigned"),
"issuerCn": obj.get("issuerCn"),
"keyStrength": obj.get("keyStrength"),
"notAfter": obj.get("notAfter"),
"notBefore": obj.get("notBefore"),
"organization": obj.get("organization"),
"publicKeyAlgorithm": obj.get("publicKeyAlgorithm"),
"serialNumber": obj.get("serialNumber"),
"signatureAlgorithm": obj.get("signatureAlgorithm"),
"subjectCn": obj.get("subjectCn"),
}
)
return _obj