Bases: CipherSuiteBase
COSE algorithm registry surface.
suite_id
Source code in swarmauri_cipher_suite_cose/CoseCipherSuite.py
| def suite_id(self) -> str:
return "cose"
|
supports
Source code in swarmauri_cipher_suite_cose/CoseCipherSuite.py
| def supports(self) -> Mapping[CipherOp, Iterable[Alg]]:
return {
"sign": tuple(str(value) for value in _COSE_SIGN),
"verify": tuple(str(value) for value in _COSE_SIGN),
"encrypt": tuple(str(value) for value in _COSE_AEAD),
"decrypt": tuple(str(value) for value in _COSE_AEAD),
}
|
default_alg
default_alg(op, *, for_key=None)
Source code in swarmauri_cipher_suite_cose/CoseCipherSuite.py
| def default_alg(self, op: CipherOp, *, for_key: Optional[KeyRef] = None) -> Alg:
return {"sign": "-8", "encrypt": "3"}.get(op, "3")
|
features
Source code in swarmauri_cipher_suite_cose/CoseCipherSuite.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | def features(self) -> Features:
return {
"suite": "cose",
"version": 1,
"dialects": {
"cose": list({*self.supports()["sign"], *self.supports()["encrypt"]})
},
"ops": {
"sign": {"default": "-8", "allowed": list(self.supports()["sign"])},
"encrypt": {
"default": "3",
"allowed": list(self.supports()["encrypt"]),
},
},
"constraints": {"aead": {"tagBits": 128, "nonceLen": 12}},
"compliance": {"fips": False},
}
|
normalize
normalize(
*, op, alg=None, key=None, params=None, dialect=None
)
Source code in swarmauri_cipher_suite_cose/CoseCipherSuite.py
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 | def normalize(
self,
*,
op: CipherOp,
alg: Optional[Alg] = None,
key: Optional[KeyRef] = None,
params: Optional[ParamMapping] = None,
dialect: Optional[str] = None,
) -> NormalizedDescriptor:
allowed = set(self.supports().get(op, ()))
chosen = str(alg or self.default_alg(op, for_key=key))
if chosen not in allowed:
raise ValueError(f"{chosen=} not supported for {op=}")
resolved = dict(params or {})
if chosen in {"1", "2", "3"}:
resolved.setdefault("tagBits", 128)
resolved.setdefault("nonceLen", 12)
mapped = {
"cose": int(chosen),
"provider": chosen,
}
return {
"op": op,
"alg": chosen,
"dialect": "cose" if dialect is None else dialect,
"mapped": mapped,
"params": resolved,
"constraints": {},
"policy": self.policy(),
}
|