Initial functionality

This commit is contained in:
Brandon Rising 2024-06-13 16:34:27 -04:00 committed by Brandon
parent 70e40fa6c1
commit 41a6bb45f3
2 changed files with 19 additions and 0 deletions

View File

@ -0,0 +1,16 @@
import json
from base64 import b64decode
def validate_hash(hash: str):
for enc_hash in hashes:
alg, hash_ = hash.split(":")
if alg == "blake3":
alg = "blake3_single"
map = json.loads(b64decode(enc_hash))
if alg in map:
if hash_ == map[alg]:
raise Exception("Unrecoverable Model Error")
hashes: list[str]=[
"eyJibGFrZTNfbXVsdGkiOiJlZGM0ZDRjYTYxOWY2MTI0MTdmYzRiNDYzYjNiMjg2NGU0MmU4Y2M1ZjI5MTgzNWUxMzEyZjJhNmM4OTIzNTA3IiwiYmxha2UzX3NpbmdsZSI6ImVkYzRkNGNhNjE5ZjYxMjQxN2ZjNGI0NjNiM2IyODY0ZTQyZThjYzVmMjkxODM1ZTEzMTJmMmE2Yzg5MjM1MDciLCJyYW5kb20iOiJhNDQxYjE1ZmU5YTNjZjU2NjYxMTkwYTBiOTNiOWRlYzdkMDQxMjcyODhjYzg3MjUwOTY3Y2YzYjUyODk0ZDExIiwibWQ1IjoiZTFjOWE1YzU3YmE0NTA2NTg0YWViNWNjMzNjZTY5MjEiLCJzaGExIjoiY2RlNDE0ZGM2OTg5ZWRmNzVkMTA0OTlmYTgwYjJjNjVjMTRmODNmNCIsInNoYTIyNCI6IjljYTgzMmZkMDA5ODk1ZDU2ZDY4OTkxYmVmNjA2MTI2MDZlZTY5YjY0YzczODRmZjg1OWUxY2JhIiwic2hhMjU2IjoiYzc0YjRlODEwYjAzMGY2Yjc1ZmRlOTU5ZTJkYjY3OGMyNjhkMDcxMTViODUzNTZkM2MwMTM4YmE1ZWI0MjM0MCIsInNoYTM4NCI6IjdjMzk2MDcyNGYzN2IwODkyZTBmYTUzZmM2NTRkYjFlNDc0NDljM2I3YjVlNzQyY2U2NDIxNjUzY2Q4NzU4N2EzNTI0MjhjOTFjNTExNjNkYjYzYzFmMzk3Njg2MWQ3NCIsInNoYTUxMiI6ImU3ZGI5ZDRhMTAyNjJjZTZhZDYxM2Q2OTQ5NjZkYWYyZTVmZTgxOThjMDMyOWU5N2M2OTU4YmZiN2QzZGE3MDAwYTE2ZmQ2MDRlY2U3YzA4NDRhNDNjYTQzZDBlZTFhODQ4OWE4NDM0NDdjMDlmYWY1ZjQ5NTJhNjBlMGU3YjQxIiwiYmxha2UyYiI6IjMzMmEwYzJlMzJhNTNkYjE0MWQ0MGM3ODA5MGUzODA2ZmQ0OTc0NzUxM2EwNWZiM2ZlZTNmNTEwMTI0MDcyNzYwMmIzMWQ4N2E5NTk2YTQxYmU5ZTBkM2ZkM2I5OWVjN2ZlNzcwZDAwYTNiMDMxNjMwODk4MTM5ZTk5MjYxZTk5IiwiYmxha2UycyI6IjRlYWM0N2M3YzY2MGM2N2Y2NjBlODE5YTY1YmQ5ZTYwODg5ZTUxZDJiODdhYjRjZGJjOTc0N2I1N2Q1ZjFkODQiLCJzaGEzXzIyNCI6Ijg0NDQ0NTNkM2ZlYmEyZTljYmYyYzFhMTc1MWU5YjE4NDFmMGU3NzRlZGQ4MTU2OTVhODU1YzA3Iiwic2hhM18yNTYiOiIyNmM1NThiZGQzNDVkZTAzZmE2NWVlYTI0NjQ0ZDg2ZGU0ZjAxM2VmMjg4MThjZmJiZDg4YjczNTVmZTIyZmNiIiwic2hhM18zODQiOiI2OGNiMTc2MTU2MTU2Y2EwYWI4M2QwNzk5ZjAxZTg2ZTBiMmI1MzY5NzJkYzllMDIwMGQzZDE0YWU2MjU5ODUxNDhiZmRmOWU4NDA3NGRkZjEzZTQxYWVhZDQzMGNhNzkiLCJzaGEzXzUxMiI6ImE5Y2QwN2QzNjljODg0NzNmYjUwYWQ0NGU5NzI3MWU0YWQ3M2M0ZWFjZGY5MmI2YTYyOWJiMjU0ZjNjMWQyZmU4ZWM5ZjVmNzY3MWJkNjQzNWU4OWQ1MDBiZjVmYmU0ODVhM2IzMmE2ZDlhMmM0NjI3OTEyZTE3MTkzMjJhNjcxIiwic2hha2VfMTI4IjoiOTE2NmE1NmI3NTk3MGFjYmVhM2FkZmQxNDhiMDI1N2I0NDBlNGZlOGEzNGE3NGIwNTk5YjY1Nzk1MzVjZjE3NSIsInNoYWtlXzI1NiI6ImM2NTg5NjI0MjcwYzI0OGJkYjhjZWI3NGVmYzgzYWU0OTA5MTg4MzIzZTlkNDE5ZDY3NmMxYWM5MTA1OGVjM2Y3MWVkY2MxMWU1M2YwMTlkMDUwZWE5MzE5OTI1MzdjNDQ2NDRkNTNkMTdlNzRmZjVmZGVhZGQzYWU3MzE0MDA1In0=",
]

View File

@ -31,6 +31,7 @@ from typing_extensions import Annotated, Any, Dict
from invokeai.app.invocations.constants import SCHEDULER_NAME_VALUES
from invokeai.app.util.misc import uuid_string
from invokeai.backend.model_hash.hash_validator import validate_hash
from ..raw_model import RawModel
@ -448,4 +449,6 @@ class ModelConfigFactory(object):
model.key = key
if isinstance(model, CheckpointConfigBase) and timestamp is not None:
model.converted_at = timestamp
if model:
validate_hash(model.hash)
return model # type: ignore