Source code for pyeudiw.sd_jwt.disclosure

import logging
from dataclasses import dataclass
from json import dumps
from typing import Optional

logger = logging.getLogger(__name__)


[docs] @dataclass class SDJWTDisclosure: """This class represents a disclosure of a claim.""" issuer: any key: Optional[str] # only for object keys value: any def __post_init__(self): self._hash() def _hash(self) -> None: """ Hash the claim. This method hashes the claim using the issuer's hashing algorithm. The hashed claim is stored in the `hash` attribute. :return: None """ salt = self.issuer._generate_salt() if self.key is None: data = [salt, self.value] else: data = [salt, self.key, self.value] self._json = dumps(data).encode("utf-8") self._raw_b64 = self.issuer._base64url_encode(self._json) self._hash = self.issuer._b64hash(self._raw_b64.encode("ascii")) @property def hash(self): return self._hash @property def b64(self): return self._raw_b64 @property def json(self): return self._json.decode("utf-8")