Switched from Bcrypt to Scrypt for master password hashing Changed models to use new sizes for hashes and salts, doubled the size of enc_login and enc_passwd for accounts Created new function to check master password validity Increased salt sizes for accounts and master passwords Removed bcrypt from requirements
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
from typing import Optional
|
|
|
|
import sqlmodel
|
|
|
|
|
|
class MasterPass(sqlmodel.SQLModel, table=True):
|
|
__tablename__ = "master_passwords"
|
|
id: Optional[int] = sqlmodel.Field(primary_key=True)
|
|
user_id: int = sqlmodel.Field(nullable=False, index=True, unique=True)
|
|
salt: bytes = sqlmodel.Field(
|
|
sa_column=sqlmodel.Column(sqlmodel.BINARY(64), nullable=False)
|
|
)
|
|
passwd: bytes = sqlmodel.Field(
|
|
sa_column=sqlmodel.Column(sqlmodel.BINARY(128), nullable=False)
|
|
)
|
|
|
|
|
|
class Account(sqlmodel.SQLModel, table=True):
|
|
__tablename__ = "accounts"
|
|
__table_args__ = (sqlmodel.UniqueConstraint("user_id", "name"),)
|
|
id: Optional[int] = sqlmodel.Field(primary_key=True)
|
|
user_id: int = sqlmodel.Field(nullable=False, index=True)
|
|
name: str = sqlmodel.Field(nullable=False, index=True, max_length=255)
|
|
salt: bytes = sqlmodel.Field(
|
|
sa_column=sqlmodel.Column(sqlmodel.BINARY(64), nullable=False)
|
|
)
|
|
enc_login: bytes = sqlmodel.Field(
|
|
sa_column=sqlmodel.Column(sqlmodel.VARBINARY(500), nullable=False)
|
|
)
|
|
enc_pass: bytes = sqlmodel.Field(
|
|
sa_column=sqlmodel.Column(sqlmodel.VARBINARY(500), nullable=False)
|
|
)
|