|
8 | 8 | from joserfc.jwa import JWE_ENC_MODELS |
9 | 9 | from joserfc.jwk import RSAKey, ECKey, OctKey, OKPKey, KeySet |
10 | 10 | from joserfc.errors import ( |
| 11 | + SecurityWarning, |
11 | 12 | InvalidKeyLengthError, |
12 | 13 | MissingAlgorithmError, |
13 | 14 | MissingEncryptionError, |
@@ -180,6 +181,50 @@ def test_PBES2HS_with_header(self): |
180 | 181 | registry=registry, |
181 | 182 | ) |
182 | 183 |
|
| 184 | + def test_PBES2HS_with_small_p2c(self): |
| 185 | + key = OctKey.generate_key(128) |
| 186 | + protected = { |
| 187 | + "alg": "PBES2-HS256+A128KW", |
| 188 | + "enc": "A128CBC-HS256", |
| 189 | + "p2s": "QoGrcBpns_cLWCQPEVuA-g", |
| 190 | + "p2c": 500, |
| 191 | + } |
| 192 | + registry = JWERegistry(algorithms=["PBES2-HS256+A128KW", "A128CBC-HS256"]) |
| 193 | + self.assertWarns( |
| 194 | + SecurityWarning, |
| 195 | + encrypt_compact, |
| 196 | + protected, |
| 197 | + b"i", |
| 198 | + key, |
| 199 | + registry=registry, |
| 200 | + ) |
| 201 | + |
| 202 | + def test_PBES2HS_with_large_p2c(self): |
| 203 | + key = OctKey.import_key({"k": "pyL42ncDFSYnenl-GiZjRw", "kty": "oct"}) |
| 204 | + protected = { |
| 205 | + "alg": "PBES2-HS256+A128KW", |
| 206 | + "enc": "A128CBC-HS256", |
| 207 | + "p2s": "QoGrcBpns_cLWCQPEVuA-g", |
| 208 | + "p2c": 500000, |
| 209 | + } |
| 210 | + registry = JWERegistry(algorithms=["PBES2-HS256+A128KW", "A128CBC-HS256"]) |
| 211 | + self.assertRaises( |
| 212 | + InvalidHeaderValueError, |
| 213 | + encrypt_compact, |
| 214 | + protected, |
| 215 | + b"i", |
| 216 | + key, |
| 217 | + registry=registry, |
| 218 | + ) |
| 219 | + encrypted = "eyJhbGciOiJQQkVTMi1IUzI1NitBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwicDJzIjoiUW9HcmNCcG5zX2NMV0NRUEVWdUEtZyIsInAyYyI6NTAwMDAwfQ.qdtshVQlPM-fW57DRVUnmwMyvBVzUZCm58zn7j5W7IP9S2-cBVTh_w.mMUagTUTRi7fLQ3VUi6g4w.Hi0-8_MusxEwRtW6dkjXzw.Ktm1FmBA9rPe0Vv8w0kZ2g" |
| 220 | + self.assertRaises( |
| 221 | + InvalidHeaderValueError, |
| 222 | + decrypt_compact, |
| 223 | + encrypted, |
| 224 | + key, |
| 225 | + registry=registry, |
| 226 | + ) |
| 227 | + |
183 | 228 | def test_with_zip_header(self): |
184 | 229 | private_key: RSAKey = load_key("rsa-openssl-private.pem") |
185 | 230 | public_key: RSAKey = load_key("rsa-openssl-public.pem") |
|
0 commit comments