⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.py

📁 python的加密库
💻 PY
字号:
#! /usr/bin/env python__revision__ = "$Id: setup.py,v 1.30 2005/06/14 01:20:22 akuchling Exp $"from distutils import corefrom distutils.core import Extensionfrom distutils.command.build_ext import build_extimport os, sysif sys.version[0:1] == '1':    raise RuntimeError, ("The Python Cryptography Toolkit requires "                         "Python 2.x to build.")if sys.platform == 'win32':    HTONS_LIBS = ['ws2_32']    plat_ext = [                Extension("Crypto.Util.winrandom",                          libraries = HTONS_LIBS + ['advapi32'],                          include_dirs=['src/'],                          sources=["src/winrand.c"])               ]else:    HTONS_LIBS = []    plat_ext = []# Functions for finding libraries and files, copied from Python's setup.py.def find_file(filename, std_dirs, paths):    """Searches for the directory where a given file is located,    and returns a possibly-empty list of additional directories, or None    if the file couldn't be found at all.    'filename' is the name of a file, such as readline.h or libcrypto.a.    'std_dirs' is the list of standard system directories; if the        file is found in one of them, no additional directives are needed.    'paths' is a list of additional locations to check; if the file is        found in one of them, the resulting list will contain the directory.    """    # Check the standard locations    for dir in std_dirs:        f = os.path.join(dir, filename)        if os.path.exists(f): return []    # Check the additional directories    for dir in paths:        f = os.path.join(dir, filename)        if os.path.exists(f):            return [dir]    # Not found anywhere    return Nonedef find_library_file(compiler, libname, std_dirs, paths):    filename = compiler.library_filename(libname, lib_type='shared')    result = find_file(filename, std_dirs, paths)    if result is not None: return result    filename = compiler.library_filename(libname, lib_type='static')    result = find_file(filename, std_dirs, paths)    return resultclass PCTBuildExt (build_ext):    def build_extensions(self):        self.extensions += [            # Hash functions            Extension("Crypto.Hash.MD4",                      include_dirs=['src/'],                      sources=["src/MD4.c"]),            Extension("Crypto.Hash.RIPEMD",                      include_dirs=['src/'],                      sources=["src/RIPEMD.c"],                      libraries=HTONS_LIBS),            Extension("Crypto.Hash.SHA256",                      include_dirs=['src/'],                      sources=["src/SHA256.c"]),            # Block encryption algorithms            Extension("Crypto.Cipher.AES",                      include_dirs=['src/'],                      sources=["src/AES.c"]),            Extension("Crypto.Cipher.ARC2",                      include_dirs=['src/'],                      sources=["src/ARC2.c"]),            Extension("Crypto.Cipher.Blowfish",                      include_dirs=['src/'],                      sources=["src/Blowfish.c"]),            Extension("Crypto.Cipher.CAST",                      include_dirs=['src/'],                      sources=["src/CAST.c"]),            Extension("Crypto.Cipher.DES",                      include_dirs=['src/'],                      sources=["src/DES.c"]),            Extension("Crypto.Cipher.DES3",                      include_dirs=['src/'],                      sources=["src/DES3.c"]),            Extension("Crypto.Cipher.IDEA",                      include_dirs=['src/'],                      sources=["src/IDEA.c"],                      libraries=HTONS_LIBS),            Extension("Crypto.Cipher.RC5",                      include_dirs=['src/'],                      sources=["src/RC5.c"]),            # Stream ciphers            Extension("Crypto.Cipher.ARC4",                      include_dirs=['src/'],                      sources=["src/ARC4.c"]),            Extension("Crypto.Cipher.XOR",                      include_dirs=['src/'],                      sources=["src/XOR.c"]),            ]        # Detect which modules should be compiled        self.detect_modules()        build_ext.build_extensions(self)    def detect_modules (self):        lib_dirs = self.compiler.library_dirs + ['/lib', '/usr/lib']        inc_dirs = self.compiler.include_dirs + ['/usr/include']        exts = []        if (self.compiler.find_library_file(lib_dirs, 'gmp')):            exts.append(Extension("Crypto.PublicKey._fastmath",                                  include_dirs=['src/'],                                  libraries=['gmp'],                                  sources=["src/_fastmath.c"]))        self.extensions += extskw = {'name':"pycrypto",      'version':"2.0.1",      'description':"Cryptographic modules for Python.",      'author':"A.M. Kuchling",      'author_email':"amk@amk.ca",      'url':"http://www.amk.ca/python/code/crypto",      'cmdclass' : {'build_ext':PCTBuildExt},      'packages' : ["Crypto", "Crypto.Hash", "Crypto.Cipher", "Crypto.Util",                  "Crypto.Protocol", "Crypto.PublicKey"],      'package_dir' : { "Crypto":"." },      # One module is defined here, because build_ext won't be      # called unless there's at least one extension module defined.      'ext_modules':[Extension("Crypto.Hash.MD2",                             include_dirs=['src/'],                             sources=["src/MD2.c"])],     }# If we're running Python 2.3, add extra informationif hasattr(core, 'setup_keywords'):    if 'classifiers' in core.setup_keywords:        kw['classifiers'] = [          'Development Status :: 4 - Beta',          'License :: Public Domain',          'Intended Audience :: Developers',          'Operating System :: Unix',          'Operating System :: Microsoft :: Windows',          'Operating System :: MacOS :: MacOS X',          'Topic :: Security :: Cryptography',          ]    if 'download_url' in core.setup_keywords:        kw['download_url'] = ('http://www.amk.ca/files/python/crypto/'                              '%s-%s.tar.gz' % (kw['name'], kw['version']) )core.setup(**kw)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -