Apkverify
Jar Signature / APK Signature v2 verify with pure python (support rsa dsa ecdsa)
- require asn1crypto
- support verification for jar signature(apk signature v1),
- support verification for apk signature v2,
- support algorithm in rsa(md5/sha1/sha256/sha512),
- support algorithm in rsa+pss(sha256/sha512),
- support algorithm in dsa(sha1/sha256/sha512),
- support algorithm in ecdsa(sha256/sha512),
- support python2/python3,
- without build,
- without openssl/cryptography/M2Crypto,
- without any binary file like so/pyd/dll/dylib,
Basic usage (command line):
$ python -m apkverify --path "path.apk"
Read the test.py for how to use.
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function
import os
import sys
import zipfile
try:
from .apkverify import ApkSignature
except (ValueError, ImportError):
from apkverify import ApkSignature
if __name__ == '__main__':
test_dir = os.path.join(os.path.abspath('.'), 'apksig')
log = open(test_dir + '.py%d.txt' % (sys.version_info[0]), 'wb')
for filename in os.listdir(test_dir):
file_path = os.path.join(test_dir, filename)
if not (os.path.isfile(file_path) and zipfile.is_zipfile(file_path)):
continue
print('=' * 79)
print('File: {}'.format(file_path))
log_verify = None
try:
a = ApkSignature(os.path.abspath(file_path))
print(a.apkpath)
signature_version = a.is_sigv2()
v_auto = a.verify() # auto check version
v_ver1 = a.verify(1) # force check version 1
v_ver2 = a.verify(2) # force check version 2
print('Verify: {}, {}, {}, {}'.format(signature_version, v_auto, v_ver1, v_ver2))
log_verify = v_ver1, v_ver2
for line in a.errors:
print('Error: {}'.format(line))
all_certs = a.all_certs()
sig_certs = a.get_certs()
all_chain = a.get_chains()
print(all_certs)
print(sig_certs)
print(all_chain)
all_certs = a.all_certs(readable=True)
sig_certs = a.get_certs(readable=True)
all_chain = a.get_chains(readable=True)
print(all_certs)
print(sig_certs)
print(all_chain)
for one_chain in all_chain: # 签名信息(一般只有一个)
print('\t[chain]'.ljust(79, '-'))
for i in range(0, len(one_chain)): # 签名的证书链()
cert_prt, cert_sub, cert_iss = one_chain[i]
print('\t\t[%2d] [certprt]' % i, cert_prt)
print('\t\t\t [subject]', cert_sub)
print('\t\t\t [ issuer]', cert_iss)
except Exception as e:
import logging
logging.exception(e)
print(e)
log_verify = type(e)
log.write(('%s\t%s\n' % (log_verify, filename)).encode('utf8'))
log.flush()
log.close()
'''
(False, False) empty-unsigned.apk
(False, False) golden-aligned-in.apk
(True, True) golden-aligned-out.apk
(True, False) golden-aligned-v1-out.apk
(True, True) golden-aligned-v1v2-out.apk
(False, True) golden-aligned-v2-out.apk
(False, False) golden-legacy-aligned-in.apk
(True, True) golden-legacy-aligned-out.apk
(True, False) golden-legacy-aligned-v1-out.apk
(True, True) golden-legacy-aligned-v1v2-out.apk
(False, True) golden-legacy-aligned-v2-out.apk
(True, True) golden-rsa-minSdkVersion-1-out.apk
(True, True) golden-rsa-minSdkVersion-18-out.apk
(True, True) golden-rsa-minSdkVersion-24-out.apk
(True, True) golden-rsa-out.apk
(False, False) golden-unaligned-in.apk
(True, True) golden-unaligned-out.apk
(True, False) golden-unaligned-v1-out.apk
(True, True) golden-unaligned-v1v2-out.apk
(False, True) golden-unaligned-v2-out.apk
(True, False) mismatched-compression-method.apk
(True, True) original.apk
(True, True) targetSandboxVersion-2.apk
(True, True) two-signers-second-signer-v2-broken.apk
(True, True) two-signers.apk
(False, False) unsigned-targetSandboxVersion-2.apk
(True, False) v1-only-empty.apk
(True, False) v1-only-max-sized-eocd-comment.apk
(True, False) v1-only-pkcs7-cert-bag-first-cert-not-used.apk
(True, False) v1-only-targetSandboxVersion-2.apk
(True, False) v1-only-two-signers.apk
(True, False) v1-only-with-cr-in-entry-name.apk
(True, False) v1-only-with-dsa-sha1-1.2.840.10040.4.1-1024.apk
(True, False) v1-only-with-dsa-sha1-1.2.840.10040.4.1-2048.apk
(True, False) v1-only-with-dsa-sha1-1.2.840.10040.4.1-3072.apk
(True, False) v1-only-with-dsa-sha1-1.2.840.10040.4.3-1024.apk
(True, False) v1-only-with-dsa-sha1-1.2.840.10040.4.3-2048.apk
(True, False) v1-only-with-dsa-sha1-1.2.840.10040.4.3-3072.apk
(True, False) v1-only-with-dsa-sha224-1.2.840.10040.4.1-1024.apk
(True, False) v1-only-with-dsa-sha224-1.2.840.10040.4.1-2048.apk
(True, False) v1-only-with-dsa-sha224-1.2.840.10040.4.1-3072.apk
(True, False) v1-only-with-dsa-sha224-2.16.840.1.101.3.4.3.1-1024.apk
(True, False) v1-only-with-dsa-sha224-2.16.840.1.101.3.4.3.1-2048.apk
(True, False) v1-only-with-dsa-sha224-2.16.840.1.101.3.4.3.1-3072.apk
(True, False) v1-only-with-dsa-sha256-1.2.840.10040.4.1-1024.apk
(True, False) v1-only-with-dsa-sha256-1.2.840.10040.4.1-2048.apk
(True, False) v1-only-with-dsa-sha256-1.2.840.10040.4.1-3072.apk
(True, False) v1-only-with-dsa-sha256-2.16.840.1.101.3.4.3.2-1024.apk
(True, False) v1-only-with-dsa-sha256-2.16.840.1.101.3.4.3.2-2048.apk
(True, False) v1-only-with-dsa-sha256-2.16.840.1.101.3.4.3.2-3072.apk
(True, False) v1-only-with-dsa-sha384-2.16.840.1.101.3.4.3.3-1024.apk
(True, False) v1-only-with-dsa-sha384-2.16.840.1.101.3.4.3.3-2048.apk
(True, False) v1-only-with-dsa-sha384-2.16.840.1.101.3.4.3.3-3072.apk
(True, False) v1-only-with-dsa-sha512-2.16.840.1.101.3.4.3.4-1024.apk
(True, False) v1-only-with-dsa-sha512-2.16.840.1.101.3.4.3.4-2048.apk
(True, False) v1-only-with-dsa-sha512-2.16.840.1.101.3.4.3.4-3072.apk
(True, False) v1-only-with-ecdsa-sha1-1.2.840.10045.2.1-p256.apk
(True, False) v1-only-with-ecdsa-sha1-1.2.840.10045.2.1-p384.apk
(True, False) v1-only-with-ecdsa-sha1-1.2.840.10045.2.1-p521.apk
(True, False) v1-only-with-ecdsa-sha1-1.2.840.10045.4.1-p256.apk
(True, False) v1-only-with-ecdsa-sha1-1.2.840.10045.4.1-p384.apk
(True, False) v1-only-with-ecdsa-sha1-1.2.840.10045.4.1-p521.apk
(True, False) v1-only-with-ecdsa-sha224-1.2.840.10045.2.1-p256.apk
(True, False) v1-only-with-ecdsa-sha224-1.2.840.10045.2.1-p384.apk
(True, False) v1-only-with-ecdsa-sha224-1.2.840.10045.2.1-p521.apk
(True, False) v1-only-with-ecdsa-sha224-1.2.840.10045.4.3.1-p256.apk
(True, False) v1-only-with-ecdsa-sha224-1.2.840.10045.4.3.1-p384.apk
(True, False) v1-only-with-ecdsa-sha224-1.2.840.10045.4.3.1-p521.apk
(True, False) v1-only-with-ecdsa-sha256-1.2.840.10045.2.1-p256.apk
(True, False) v1-only-with-ecdsa-sha256-1.2.840.10045.2.1-p384.apk
(True, False) v1-only-with-ecdsa-sha256-1.2.840.10045.2.1-p521.apk
(True, False) v1-only-with-ecdsa-sha256-1.2.840.10045.4.3.2-p256.apk
(True, False) v1-only-with-ecdsa-sha256-1.2.840.10045.4.3.2-p384.apk
(True, False) v1-only-with-ecdsa-sha256-1.2.840.10045.4.3.2-p521.apk
(True, False) v1-only-with-ecdsa-sha384-1.2.840.10045.2.1-p256.apk
(True, False) v1-only-with-ecdsa-sha384-1.2.840.10045.2.1-p384.apk
(True, False) v1-only-with-ecdsa-sha384-1.2.840.10045.2.1-p521.apk
(True, False) v1-only-with-ecdsa-sha384-1.2.840.10045.4.3.3-p256.apk
(True, False) v1-only-with-ecdsa-sha384-1.2.840.10045.4.3.3-p384.apk
(True, False) v1-only-with-ecdsa-sha384-1.2.840.10045.4.3.3-p521.apk
(True, False) v1-only-with-ecdsa-sha512-1.2.840.10045.2.1-p256.apk
(True, False) v1-only-with-ecdsa-sha512-1.2.840.10045.2.1-p384.apk
(True, False) v1-only-with-ecdsa-sha512-1.2.840.10045.2.1-p521.apk
(True, False) v1-only-with-ecdsa-sha512-1.2.840.10045.4.3.4-p256.apk
(True, False) v1-only-with-ecdsa-sha512-1.2.840.10045.4.3.4-p384.apk
(True, False) v1-only-with-ecdsa-sha512-1.2.840.10045.4.3.4-p521.apk
(True, False) v1-only-with-lf-in-entry-name.apk
(True, False) v1-only-with-nul-in-entry-name.apk
(True, False) v1-only-with-rsa-1024-cert-not-der.apk
(True, False) v1-only-with-rsa-1024-cert-not-der2.apk
(True, False) v1-only-with-rsa-1024.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.1-1024.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.1-16384.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.1-2048.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.1-3072.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.1-4096.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.1-8192.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.4-1024.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.4-16384.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.4-2048.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.4-3072.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.4-4096.apk
(True, False) v1-only-with-rsa-pkcs1-md5-1.2.840.113549.1.1.4-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.1-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.1-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.1-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.1-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.1-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.1-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.5-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.5-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.5-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.5-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.5-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha1-1.2.840.113549.1.1.5-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.1-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.1-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.1-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.1-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.1-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.1-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.14-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.14-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.14-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.14-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.14-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha224-1.2.840.113549.1.1.14-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.1-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.1-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.1-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.1-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.1-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.1-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.11-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.11-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.11-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.11-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.11-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha256-1.2.840.113549.1.1.11-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.12-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.12-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.12-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.12-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.12-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.12-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.1-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.1-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.1-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.1-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.1-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.1-8192.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.13-1024.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.13-16384.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.13-2048.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.13-3072.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.13-4096.apk
(True, False) v1-only-with-rsa-pkcs1-sha512-1.2.840.113549.1.1.13-8192.apk
(False, False) v1-only-with-signed-attrs-missing-content-type.apk
(False, False) v1-only-with-signed-attrs-missing-digest.apk
(False, False) v1-only-with-signed-attrs-multiple-good-digests.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-good-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-missing-content-type-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-missing-digest-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-multiple-good-digests-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-wrong-content-type-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-wrong-digest-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-wrong-order-signerInfo2-good.apk
(True, False) v1-only-with-signed-attrs-signerInfo1-wrong-signature-signerInfo2-good.apk
(False, False) v1-only-with-signed-attrs-wrong-content-type.apk
(False, False) v1-only-with-signed-attrs-wrong-digest.apk
(False, False) v1-only-with-signed-attrs-wrong-order.apk
(False, False) v1-only-with-signed-attrs-wrong-signature.apk
(False, False) v1-only-with-signed-attrs.apk
(False, False) v1-sha1-sha256-manifest-and-sf-with-sha1-wrong-in-manifest.apk
(False, False) v1-sha1-sha256-manifest-and-sf-with-sha1-wrong-in-sf.apk
(False, False) v1-sha1-sha256-manifest-and-sf-with-sha256-wrong-in-manifest.apk
(False, False) v1-sha1-sha256-manifest-and-sf-with-sha256-wrong-in-sf.apk
(True, False) v1-sha1-sha256-manifest-and-sf.apk
(True, False) v1-sha1-sha256-manifest-and-sha1-sf.apk
(True, False) v1-with-apk-sig-block-but-without-apk-sig-scheme-v2-block.apk
(False, False) v2-only-apk-sig-block-size-mismatch.apk
(False, False) v2-only-cert-and-public-key-mismatch.apk
<class 'zipfile.BadZipFile'> v2-only-garbage-between-cd-and-eocd.apk
(False, True) v2-only-max-sized-eocd-comment.apk
(False, True) v2-only-missing-classes.dex.apk
(False, False) v2-only-no-certs-in-sig.apk
(False, False) v2-only-signatures-and-digests-block-mismatch.apk
(False, True) v2-only-targetSandboxVersion-2.apk
(False, True) v2-only-targetSandboxVersion-3.apk
<class 'zipfile.BadZipFile'> v2-only-truncated-cd.apk
(False, True) v2-only-two-signers-second-signer-no-sig.apk
(False, True) v2-only-two-signers-second-signer-no-supported-sig.apk
(False, True) v2-only-two-signers.apk
(False, True) v2-only-unknown-pair-in-apk-sig-block.apk
(False, False) v2-only-with-dsa-sha256-1024-sig-does-not-verify.apk
(False, True) v2-only-with-dsa-sha256-1024.apk
(False, True) v2-only-with-dsa-sha256-2048.apk
(False, True) v2-only-with-dsa-sha256-3072.apk
(False, False) v2-only-with-ecdsa-sha256-p256-digest-mismatch.apk
(False, False) v2-only-with-ecdsa-sha256-p256-sig-does-not-verify.apk
(False, True) v2-only-with-ecdsa-sha256-p256.apk
(False, True) v2-only-with-ecdsa-sha256-p384.apk
(False, True) v2-only-with-ecdsa-sha256-p521.apk
(False, True) v2-only-with-ecdsa-sha512-p256.apk
(False, True) v2-only-with-ecdsa-sha512-p384.apk
(False, True) v2-only-with-ecdsa-sha512-p521.apk
(False, False) v2-only-with-ignorable-unsupported-sig-algs.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-1024-cert-not-der.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-1024.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-16384.apk
(False, False) v2-only-with-rsa-pkcs1-sha256-2048-sig-does-not-verify.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-2048.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-3072.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-4096.apk
(False, True) v2-only-with-rsa-pkcs1-sha256-8192.apk
(False, True) v2-only-with-rsa-pkcs1-sha512-1024.apk
(False, True) v2-only-with-rsa-pkcs1-sha512-16384.apk
(False, True) v2-only-with-rsa-pkcs1-sha512-2048.apk
(False, True) v2-only-with-rsa-pkcs1-sha512-3072.apk
(False, False) v2-only-with-rsa-pkcs1-sha512-4096-digest-mismatch.apk
(False, True) v2-only-with-rsa-pkcs1-sha512-4096.apk
(False, True) v2-only-with-rsa-pkcs1-sha512-8192.apk
(False, True) v2-only-with-rsa-pss-sha256-1024.apk
(False, True) v2-only-with-rsa-pss-sha256-16384.apk
(False, False) v2-only-with-rsa-pss-sha256-2048-sig-does-not-verify.apk
(False, True) v2-only-with-rsa-pss-sha256-2048.apk
(False, True) v2-only-with-rsa-pss-sha256-3072.apk
(False, True) v2-only-with-rsa-pss-sha256-4096.apk
(False, True) v2-only-with-rsa-pss-sha256-8192.apk
(False, True) v2-only-with-rsa-pss-sha512-16384.apk
(False, True) v2-only-with-rsa-pss-sha512-2048.apk
(False, True) v2-only-with-rsa-pss-sha512-3072.apk
(False, True) v2-only-with-rsa-pss-sha512-4096.apk
(False, True) v2-only-with-rsa-pss-sha512-8192.apk
(False, False) v2-only-wrong-apk-sig-block-magic.apk
(True, False) v2-stripped-with-ignorable-signing-schemes.apk
(True, False) v2-stripped.apk
<class 'NotImplementedError'> weird-compression-method.apk
'''
Metadata
Release files for ak-apkverify 0.1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ak-apkverify-0.1.1.1.tar.gz | 30.3 kB | Without provenance | Details for ak-apkverify-0.1.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ak_apkverify-0.1.1.1-py3-none-any.whl | Python 3 | none | any | Details for ak_apkverify-0.1.1.1-py3-none-any.whl |
Total release size: 60.7 kB
Release files / ak-apkverify-0.1.1.1.tar.gz
| Download URL | ak-apkverify-0.1.1.1.tar.gz |
|---|---|
| Size | 30.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6d3a313990dbba0b4a83561963d5c19b2bf4fd0692266b5f7846e8f5a4f7373c
|
|
BLAKE2b-256 checksum How to use checksums |
a116d83b115800e3cb9f701f7e200c3e24365ce4dab02631c2fae1ffafefa850
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.4
|
Release files / ak_apkverify-0.1.1.1-py3-none-any.whl
| Download URL | ak_apkverify-0.1.1.1-py3-none-any.whl |
|---|---|
| Size | 30.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c5422cadf2bba446274e5c75bdf9610b8509df6b0c6fa4406c4b7f65c615407
|
|
BLAKE2b-256 checksum How to use checksums |
77dbdbf0c3e77323ee5b79d8db3a3b5a82a011176435ebc075c6a3aa5bc85e40
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.4
|
Security for ak-apkverify 0.1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.