Move Go reference implementation to refimpl/go-lang/ and add new Python reference implementation in refimpl/python/. Update build.sh with renamed draft and simplified tool paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""Production config from environment."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from dataclasses import dataclass
|
|
|
|
ENV_IAT_MAX_AGE_MINUTES = "ECT_IAT_MAX_AGE_MINUTES"
|
|
ENV_IAT_MAX_FUTURE_SEC = "ECT_IAT_MAX_FUTURE_SEC"
|
|
ENV_DEFAULT_EXPIRY_MIN = "ECT_DEFAULT_EXPIRY_MIN"
|
|
ENV_JTI_REPLAY_CACHE_SIZE = "ECT_JTI_REPLAY_CACHE_SIZE"
|
|
ENV_JTI_REPLAY_TTL_MIN = "ECT_JTI_REPLAY_TTL_MIN"
|
|
|
|
|
|
@dataclass
|
|
class Config:
|
|
iat_max_age_sec: int = 900
|
|
iat_max_future_sec: int = 30
|
|
default_expiry_sec: int = 600
|
|
jti_replay_size: int = 0
|
|
jti_replay_ttl_sec: int = 3600
|
|
|
|
def create_options(self, key_id: str) -> "CreateOptions":
|
|
from ect.create import CreateOptions
|
|
return CreateOptions(
|
|
key_id=key_id,
|
|
default_expiry_sec=self.default_expiry_sec,
|
|
)
|
|
|
|
def verify_options(self) -> "VerifyOptions":
|
|
from ect.verify import VerifyOptions
|
|
from ect.dag import default_dag_config
|
|
return VerifyOptions(
|
|
iat_max_age_sec=self.iat_max_age_sec,
|
|
iat_max_future_sec=self.iat_max_future_sec,
|
|
dag=default_dag_config(),
|
|
)
|
|
|
|
|
|
def default_config() -> Config:
|
|
return Config()
|
|
|
|
|
|
def _int_env(name: str, default: int) -> int:
|
|
v = os.environ.get(name)
|
|
if v is None or v == "":
|
|
return default
|
|
try:
|
|
return int(v)
|
|
except ValueError:
|
|
return default
|
|
|
|
|
|
def load_config_from_env() -> Config:
|
|
c = default_config()
|
|
c.iat_max_age_sec = _int_env(ENV_IAT_MAX_AGE_MINUTES, 15) * 60
|
|
c.iat_max_future_sec = _int_env(ENV_IAT_MAX_FUTURE_SEC, 30)
|
|
c.default_expiry_sec = _int_env(ENV_DEFAULT_EXPIRY_MIN, 10) * 60
|
|
c.jti_replay_size = _int_env(ENV_JTI_REPLAY_CACHE_SIZE, 0)
|
|
c.jti_replay_ttl_sec = _int_env(ENV_JTI_REPLAY_TTL_MIN, 60) * 60
|
|
return c
|