prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  Cryptography Package has a Security Vulnerability
  Discovered using pipenv's security check feature that there's a vulnerability in the cryptography package versions<2.3.
      
  > Checking installed package safety...
  36351: cryptography >=1.9.0,<2.3 resolved (2.2.2 installed)!
  python-cryptography versions >=1.9.0 and <2.3 did not enforce a minimum tag length for finalize_with_tag API. If a user did not validate the input length prior to passing it to finalize_with_tag an attacker could craft an invalid payload with a shortened tag (e.g. 1 byte) such that they would have a 1 in 256 chance of passing the MAC check. GCM tag forgeries can cause key leakage.
      
  More details here: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10903
  
  setup.py should be updated to require cryptography>=2.3.0.
  
  
  </issue>
  <code>
  [start of setup.py]
  1 #!/usr/bin/env python
  2 from __future__ import unicode_literals
  3 import setuptools
  4 from setuptools import setup, find_packages
  5 import sys
  6 
  7 
  8 install_requires = [
  9     "Jinja2>=2.7.3",
  10     "boto>=2.36.0",
  11     "boto3>=1.6.16,<1.8",
  12     "botocore>=1.9.16,<1.11",
  13     "cryptography>=2.0.0",
  14     "requests>=2.5",
  15     "xmltodict",
  16     "six>1.9",
  17     "werkzeug",
  18     "pyaml",
  19     "pytz",
  20     "python-dateutil<3.0.0,>=2.1",
  21     "python-jose<3.0.0",
  22     "mock",
  23     "docker>=2.5.1",
  24     "jsondiff==1.1.1",
  25     "aws-xray-sdk<0.96,>=0.93",
  26     "responses>=0.9.0",
  27 ]
  28 
  29 extras_require = {
  30     'server': ['flask'],
  31 }
  32 
  33 # https://hynek.me/articles/conditional-python-dependencies/
  34 if int(setuptools.__version__.split(".", 1)[0]) < 18:
  35     if sys.version_info[0:2] < (3, 3):
  36         install_requires.append("backports.tempfile")
  37 else:
  38     extras_require[":python_version<'3.3'"] = ["backports.tempfile"]
  39 
  40 
  41 setup(
  42     name='moto',
  43     version='1.3.6',
  44     description='A library that allows your python tests to easily'
  45                 ' mock out the boto library',
  46     author='Steve Pulec',
  47     author_email='spulec@gmail.com',
  48     url='https://github.com/spulec/moto',
  49     entry_points={
  50         'console_scripts': [
  51             'moto_server = moto.server:main',
  52         ],
  53     },
  54     packages=find_packages(exclude=("tests", "tests.*")),
  55     install_requires=install_requires,
  56     extras_require=extras_require,
  57     include_package_data=True,
  58     license="Apache",
  59     test_suite="tests",
  60     classifiers=[
  61         "Programming Language :: Python :: 2",
  62         "Programming Language :: Python :: 2.7",
  63         "Programming Language :: Python :: 3",
  64         "Programming Language :: Python :: 3.3",
  65         "Programming Language :: Python :: 3.4",
  66         "Programming Language :: Python :: 3.5",
  67         "Programming Language :: Python :: 3.6",
  68         "License :: OSI Approved :: Apache Software License",
  69         "Topic :: Software Development :: Testing",
  70     ],
  71 )
  72
  [end of setup.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/setup.py b/setup.py
  --- a/setup.py
  +++ b/setup.py
  @@ -10,7 +10,7 @@
       "boto>=2.36.0",
       "boto3>=1.6.16,<1.8",
       "botocore>=1.9.16,<1.11",
  -    "cryptography>=2.0.0",
  +    "cryptography>=2.3.0",
       "requests>=2.5",
       "xmltodict",
       "six>1.9",
  
verification_info: {"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -10,7 +10,7 @@\n     \"boto>=2.36.0\",\n     \"boto3>=1.6.16,<1.8\",\n     \"botocore>=1.9.16,<1.11\",\n-    \"cryptography>=2.0.0\",\n+    \"cryptography>=2.3.0\",\n     \"requests>=2.5\",\n     \"xmltodict\",\n     \"six>1.9\",\n", "issue": "Cryptography Package has a Security Vulnerability\nDiscovered using pipenv's security check feature that there's a vulnerability in the cryptography package versions<2.3.\r\n    \r\n> Checking installed package safety...\r\n36351: cryptography >=1.9.0,<2.3 resolved (2.2.2 installed)!\r\npython-cryptography versions >=1.9.0 and <2.3 did not enforce a minimum tag length for finalize_with_tag API. If a user did not validate the input length prior to passing it to finalize_with_tag an attacker could craft an invalid payload with a shortened tag (e.g. 1 byte) such that they would have a 1 in 256 chance of passing the MAC check. GCM tag forgeries can cause key leakage.\r\n    \r\nMore details here: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10903\r\n\r\nsetup.py should be updated to require cryptography>=2.3.0.\r\n\n", "before_files": [{"content": "#!/usr/bin/env python\nfrom __future__ import unicode_literals\nimport setuptools\nfrom setuptools import setup, find_packages\nimport sys\n\n\ninstall_requires = [\n    \"Jinja2>=2.7.3\",\n    \"boto>=2.36.0\",\n    \"boto3>=1.6.16,<1.8\",\n    \"botocore>=1.9.16,<1.11\",\n    \"cryptography>=2.0.0\",\n    \"requests>=2.5\",\n    \"xmltodict\",\n    \"six>1.9\",\n    \"werkzeug\",\n    \"pyaml\",\n    \"pytz\",\n    \"python-dateutil<3.0.0,>=2.1\",\n    \"python-jose<3.0.0\",\n    \"mock\",\n    \"docker>=2.5.1\",\n    \"jsondiff==1.1.1\",\n    \"aws-xray-sdk<0.96,>=0.93\",\n    \"responses>=0.9.0\",\n]\n\nextras_require = {\n    'server': ['flask'],\n}\n\n# https://hynek.me/articles/conditional-python-dependencies/\nif int(setuptools.__version__.split(\".\", 1)[0]) < 18:\n    if sys.version_info[0:2] < (3, 3):\n        install_requires.append(\"backports.tempfile\")\nelse:\n    extras_require[\":python_version<'3.3'\"] = [\"backports.tempfile\"]\n\n\nsetup(\n    name='moto',\n    version='1.3.6',\n    description='A library that allows your python tests to easily'\n                ' mock out the boto library',\n    author='Steve Pulec',\n    author_email='spulec@gmail.com',\n    url='https://github.com/spulec/moto',\n    entry_points={\n        'console_scripts': [\n            'moto_server = moto.server:main',\n        ],\n    },\n    packages=find_packages(exclude=(\"tests\", \"tests.*\")),\n    install_requires=install_requires,\n    extras_require=extras_require,\n    include_package_data=True,\n    license=\"Apache\",\n    test_suite=\"tests\",\n    classifiers=[\n        \"Programming Language :: Python :: 2\",\n        \"Programming Language :: Python :: 2.7\",\n        \"Programming Language :: Python :: 3\",\n        \"Programming Language :: Python :: 3.3\",\n        \"Programming Language :: Python :: 3.4\",\n        \"Programming Language :: Python :: 3.5\",\n        \"Programming Language :: Python :: 3.6\",\n        \"License :: OSI Approved :: Apache Software License\",\n        \"Topic :: Software Development :: Testing\",\n    ],\n)\n", "path": "setup.py"}]}