Skip to content

Commit a96ebb0

Browse files
committed
add: detach and attach test to COSEMessage
1 parent 9c81cf4 commit a96ebb0

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

tests/test_cose_message.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,3 +460,49 @@ def test_cose_message_counterverify_with_different_abbreviated_countersignature(
460460
COSEMessage.loads(countersigned).counterverify(pub_key)
461461
pytest.fail("counterverify() should not fail.")
462462
assert "Failed to verify." in str(err.value)
463+
464+
def test_cose_message_detach_and_attach(self):
465+
"""
466+
Detach the payload from a COSE message.
467+
For example, [an example message](https://github.com/cose-wg/Examples/blob/master/ecdsa-examples/ecdsa-sig-01.json)
468+
```
469+
18([
470+
/ protected: / h'A201260300',
471+
/ unprotected: / {4: h'3131'},
472+
/ payload: / h'546869732069732074686520636F6E74656E742E',
473+
/ signature: / h'6520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B'
474+
])
475+
```
476+
would be separated into
477+
```
478+
18([
479+
/ protected: / h'A201260300',
480+
/ unprotected: / {4: h'3131'},
481+
/ payload: / null / detached /,
482+
/ signature: / h'6520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B'
483+
])
484+
```
485+
and
486+
```
487+
546869732069732074686520636F6E74656E742E
488+
```
489+
490+
"""
491+
ecdsa_cose_sign1_example = COSEMessage.loads(
492+
bytes.fromhex(
493+
"D28445A201260300A10442313154546869732069732074686520636F6E74656E742E58406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B"
494+
)
495+
)
496+
expected_detached_cose_message = COSEMessage.loads(
497+
bytes.fromhex(
498+
"D28445A201260300A104423131F658406520BBAF2081D7E0ED0F95F76EB0733D667005F7467CEC4B87B9381A6BA1EDE8E00DF29F32A37230F39A842A54821FDD223092819D7728EFB9D3A0080B75380B"
499+
)
500+
)
501+
expected_payload = bytes.fromhex("546869732069732074686520636F6E74656E742E")
502+
503+
detached_content_cose_message, detached_payload = ecdsa_cose_sign1_example.to_detached()
504+
assert expected_detached_cose_message == detached_content_cose_message
505+
assert expected_payload == detached_payload
506+
507+
reverted_cose_message = detached_content_cose_message.from_detached(detached_payload)
508+
assert ecdsa_cose_sign1_example == reverted_cose_message

0 commit comments

Comments
 (0)