Exemplo n.º 1
0
def sign_eat(token, key=None):
    signed_msg = Sign1Message()
    signed_msg.payload = token
    if key:
        signed_msg.key = key
        signed_msg.signature = signed_msg.compute_signature()
    return signed_msg.encode()
Exemplo n.º 2
0
 def test_header_encoding(self):
     for name_test, (a, b, c, d) in self.header_params.items():
         with self.subTest(name=name_test):
             sign1_msg = Sign1Message()
             sign1_msg.add_to_headers(a, b, c)
             if c == 'PROTECTED':
                 self.assertEqual(sign1_msg.encoded_protected_header, d, name_test)
             if c == 'UNPROTECTED':
                 self.assertEqual(sign1_msg.unprotected_header, d, name_test)
Exemplo n.º 3
0
def get_cose_payload(cose, key=None):
    msg = Sign1Message.decode(cose)
    if key:
        msg.key = key
        msg.signature = msg.signers
        try:
            msg.verify_signature(alg='ES256')
        except Exception as e:
            raise ValueError('Bad signature ({})'.format(e))
    return msg.payload
Exemplo n.º 4
0
def get_cose_payload(cose, sk=None):
    msg = Sign1Message.decode(cose)
    if sk:
        msg.key = sk
        msg.signature = msg.signers
        try:
            msg.verify_signature(alg='ES256')
        except Exception:
            raise ValueError('Bad signature')
    return msg.payload
Exemplo n.º 5
0
 def test_cose_sign1_creation(self):
     for name_test, (a, b, x, c, d, e) in self.test_cose_sign11_map.items():
         with self.subTest(name=name_test):
             sign1_msg = Sign1Message()
             for k1 in a:
                 sign1_msg.add_to_headers(k1, a[k1], 'PROTECTED')
             for k2 in b:
                 sign1_msg.add_to_headers(k2, b[k2], 'UNPROTECTED')
             sign1_msg.external_aad = x
             sign1_msg.payload = c
             sign1_msg.key = d
             alg = sign1_msg.find_in_headers('alg')
             sign1_msg.signature = sign1_msg.compute_signature(alg)
             self.assertEqual(sign1_msg.encode(), e)
Exemplo n.º 6
0
def test_sign1_encoding(setup_sign1_tests: tuple) -> None:
    _, test_input, test_output, test_intermediate, fail = setup_sign1_tests

    sign1 = Sign1Message(phdr=test_input['sign0'].get('protected', {}),
                         uhdr=test_input['sign0'].get('unprotected', {}),
                         payload=test_input.get('plaintext',
                                                '').encode('utf-8'),
                         external_aad=unhexlify(test_input['sign0'].get(
                             "external", b'')))

    assert sign1._sig_structure == unhexlify(test_intermediate["ToBeSign_hex"])
    private_key = create_cose_key(EC2,
                                  test_input['sign0']['key'],
                                  usage=KeyOps.SIGN,
                                  alg=extract_alg(test_input["sign0"]))

    if fail:
        assert sign1.encode(private_key) != unhexlify(test_output)
    else:
        assert sign1.encode(private_key) == unhexlify(test_output)
Exemplo n.º 7
0
 def test_header_find(self):
     for name_test, (a, b, c, d) in self.header_find_params.items():
         with self.subTest(name=name_test):
             sign1_msg = Sign1Message()
             sign1_msg.add_to_headers(a, b, c)
             self.assertEqual(sign1_msg.find_in_headers(a), d, name_test)