Skip to content

Commit e2d2b23

Browse files
committed
linting
1 parent a56a409 commit e2d2b23

4 files changed

Lines changed: 59 additions & 62 deletions

File tree

src/vaultwarden/clients/bitwarden.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def _refresh_connect_token(self):
7373
self._connect_token.master_key = make_master_key(
7474
password=self.password,
7575
salt=self.email,
76-
kdf=vaultwarden.models.bitwarden.Kdf.from_ConnectToken(
76+
kdf=vaultwarden.models.bitwarden.Kdf.from_connect_token(
7777
self._connect_token
7878
),
7979
)
@@ -101,7 +101,7 @@ def _set_connect_token(self):
101101
self._connect_token.master_key = make_master_key(
102102
password=self.password,
103103
salt=self.email,
104-
kdf=vaultwarden.models.bitwarden.Kdf.from_ConnectToken(
104+
kdf=vaultwarden.models.bitwarden.Kdf.from_connect_token(
105105
self._connect_token
106106
),
107107
)

src/vaultwarden/models/bitwarden.py

Lines changed: 53 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,42 @@
1-
from typing import Generic, Literal, TypeVar, cast, Any, Self, Annotated, Union
2-
from uuid import UUID
1+
import dataclasses
32
import datetime
3+
from typing import (
4+
TYPE_CHECKING,
5+
Annotated,
6+
Any,
7+
Generic,
8+
Literal,
9+
Self,
10+
TypeVar,
11+
Union,
12+
cast,
13+
)
14+
from uuid import UUID
415

516
from pydantic import (
617
AliasChoices,
718
Field,
19+
ModelWrapValidatorHandler,
820
TypeAdapter,
21+
WrapValidator,
922
field_validator,
10-
RootModel,
11-
PrivateAttr,
1223
model_validator,
13-
ValidationError,
14-
ModelWrapValidatorHandler,
15-
WrapValidator,
16-
AfterValidator,
1724
)
1825
from pydantic_core.core_schema import (
1926
FieldValidationInfo,
2027
ValidationInfo,
2128
ValidatorFunctionWrapHandler,
2229
)
30+
from src.vaultwarden.models.enum import KdfType
2331

2432
from vaultwarden.clients.bitwarden import BitwardenAPIClient
2533
from vaultwarden.models.enum import CipherType, OrganizationUserType
2634
from vaultwarden.models.exception_models import BitwardenError
2735
from vaultwarden.models.permissive_model import PermissiveBaseModel
2836
from vaultwarden.utils.crypto import decrypt, encrypt
2937

30-
from src.vaultwarden.models.enum import KdfType
38+
if TYPE_CHECKING:
39+
import vaultwarden.clients.bitwarden
3140

3241
# Pydantic models for Bitwarden data structures
3342

@@ -56,57 +65,56 @@ def api_client(self) -> BitwardenAPIClient:
5665
return self.bitwarden_client
5766

5867

59-
def decodeBytes(
68+
def decode_bytes(
6069
value: Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo
6170
) -> str:
6271
for key in info.context["cctx"][::-1]:
6372
try:
6473
return decrypt(handler(value), key)
65-
except Exception as e:
74+
except Exception:
6675
continue
67-
raise e
6876

6977

70-
def decodeString(
78+
def decode_string(
7179
value: Any, handler: ValidatorFunctionWrapHandler, info: ValidationInfo
7280
) -> str:
73-
return decodeBytes(value, handler, info=info).decode("utf-8")
81+
return decode_bytes(value, handler, info=info).decode("utf-8")
7482

7583

7684
class UriMatch(BitwardenBaseModel):
7785
class Config:
7886
extra = "forbid"
7987

8088
match: int | None = None
81-
uri: Annotated[str, WrapValidator(decodeString)] | None = None
82-
uriChecksum: Annotated[str, WrapValidator(decodeString)] | None = None
89+
uri: Annotated[str, WrapValidator(decode_string)] | None = None
90+
uriChecksum: Annotated[str, WrapValidator(decode_string)] | None = None
8391
response: str | None = None
8492

8593

8694
class XField(BitwardenBaseModel):
8795
class Config:
8896
extra = "forbid"
8997

90-
name: Annotated[str, WrapValidator(decodeString)] | None = None
91-
response: Annotated[str, WrapValidator(decodeString)] | None = None
98+
name: Annotated[str, WrapValidator(decode_string)] | None = None
99+
response: Annotated[str, WrapValidator(decode_string)] | None = None
92100
type: int
93-
value: Annotated[str, WrapValidator(decodeString)] | None = None
101+
value: Annotated[str, WrapValidator(decode_string)] | None = None
94102
linkedId: str | None = None
95103

96104

97105
class CipherLogin(BitwardenBaseModel):
98106
class Config:
99107
extra = "forbid"
100108

101-
name: Annotated[str, WrapValidator(decodeString)] | None = None
109+
name: Annotated[str, WrapValidator(decode_string)] | None = None
102110
autofillOnPageLoad: bool | None = None
103-
password: Annotated[str, WrapValidator(decodeString)] | None = None
111+
password: Annotated[str, WrapValidator(decode_string)] | None = None
104112
passwordRevisionDate: datetime.datetime | None = None
105113
totp: str | None = None
106-
uri: Annotated[str, WrapValidator(decodeString)] | None = None
114+
uri: Annotated[str, WrapValidator(decode_string)] | None = None
107115
uris: list[UriMatch] | None = None
108-
username: Annotated[str, WrapValidator(decodeString)] | None = None
109-
notes: Annotated[str, WrapValidator(decodeString)] | None = None
116+
username: Annotated[str, WrapValidator(decode_string)] | None = None
117+
notes: Annotated[str, WrapValidator(decode_string)] | None = None
110118

111119

112120
class PasswordChange(BitwardenBaseModel):
@@ -117,24 +125,24 @@ class Config:
117125
password: str
118126

119127

120-
class fido2Credential(BitwardenBaseModel):
128+
class Fido2Credential(BitwardenBaseModel):
121129
class Config:
122130
extra = "forbid"
123131

124-
counter: Annotated[str, WrapValidator(decodeString)] | None = None
132+
counter: Annotated[str, WrapValidator(decode_string)] | None = None
125133
creationDate: datetime.datetime | None = None
126-
credentialId: Annotated[str, WrapValidator(decodeString)] | None = None
127-
discoverable: Annotated[str, WrapValidator(decodeString)] | None = None
128-
keyAlgorithm: Annotated[str, WrapValidator(decodeString)] | None = None
129-
keyCurve: Annotated[str, WrapValidator(decodeString)] | None = None
130-
keyType: Annotated[str, WrapValidator(decodeString)] | None = None
131-
keyValue: Annotated[str, WrapValidator(decodeString)] | None = None
134+
credentialId: Annotated[str, WrapValidator(decode_string)] | None = None
135+
discoverable: Annotated[str, WrapValidator(decode_string)] | None = None
136+
keyAlgorithm: Annotated[str, WrapValidator(decode_string)] | None = None
137+
keyCurve: Annotated[str, WrapValidator(decode_string)] | None = None
138+
keyType: Annotated[str, WrapValidator(decode_string)] | None = None
139+
keyValue: Annotated[str, WrapValidator(decode_string)] | None = None
132140
response: str | None = None
133-
rpId: Annotated[str, WrapValidator(decodeString)] | None = None
134-
rpName: Annotated[str, WrapValidator(decodeString)] | None = None
135-
userDisplayName: Annotated[str, WrapValidator(decodeString)] | None = None
136-
userHandle: Annotated[str, WrapValidator(decodeString)] | None = None
137-
userName: Annotated[str, WrapValidator(decodeString)] | None = None
141+
rpId: Annotated[str, WrapValidator(decode_string)] | None = None
142+
rpName: Annotated[str, WrapValidator(decode_string)] | None = None
143+
userDisplayName: Annotated[str, WrapValidator(decode_string)] | None = None
144+
userHandle: Annotated[str, WrapValidator(decode_string)] | None = None
145+
userName: Annotated[str, WrapValidator(decode_string)] | None = None
138146

139147

140148
class LoginData(CipherLogin):
@@ -144,7 +152,7 @@ class Config:
144152
fields: list[XField] | None = None
145153
passwordHistory: list[PasswordChange] | None = None
146154
response: str | None = None
147-
fido2Credentials: list[fido2Credential] | None = None
155+
fido2Credentials: list[Fido2Credential] | None = None
148156

149157

150158
class SecureNoteData(CipherLogin):
@@ -161,19 +169,19 @@ class SecureNoteProperty(BitwardenBaseModel):
161169
class Config:
162170
extra = "forbid"
163171

164-
name: Annotated[str, WrapValidator(decodeString)] | None = None
165-
notes: Annotated[str, WrapValidator(decodeString)] | None = None
172+
name: Annotated[str, WrapValidator(decode_string)] | None = None
173+
notes: Annotated[str, WrapValidator(decode_string)] | None = None
166174
fields: list[XField] | None = None
167175
passwordHistory: list[PasswordChange] | None = None
168-
response: Annotated[str, WrapValidator(decodeString)] | None = None
176+
response: Annotated[str, WrapValidator(decode_string)] | None = None
169177
type: int
170178

171179

172180
class Attachment(BitwardenBaseModel):
173181
class Config:
174182
extra = "forbid"
175183

176-
fileName: Annotated[str, WrapValidator(decodeString)] | None = None
184+
fileName: Annotated[str, WrapValidator(decode_string)] | None = None
177185
id: str
178186
key: str | None = (
179187
None # Annotated[str, WrapValidator(decodeBytes)]|None = None
@@ -191,7 +199,7 @@ class Config:
191199
Id: UUID | None = None
192200
OrganizationId: UUID | None = Field(None, validate_default=True)
193201
Type: CipherType
194-
Name: Annotated[str, WrapValidator(decodeString)]
202+
Name: Annotated[str, WrapValidator(decode_string)]
195203
CollectionIds: list[UUID]
196204
key: str | None = None
197205

@@ -200,7 +208,7 @@ class Config:
200208
deletedDate: datetime.datetime | None = None
201209
fields: list[XField] | None = None
202210

203-
notes: Annotated[str, WrapValidator(decodeString)] | None = None
211+
notes: Annotated[str, WrapValidator(decode_string)] | None = None
204212
reprompt: int
205213
revisionDate: str
206214
sshKey: str | None
@@ -835,9 +843,6 @@ def get_organization(
835843
)
836844

837845

838-
import dataclasses
839-
840-
841846
@dataclasses.dataclass
842847
class Kdf:
843848
Kdf: KdfType
@@ -846,7 +851,7 @@ class Kdf:
846851
KdfParallelism: int | None = None
847852

848853
@classmethod
849-
def from_ConnectToken(
854+
def from_connect_token(
850855
cls, token: "vaultwarden.clients.bitwarden.ConnectToken"
851856
):
852857
return cls(

src/vaultwarden/models/sync.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import time
22
from uuid import UUID
33

4-
import pydantic
54
from pydantic import AliasChoices, Field, field_validator
5+
from src.vaultwarden.models.enum import KdfType
66

77
from vaultwarden.models.enum import VaultwardenUserStatus
88
from vaultwarden.models.permissive_model import PermissiveBaseModel
99
from vaultwarden.utils.crypto import decrypt
1010

11-
from src.vaultwarden.models.enum import KdfType
12-
1311

1412
class ConnectToken(PermissiveBaseModel):
1513
Kdf: KdfType = KdfType.Pbkdf2

src/vaultwarden/utils/crypto.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,7 @@ def is_encrypted(cipher_string):
115115
return True
116116

117117

118-
def make_master_key(
119-
password: str, salt: str, kdf: "vaultwarden.models.bitwarden.Kdf"
120-
):
118+
def make_master_key(password: str, salt: str, kdf: "vaultwarden.models.bitwarden.Kdf"):
121119
import vaultwarden.models.bitwarden
122120

123121
assert isinstance(salt, str)
@@ -186,9 +184,7 @@ def aes_encrypt(plaintext, key, charset="utf-8"):
186184

187185
def encrypt_sym(plaintext, key, to_bytes=False, *a, **kw):
188186
# inspired from bitwarden/jslib:src/services/crypto.service.ts
189-
typ, (iv, ct, mac) = int(CIPHERS.sym), aes_encrypt(
190-
plaintext, key, *a, **kw
191-
)
187+
typ, (iv, ct, mac) = int(CIPHERS.sym), aes_encrypt(plaintext, key, *a, **kw)
192188
if mac:
193189
mac = mac.digest()
194190
if to_bytes:
@@ -269,9 +265,7 @@ def decrypt_bytes(cipher_bytes, key, *a, **kw):
269265
ct = cipher_bytes[49:]
270266
ret = decrypt_sym(ct, key, iv, mac)
271267
else:
272-
raise UnimplementedError(
273-
f"{typ} encType decryption is not implemented"
274-
)
268+
raise UnimplementedError(f"{typ} encType decryption is not implemented")
275269
return ret
276270

277271

0 commit comments

Comments
 (0)