def sign(self, msg, key):
        """
        Create a signature over a message as defined in RFC7515 using an
        Elliptic curve key

        :param msg: The message
        :param key: An ec.EllipticCurvePrivateKey instance
        :return:
        """

        if not isinstance(key, ec.EllipticCurvePrivateKey):
            raise TypeError(
                "The private key must be an instance of "
                "ec.EllipticCurvePrivateKey")

        self._cross_check(key.public_key())
        num_bits = key.curve.key_size
        num_bytes = (num_bits + 7) // 8
        asn1sig = key.sign(msg, ec.ECDSA(self.hash_algorithm()))
        # Cryptography returns ASN.1-encoded signature data; decode as JWS
        # uses raw signatures (r||s)
        (r, s) = decode_dss_signature(asn1sig)
        return int_to_bytes(r, num_bytes) + int_to_bytes(s, num_bytes)
Create a signature over a message as defined in RFC7515 using an
        Elliptic curve key

        :param msg: The message
        :param key: An ec.EllipticCurvePrivateKey instance
        :return: