def _ecdsa_sign_recoverable(msg32, seckey):
    """
        Takes a message of 32 bytes and a private key
        Returns a recoverable signature of length 64
    """
    assert isinstance(msg32, bytes)
    assert isinstance(seckey, bytes)
    assert len(msg32) == len(seckey) == 32
    if not _verify_seckey(seckey):
        raise InvalidPrivateKeyError()

    # Make a recoverable signature of 65 bytes
    sig64 = ffi.new("secp256k1_ecdsa_recoverable_signature *")

    lib.secp256k1_ecdsa_sign_recoverable(
        ctx,
        sig64,
        msg32,
        seckey,
        ffi.addressof(lib, "secp256k1_nonce_function_default"),
        ndata,
    )
    return sig64
Takes a message of 32 bytes and a private key
        Returns a recoverable signature of length 64