openbadgeslib 3.4.1__tar.gz → 3.4.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/Changelog.txt +14 -0
  2. {openbadgeslib-3.4.1/openbadgeslib.egg-info → openbadgeslib-3.4.2}/PKG-INFO +7 -5
  3. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/README.md +5 -3
  4. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/util.py +1 -1
  5. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2/openbadgeslib.egg-info}/PKG-INFO +7 -5
  6. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib.egg-info/requires.txt +1 -1
  7. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/pyproject.toml +4 -2
  8. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/LICENSE.txt +0 -0
  9. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/MANIFEST.in +0 -0
  10. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/docs/README.md +0 -0
  11. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/__init__.py +0 -0
  12. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/_jws/__init__.py +0 -0
  13. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/_jws/exceptions.py +0 -0
  14. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/_jws/utils.py +0 -0
  15. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/badge.py +0 -0
  16. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/baking.py +0 -0
  17. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/config.ini.example +0 -0
  18. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/confparser.py +0 -0
  19. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/errors.py +0 -0
  20. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/keys.py +0 -0
  21. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/logs.py +0 -0
  22. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/mail.py +0 -0
  23. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob1/__init__.py +0 -0
  24. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob1/badge.py +0 -0
  25. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob1/signer.py +0 -0
  26. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob1/verifier.py +0 -0
  27. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob2/__init__.py +0 -0
  28. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob2/models.py +0 -0
  29. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob2/signer.py +0 -0
  30. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob2/verifier.py +0 -0
  31. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/__init__.py +0 -0
  32. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/__init__.py +0 -0
  33. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/credentials-v2.json +0 -0
  34. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/ob-v3p0-context-3.0.1.json +0 -0
  35. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/ob-v3p0-context-3.0.2.json +0 -0
  36. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/ob-v3p0-context-3.0.3.json +0 -0
  37. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/security-data-integrity-v2.json +0 -0
  38. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/contexts/security-multikey-v1.json +0 -0
  39. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/credential.py +0 -0
  40. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/did.py +0 -0
  41. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/eudi.py +0 -0
  42. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/ldp.py +0 -0
  43. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/signer.py +0 -0
  44. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/status.py +0 -0
  45. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/status_list.py +0 -0
  46. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/status_registry.py +0 -0
  47. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/ob3/verifier.py +0 -0
  48. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/openbadges_init.py +0 -0
  49. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/openbadges_keygenerator.py +0 -0
  50. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/openbadges_publish.py +0 -0
  51. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/openbadges_signer.py +0 -0
  52. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/openbadges_verifier.py +0 -0
  53. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/py.typed +0 -0
  54. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/signer.py +0 -0
  55. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib/verifier.py +0 -0
  56. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib.egg-info/SOURCES.txt +0 -0
  57. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib.egg-info/dependency_links.txt +0 -0
  58. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib.egg-info/entry_points.txt +0 -0
  59. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/openbadgeslib.egg-info/top_level.txt +0 -0
  60. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/setup.cfg +0 -0
  61. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/config1.ini +0 -0
  62. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/conformance/Dockerfile.ob3 +0 -0
  63. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/conformance/README.md +0 -0
  64. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/conformance/conftest.py +0 -0
  65. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/conformance/docker-compose.yml +0 -0
  66. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/conformance/test_official_validators.py +0 -0
  67. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/conftest.py +0 -0
  68. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/ob_schemas/README.md +0 -0
  69. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/ob_schemas/ob_v3p0_achievementcredential_schema.json +0 -0
  70. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/ob_schemas/ob_v3p0_profile_schema.json +0 -0
  71. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/ob_schemas/refresh.sh +0 -0
  72. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/vc_di_eddsa/README.md +0 -0
  73. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/vc_di_eddsa/credentials-examples-v2.json +0 -0
  74. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/vc_di_eddsa/doc-hash.txt +0 -0
  75. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/vc_di_eddsa/key-pair.json +0 -0
  76. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/vc_di_eddsa/proof-config-hash.txt +0 -0
  77. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/fixtures/vc_di_eddsa/signed-credential.json +0 -0
  78. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/images/sample1.png +0 -0
  79. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/images/sample1.svg +0 -0
  80. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/images/userimage01.svg +0 -0
  81. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/ldp_helpers.py +0 -0
  82. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/logo Python Espan/314/203a.svg" +0 -0
  83. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/logo Python Espa/303/261a.svg" +0 -0
  84. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/runtests.sh +0 -0
  85. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_cli_json.py +0 -0
  86. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_cli_smoke.py +0 -0
  87. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_confparser.py +0 -0
  88. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_docs.py +0 -0
  89. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_eddsa.py +0 -0
  90. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_jws.py +0 -0
  91. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_key_operation.py +0 -0
  92. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob1_badge_io.py +0 -0
  93. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob1_signer.py +0 -0
  94. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob1_verifier.py +0 -0
  95. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob2_cli.py +0 -0
  96. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob2_models.py +0 -0
  97. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob2_signer.py +0 -0
  98. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob2_verifier.py +0 -0
  99. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_conformance_schema.py +0 -0
  100. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_contexts.py +0 -0
  101. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_credential.py +0 -0
  102. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_did.py +0 -0
  103. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_did_doc.py +0 -0
  104. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_eudi_sd_jwt.py +0 -0
  105. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_ldp.py +0 -0
  106. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_ldp_cli.py +0 -0
  107. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_ldp_sign.py +0 -0
  108. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_publish_cli.py +0 -0
  109. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_signer.py +0 -0
  110. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_signer_cli_ldp.py +0 -0
  111. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_status.py +0 -0
  112. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_status_list.py +0 -0
  113. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_status_registry.py +0 -0
  114. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_ob3_verifier.py +0 -0
  115. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_sign_ecc.pem +0 -0
  116. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_sign_rsa.pem +0 -0
  117. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_util.py +0 -0
  118. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_verify_ecc.pem +0 -0
  119. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/test_verify_rsa.pem +0 -0
  120. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/withoutxmlheader.svg +0 -0
  121. {openbadgeslib-3.4.1 → openbadgeslib-3.4.2}/tests/withxmlheader.svg +0 -0
@@ -4,6 +4,20 @@ OpenBadgesLib - Changelog
4
4
  Newest first. Dates are ISO 8601 (YYYY-MM-DD).
5
5
 
6
6
 
7
+ * v3.4.2 - 2026-07-07
8
+
9
+ - build(eudi): the `[eudi]` extra now tracks `openvc-core>=1.8,<2` (was
10
+ `>=0.8,<0.9`). openvc-core reached 1.0 with a published SemVer/deprecation
11
+ contract and an add-only return-object guarantee, so the tight pre-1.0 pin
12
+ is no longer needed — the pin now floors at the tested version and caps at
13
+ the next major. The SD-JWT VC API openbadgeslib consumes
14
+ (`SdJwtVcProofSuite.issue/.verify`, `Ed25519SigningKey`, `P256SigningKey`)
15
+ is unchanged across the jump and the full test suite passes against
16
+ openvc-core 1.8.0. Note the 1.0 breaking changes (schema resolver returns
17
+ bytes, proof-error taxonomy move) touch surfaces openbadgeslib never
18
+ imports.
19
+
20
+
7
21
  * v3.4.1 - 2026-07-06
8
22
 
9
23
  - build: advertise Python 3.14 support — add it to the CI test matrix (lint
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openbadgeslib
3
- Version: 3.4.1
3
+ Version: 3.4.2
4
4
  Summary: Production-ready Python library & CLI for Open Badges 3.0 (W3C Verifiable Credentials): issue, verify, and revoke JWT-VC credentials with Bitstring Status Lists and did:web — plus strict OB 2.0 and legacy OB 1.0.
5
5
  Author-email: Luis González Fernández <luisgf@luisgf.es>, Jesús Cea Avión <jcea@jcea.es>
6
6
  License: LGPLv3
@@ -38,7 +38,7 @@ Requires-Dist: defusedxml>=0.7
38
38
  Provides-Extra: ldp
39
39
  Requires-Dist: pyld>=2.0.4; extra == "ldp"
40
40
  Provides-Extra: eudi
41
- Requires-Dist: openvc-core<0.9,>=0.8; extra == "eudi"
41
+ Requires-Dist: openvc-core<2,>=1.8; extra == "eudi"
42
42
  Provides-Extra: dev
43
43
  Requires-Dist: pytest>=8.0; extra == "dev"
44
44
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
@@ -102,14 +102,16 @@ Open Badges landscape splits into three groups: 1EdTech's **verify-only** OB 2.0
102
102
  reference validator, heavyweight **Django server platforms** (the Badgr lineage),
103
103
  and a thin tail of **standalone libraries** — of which openbadgeslib is the only
104
104
  actively-maintained, pip-installable, offline one that covers all three OB
105
- versions and both OB 3.0 proof formats.
105
+ versions, both native OB 3.0 proof formats (VC-JWT and Data Integrity), and an
106
+ additive EUDI SD-JWT VC wallet track.
106
107
 
107
- | Capability | **openbadgeslib** | [validator-core](https://github.com/1EdTech/openbadges-validator-core) | [Badgr / mint-o-badges](https://github.com/mint-o-badges/badgr-server) (a) | [pyopenbadges](https://github.com/CoopCodeCommun/pyopenbadges) | [didkit](https://github.com/spruceid/didkit-python) (b) |
108
+ | Capability | **openbadgeslib** | [validator-core](https://github.com/1EdTech/openbadges-validator-core) | [Badgr / open-educational-badges](https://github.com/open-educational-badges/badgr-server) (a) | [pyopenbadges](https://github.com/CoopCodeCommun/pyopenbadges) | [didkit](https://github.com/spruceid/didkit-python) (b) |
108
109
  | --- | --- | --- | --- | --- | --- |
109
110
  | Open Badges versions | 1.0, 2.0, **3.0** | 0.5–2.0 | 1.1, 2.0, 3.0 | 3.0 only | generic VC |
110
111
  | Issue / verify | ✅ both | verify only | issue; partial verify | both | both (VC + VP) |
111
112
  | OB 3.0 proof: VC-JWT (JOSE) | ✅ RS/ES/EdDSA | — | — | roadmap | ✅ not OB-aware |
112
113
  | OB 3.0 proof: Data Integrity / LDP | ✅ issue + verify (`eddsa-rdfc-2022`) | — | issue only (Ed25519) | home-grown, non-conformant | older suites; no `rdfc-2022` in wheel |
114
+ | OB 3.0 as EUDI SD-JWT VC (selective disclosure) | ✅ issue + verify (Ed25519/P-256, `[eudi]` extra) | — | — | — | — |
113
115
  | Revocation / suspension | ✅ W3C Bitstring Status List | hosted check | `1EdTechRevocationList` | ad-hoc flag | — |
114
116
  | `did:web` (generate + resolve) | ✅ | — | — | — | resolve only |
115
117
  | Image baking (SVG + PNG) | ✅ | unbake only | ✅ | — | — |
@@ -127,7 +129,7 @@ archived (read-only since July 2025).
127
129
 
128
130
  For authoritative OB 2.0 *validation* semantics, 1EdTech's Python
129
131
  [`openbadges-validator-core`](https://github.com/1EdTech/openbadges-validator-core)
130
- and Node [`openbadges-validator`](https://github.com/1EdTech/openbadges-validator)
132
+ and Node [`openbadges-validator`](https://github.com/mozilla/openbadges-validator)
131
133
  remain the reference; openbadgeslib focuses on the full issuer lifecycle across
132
134
  all three OB versions.
133
135
 
@@ -51,14 +51,16 @@ Open Badges landscape splits into three groups: 1EdTech's **verify-only** OB 2.0
51
51
  reference validator, heavyweight **Django server platforms** (the Badgr lineage),
52
52
  and a thin tail of **standalone libraries** — of which openbadgeslib is the only
53
53
  actively-maintained, pip-installable, offline one that covers all three OB
54
- versions and both OB 3.0 proof formats.
54
+ versions, both native OB 3.0 proof formats (VC-JWT and Data Integrity), and an
55
+ additive EUDI SD-JWT VC wallet track.
55
56
 
56
- | Capability | **openbadgeslib** | [validator-core](https://github.com/1EdTech/openbadges-validator-core) | [Badgr / mint-o-badges](https://github.com/mint-o-badges/badgr-server) (a) | [pyopenbadges](https://github.com/CoopCodeCommun/pyopenbadges) | [didkit](https://github.com/spruceid/didkit-python) (b) |
57
+ | Capability | **openbadgeslib** | [validator-core](https://github.com/1EdTech/openbadges-validator-core) | [Badgr / open-educational-badges](https://github.com/open-educational-badges/badgr-server) (a) | [pyopenbadges](https://github.com/CoopCodeCommun/pyopenbadges) | [didkit](https://github.com/spruceid/didkit-python) (b) |
57
58
  | --- | --- | --- | --- | --- | --- |
58
59
  | Open Badges versions | 1.0, 2.0, **3.0** | 0.5–2.0 | 1.1, 2.0, 3.0 | 3.0 only | generic VC |
59
60
  | Issue / verify | ✅ both | verify only | issue; partial verify | both | both (VC + VP) |
60
61
  | OB 3.0 proof: VC-JWT (JOSE) | ✅ RS/ES/EdDSA | — | — | roadmap | ✅ not OB-aware |
61
62
  | OB 3.0 proof: Data Integrity / LDP | ✅ issue + verify (`eddsa-rdfc-2022`) | — | issue only (Ed25519) | home-grown, non-conformant | older suites; no `rdfc-2022` in wheel |
63
+ | OB 3.0 as EUDI SD-JWT VC (selective disclosure) | ✅ issue + verify (Ed25519/P-256, `[eudi]` extra) | — | — | — | — |
62
64
  | Revocation / suspension | ✅ W3C Bitstring Status List | hosted check | `1EdTechRevocationList` | ad-hoc flag | — |
63
65
  | `did:web` (generate + resolve) | ✅ | — | — | — | resolve only |
64
66
  | Image baking (SVG + PNG) | ✅ | unbake only | ✅ | — | — |
@@ -76,7 +78,7 @@ archived (read-only since July 2025).
76
78
 
77
79
  For authoritative OB 2.0 *validation* semantics, 1EdTech's Python
78
80
  [`openbadges-validator-core`](https://github.com/1EdTech/openbadges-validator-core)
79
- and Node [`openbadges-validator`](https://github.com/1EdTech/openbadges-validator)
81
+ and Node [`openbadges-validator`](https://github.com/mozilla/openbadges-validator)
80
82
  remain the reference; openbadgeslib focuses on the full issuer lifecycle across
81
83
  all three OB versions.
82
84
 
@@ -21,7 +21,7 @@
21
21
  License along with this library.
22
22
  """
23
23
 
24
- __version__ = '3.4.1'
24
+ __version__ = '3.4.2'
25
25
 
26
26
  import hashlib
27
27
  import ipaddress
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openbadgeslib
3
- Version: 3.4.1
3
+ Version: 3.4.2
4
4
  Summary: Production-ready Python library & CLI for Open Badges 3.0 (W3C Verifiable Credentials): issue, verify, and revoke JWT-VC credentials with Bitstring Status Lists and did:web — plus strict OB 2.0 and legacy OB 1.0.
5
5
  Author-email: Luis González Fernández <luisgf@luisgf.es>, Jesús Cea Avión <jcea@jcea.es>
6
6
  License: LGPLv3
@@ -38,7 +38,7 @@ Requires-Dist: defusedxml>=0.7
38
38
  Provides-Extra: ldp
39
39
  Requires-Dist: pyld>=2.0.4; extra == "ldp"
40
40
  Provides-Extra: eudi
41
- Requires-Dist: openvc-core<0.9,>=0.8; extra == "eudi"
41
+ Requires-Dist: openvc-core<2,>=1.8; extra == "eudi"
42
42
  Provides-Extra: dev
43
43
  Requires-Dist: pytest>=8.0; extra == "dev"
44
44
  Requires-Dist: pytest-cov>=5.0; extra == "dev"
@@ -102,14 +102,16 @@ Open Badges landscape splits into three groups: 1EdTech's **verify-only** OB 2.0
102
102
  reference validator, heavyweight **Django server platforms** (the Badgr lineage),
103
103
  and a thin tail of **standalone libraries** — of which openbadgeslib is the only
104
104
  actively-maintained, pip-installable, offline one that covers all three OB
105
- versions and both OB 3.0 proof formats.
105
+ versions, both native OB 3.0 proof formats (VC-JWT and Data Integrity), and an
106
+ additive EUDI SD-JWT VC wallet track.
106
107
 
107
- | Capability | **openbadgeslib** | [validator-core](https://github.com/1EdTech/openbadges-validator-core) | [Badgr / mint-o-badges](https://github.com/mint-o-badges/badgr-server) (a) | [pyopenbadges](https://github.com/CoopCodeCommun/pyopenbadges) | [didkit](https://github.com/spruceid/didkit-python) (b) |
108
+ | Capability | **openbadgeslib** | [validator-core](https://github.com/1EdTech/openbadges-validator-core) | [Badgr / open-educational-badges](https://github.com/open-educational-badges/badgr-server) (a) | [pyopenbadges](https://github.com/CoopCodeCommun/pyopenbadges) | [didkit](https://github.com/spruceid/didkit-python) (b) |
108
109
  | --- | --- | --- | --- | --- | --- |
109
110
  | Open Badges versions | 1.0, 2.0, **3.0** | 0.5–2.0 | 1.1, 2.0, 3.0 | 3.0 only | generic VC |
110
111
  | Issue / verify | ✅ both | verify only | issue; partial verify | both | both (VC + VP) |
111
112
  | OB 3.0 proof: VC-JWT (JOSE) | ✅ RS/ES/EdDSA | — | — | roadmap | ✅ not OB-aware |
112
113
  | OB 3.0 proof: Data Integrity / LDP | ✅ issue + verify (`eddsa-rdfc-2022`) | — | issue only (Ed25519) | home-grown, non-conformant | older suites; no `rdfc-2022` in wheel |
114
+ | OB 3.0 as EUDI SD-JWT VC (selective disclosure) | ✅ issue + verify (Ed25519/P-256, `[eudi]` extra) | — | — | — | — |
113
115
  | Revocation / suspension | ✅ W3C Bitstring Status List | hosted check | `1EdTechRevocationList` | ad-hoc flag | — |
114
116
  | `did:web` (generate + resolve) | ✅ | — | — | — | resolve only |
115
117
  | Image baking (SVG + PNG) | ✅ | unbake only | ✅ | — | — |
@@ -127,7 +129,7 @@ archived (read-only since July 2025).
127
129
 
128
130
  For authoritative OB 2.0 *validation* semantics, 1EdTech's Python
129
131
  [`openbadges-validator-core`](https://github.com/1EdTech/openbadges-validator-core)
130
- and Node [`openbadges-validator`](https://github.com/1EdTech/openbadges-validator)
132
+ and Node [`openbadges-validator`](https://github.com/mozilla/openbadges-validator)
131
133
  remain the reference; openbadgeslib focuses on the full issuer lifecycle across
132
134
  all three OB versions.
133
135
 
@@ -15,7 +15,7 @@ gitlint>=0.19
15
15
  jsonschema[format-nongpl]>=4.20
16
16
 
17
17
  [eudi]
18
- openvc-core<0.9,>=0.8
18
+ openvc-core<2,>=1.8
19
19
 
20
20
  [ldp]
21
21
  pyld>=2.0.4
@@ -53,10 +53,12 @@ ldp = [
53
53
  "pyld>=2.0.4",
54
54
  ]
55
55
  # EUDI track: issue/verify badges as SD-JWT VC (the EU wallet / ARF format) via
56
- # the generic openvc-core library. Pinned tight because openvc-core is pre-1.0.
56
+ # the generic openvc-core library. openvc-core is stable (1.x) with a published
57
+ # SemVer/deprecation contract, so the pin follows SemVer: floor at the version
58
+ # the suite is tested against, ceiling at the next major.
57
59
  # See openbadgeslib/ob3/eudi.py.
58
60
  eudi = [
59
- "openvc-core>=0.8,<0.9",
61
+ "openvc-core>=1.8,<2",
60
62
  ]
61
63
  dev = [
62
64
  "pytest>=8.0",
File without changes
File without changes
File without changes