创建TrueLicense许可文件的Python库。

truep的Python项目详细描述


与TrueLicense兼容的Python许可证管理器

这个包支持管理许可证一种java包使用的格式 TrueLicense。只有版本1格式是 支持。

有关 许可证格式,或下面的Quick license format description

快速许可证格式说明

许可证在时间上有一个有效期,一个颁发者,一个持有者和各种元 数据。

由持证人签名,可由发卡机构验证签名 证书。

许可证文件也使用从密码派生的密钥进行加密。

快速库参考

truepy导出的主类是truepy.License

  • 要生成新许可证,请使用类方法truepy.License.issue
  • 要从文件或流加载许可证,请使用Class方法 truepy.License.load
  • 要将许可证保存到文件或流,请使用以下方法 truepy.License.store
  • 要验证许可证的签名,请使用以下方法 truepy.License.verify
  • 要读取许可证信息,请使用truepy.License.license_data 属性;这是类型truepy.LicenseData

加载和存储许可证只需要许可证密码;这些 操作不执行签名和签名验证。

颁发新许可证需要颁发者证书的私钥。

验证许可证签名需要颁发者证书。

快速应用参考

有关详细信息,请使用python -m truepy -h运行应用程序。

使用量

本节介绍如何将系统配置为使用truepy

配置包括安装truepy,生成颁发者证书, 生成许可证并验证许可证。

安装

要安装truepy,请运行以下命令:

pip install truepy

生成颁发者证书

此功能不包含在truepy中。建议使用的工具是 OpenSSL。颁发证书并生成 私钥,运行以下命令:

openssl req -x509 \
    -newkey rsa:4096 \
    -keyout key.pem \
    -out certificate.pem \
    -days $VALIDITY

这将提示您输入密码以保护私钥,以及其他 证书中包含的信息。

最重要的信息是密码,您需要 稍后,还有$VALIDITY。命令行参数-days传递给 openssl确定证书有效的天数。一定不要 设置一个太低的值,因为在此之后您将无法使用证书 已经过去的天数。

颁发许可证

一旦您拥有证书和私钥,就可以开始颁发许可证。 下面的代码显示了所需的最低步骤:

from cryptography.hazmat import backends
from cryptography.hazmat.primitives import serialization

from truepy import LicenseData, License


# Load the certificate
with open('certificate.pem', 'rb') as f:
    certificate = f.read()

# Load the private key
with open('key.pem', 'rb') as f:
    key = serialization.load_pem_private_key(
        f.read(),
        password=b'MySecretPassword',
        backend=backends.default_backend())

# Issue the license
license = License.issue(
    certificate,
    key,
    license_data=LicenseData(
        '2016-10-01T00:00:00',
        '2020-10-01T00:00:00'))

# Store the license
with open('license.key', 'wb') as f:
    license.store(f, b'LicensePassword')

请注意License.store的第二个参数。它是一个密码,用于 派生加密密钥以加密最终许可证数据。这不是秘密,因为 它需要可用于验证许可证的应用程序。

验证许可证

要验证许可证,您需要上面步骤中使用的证书,如 以及用于加密最终许可证数据的密码。下面的代码 显示所需的最小步骤:

from truepy import License


# Load the certificate
with open('certificate.pem', 'rb') as f:
    certificate = f.read()

# Load the license
with open('license.key', 'rb') as f:
    license = License.load(f, b'LicensePassword')

# Verify the license; this will raise License.InvalidSignatureException if
# the signature is incorrect
license.verify(certificate)

发行说明

2.0.3-更新文件

  • 更新的文档与python 3兼容。

2.0.2-正确处理dsa密钥

  • 更正了读取dsa密钥的错误。
  • 更新文件。

2.0.1-更正文件

  • 已将声明的参数类型更改为License.issue

2.0-不依赖于openssl

  • 更改的证书要使用的证书和签名验证例程 cryptography而不是pyOpenSSL

    这将更改所有将证书或密钥作为参数的方法。

1.0.1-许可证数据错误修复

  • 已将truepy.LicenseData.information更改为info以与兼容 truelicense

1.0-初始释放

  • 支持TrueLicense版本1许可证的基本许可证操作

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Cassandra复制因子大于节点数   java J2EE JTA事务回滚不适用于OSE Glassfish 4.0(Build 89)   java spring安全预认证用户登录   org的java类文件。反应流。从RxJava编译示例时未找到Publisher?   java在使用dataFormat作为POJO通过Camel调用Web服务时无法设置SOAP标头   Javafx类的java静态实例   java如何防止一个部件在关闭时覆盖另一个部件的位置   sql server无法从我的java代码连接到数据库   java在JList(Swing)中显示带有的ArrayList   从Java中的CXF服务获取WSAddressing数据   使用资产文件夹进行java简单json解析(本地)   java LDAPException未绑定的无效凭据   JavaJSFspring部署到weblogic   JAVA中字符数组中的特定元素排列?   如果脚本位于不同的目录中,则ant不会使用exec标记运行Javashell脚本