{"id":26857,"library":"cose","title":"COSE (CBOR Object Signing and Encryption)","description":"A pure Python implementation of CBOR Object Signing and Encryption (COSE) as defined in RFC 8152. Current version 0.9.dev8, pre-release with ongoing development. Cadence: irregular, pre-release.","status":"active","version":"0.9.dev8","language":"python","source_language":"en","source_url":"https://github.com/WeFindX/cose-python","tags":["cose","cbor","signing","encryption","rfc8152"],"install":[{"cmd":"pip install cose","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Correct import path.","symbol":"CoseMessage","correct":"from cose.messages import CoseMessage"},{"note":"Correct import path.","symbol":"CoseKey","correct":"from cose.keys import CoseKey"},{"note":"Common mistake: top-level import fails because EncryptMessage is in the messages submodule.","wrong":"from cose import EncryptMessage","symbol":"EncryptMessage","correct":"from cose.messages import EncryptMessage"}],"quickstart":{"code":"from cose.keys import CoseKey\nfrom cose.keys.keyparam import KpKty, KpAlg, KpKeyOps\nfrom cose.keys.keytype import KtyEC2\nfrom cose.keys.keyops import SignOp, VerifyOp, EncryptOp, DecryptOp\nfrom cose.algorithms import Es256\nfrom cose.messages import EncryptMessage, SignMessage\nfrom cose.headers import Algorithm, ContentType\n\n# Create an EC2 key for signing\nimport os\nprivate_key_bytes = os.urandom(32)  # dummy for demo\nkey = CoseKey.from_dict({\n    'kty': KtyEC2,\n    'crv': 'P-256',\n    'x': os.urandom(32),\n    'y': os.urandom(32),\n    'd': private_key_bytes,\n    'alg': Es256,\n})\nprint(f\"Created key: {key}\")","lang":"python","description":"Create a simple EC2 key. For real use, provide proper key material."},"warnings":[{"fix":"Pin to a specific version and test compatibility.","message":"The library is in pre-release (0.9.dev8). APIs may change without notice.","severity":"gotcha","affected_versions":"*"},{"fix":"Use full paths, e.g., from cose.messages import EncryptMessage.","message":"Imports are deep: submodules like messages, keys, algorithms, headers are not exported at top level.","severity":"gotcha","affected_versions":"*"},{"fix":"Refer to the official RFC 8152 and library examples for correct parameter values.","message":"Many COSE objects require manual construction of key parameters and headers; no high-level helper for common patterns.","severity":"gotcha","affected_versions":"*"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use: from cose.messages import EncryptMessage","cause":"Trying to import from top-level package instead of submodule.","error":"ImportError: cannot import name 'EncryptMessage' from 'cose'"},{"fix":"Use: from cose.keys import CoseKey","cause":"CoseKey is in cose.keys, not in top-level cose.","error":"AttributeError: module 'cose' has no attribute 'CoseKey'"},{"fix":"Use library types like KtyEC2 instead of strings: key = CoseKey.from_dict({'kty': KtyEC2, ...})","cause":"Passing a dict with string keys instead of using the library's enum types.","error":"KeyError: 'kty'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}