Skip to content

Commit b528c49

Browse files
committed
feat: iat disclosable
1 parent 9181a0a commit b528c49

File tree

8 files changed

+39
-11
lines changed

8 files changed

+39
-11
lines changed

examples/complex_eidas/specification.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
user_claims:
2+
!sd iat: 11
23
verified_claims:
34
verification:
45
trust_framework: eidas
@@ -33,5 +34,5 @@ holder_disclosed_claims:
3334
{
3435
"verification": { "evidence": [] },
3536
"claims": { "gender": null, "place_of_birth": { "country": null } },
36-
},
37+
}
3738
}

examples/settings.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,4 @@ expiry_seconds: 86400000 # 1000 days
2828
random_seed: 0
2929

3030
iat: 1683000000 # Tue May 02 2023 04:00:00 GMT+0000
31-
exp: 1883000000 # Sat Sep 01 2029 23:33:20 GMT+0000
31+
exp: 1883000000 # Sat Sep 01 2029 23:33:20 GMT+0000

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "sd-jwt"
3-
version = "0.10.4"
3+
version = "0.11.0"
44
description = "The reference implementation of the IETF SD-JWT specification."
55
authors = ["Daniel Fett <[email protected]>"]
66
readme = "README.md"

src/sd_jwt/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.10.4"
1+
__version__ = "0.11.0"

src/sd_jwt/bin/demo.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -307,4 +307,4 @@ def cb_get_issuer_key(issuer):
307307
sys.exit(0)
308308

309309
if __name__ == "__main__":
310-
run()
310+
run()

src/sd_jwt/bin/generate.py

+27-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77

88

99
import argparse
10+
import datetime
1011
import logging
1112
import sys
13+
1214
from typing import Dict
1315
from pathlib import Path
1416

@@ -29,6 +31,19 @@
2931
# Set logging to stdout
3032
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
3133

34+
def get_value_from_disclosables(attr_name, testcase):
35+
_res = None
36+
try:
37+
_res = testcase['user_claims'][
38+
[
39+
k for k,v in testcase['user_claims'].items()
40+
if hasattr(k, "value") and k.value == attr_name
41+
][0]
42+
]
43+
except IndexError:
44+
pass
45+
46+
return _res
3247

3348
def generate_test_case_data(settings: Dict, testcase_path: Path, type: str):
3449
seed = settings["random_seed"]
@@ -42,12 +57,22 @@ def generate_test_case_data(settings: Dict, testcase_path: Path, type: str):
4257
extra_header_parameters = testcase.get("extra_header_parameters", {})
4358

4459
claims = {}
60+
61+
_iat = get_value_from_disclosables("iat", testcase)
62+
63+
iat = _iat or settings.get("iat", int(datetime.datetime.utcnow().timestamp()))
64+
exp = iat + (settings.get("exp_delta_minutes", 60) * 60)
65+
4566
if include_default_claims:
4667
claims = {
4768
"iss": settings["identifiers"]["issuer"],
48-
"iat": settings["iat"],
49-
"exp": settings["exp"],
69+
"exp": settings.get("exp", exp)
5070
}
71+
else:
72+
claims = dict()
73+
74+
if not _iat:
75+
claims['iat'] = iat
5176

5277
claims.update(testcase["user_claims"])
5378

src/sd_jwt/verifier.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ def _verify_key_binding_jwt(
112112
# Reassemble the SD-JWT in compact format and check digest
113113
if self._serialization_format == "compact":
114114
string_to_hash = self._combine(
115-
self._unverified_input_sd_jwt,
116-
*self._input_disclosures,
117-
""
115+
self._unverified_input_sd_jwt,
116+
*self._input_disclosures,
117+
""
118118
)
119119
expected_sd_jwt_presentation_hash = self._b64hash(string_to_hash.encode("ascii"))
120120

tests/testcases/settings.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,7 @@ expiry_seconds: 86400000 # 1000 days
2727

2828
random_seed: 0
2929

30+
exp_delta_seconds: 60
31+
3032
iat: 1683000000 # Tue May 02 2023 04:00:00 GMT+0000
31-
exp: 1883000000 # Sat Sep 01 2029 23:33:20 GMT+0000
33+
exp: 1883000000 # Sat Sep 01 2029 23:33:20 GMT+0000

0 commit comments

Comments
 (0)