tis-audit-tpm-endorsementkeyinfo icon

Audit TpmEndorsementKeyInfo

Silent install package for Audit TpmEndorsementKeyInfo

2-0
System and network
System and network

  • package: tis-audit-tpm-endorsementkeyinfo
  • name: Audit TpmEndorsementKeyInfo
  • version: 2-0
  • categories: System and network
  • maintainer: WAPT Team,Tranquil IT,Simon Fonteneau
  • licence: wapt_public
  • target_os: windows
  • architecture: all
  • signature_date:
  • size: 8.27 Ko

package           : tis-audit-tpm-endorsementkeyinfo
version           : 2-0
architecture      : all
section           : base
priority          : optional
name              : Audit TpmEndorsementKeyInfo
categories        : System and network
maintainer        : WAPT Team,Tranquil IT,Simon Fonteneau
description       : Audit TpmEndorsementKeyInfo
depends           : 
conflicts         : 
maturity          : PROD
locale            : 
target_os         : windows
min_wapt_version  : 2.3
sources           : 
installed_size    : 
impacted_process  : 
description_fr    : 
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 7d
editor            : 
keywords          : inventory
licence           : wapt_public
homepage          : 
package_uuid      : b5f1ae3f-8a22-497e-abc1-23353992f6f5
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 10
max_os_version    : 
icon_sha256sum    : 7f00fc99ce8f9f34ed57f77501e4e635afaef7809c99755f6f108cdf53c5f955
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2026-04-27T18:00:26.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature         : K6pnH3Eb7udmDV5pZAx0JBRl+QOZSMm/vnC5qwu/gaFIiKw4AWxH4dG70gH6+OSLMWGEHRW9acLhQ72SopA8sFkwjfXL9I0+3ubq5PlqlClOCyLGYWWWbDpp/BW2Wr9YNS3wDhBGLgwSPdtYJfTIH2t4MnA4RDdZqCEEh6yBxGhQIdPgj4+/MHo3ZawuQUbISOdgjGc7/qQ4/H5puaYfra2GHa8cWjQuzOyGNmHnF9kzOcZMYSr7vLt9xmavLGIOzEffQ80pt504rVrVG+VHunze5vuQ7+hjfK+hLJEEYK9mxdpVtkBAWIz61Mp07oTCWuXthA/Sy6Z/o/ZzfguRRA==

# -*- coding: utf-8 -*-
from setuphelpers import *
import ctypes
from ctypes import wintypes
import hashlib, base64, ssl, struct

ncrypt = ctypes.WinDLL("ncrypt.dll")

def get_property(handle, prop):
    size = wintypes.DWORD(0)
    ncrypt.NCryptGetProperty(handle, prop, None, 0, ctypes.byref(size), 0)
    buf = (ctypes.c_ubyte * size.value)()
    ncrypt.NCryptGetProperty(handle, prop, buf, size.value, ctypes.byref(size), 0)
    return bytes(buf[:size.value])

def blob_to_der(blob):
    magic, _, cb_e, cb_n, p1, p2 = struct.unpack("<6I", blob[:24])
    assert magic == 0x31415352 and p1 == p2 == 0, "Blob invalide"
    e = int.from_bytes(blob[24:24+cb_e], "big")
    n = int.from_bytes(blob[24+cb_e:24+cb_e+cb_n], "big")
    from cryptography.hazmat.primitives.asymmetric.rsa import RSAPublicNumbers
    from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat
    return RSAPublicNumbers(e, n).public_key().public_bytes(Encoding.DER, PublicFormat.PKCS1)

def get_tpm_ek():
    prov = wintypes.HANDLE()
    ncrypt.NCryptOpenStorageProvider(ctypes.byref(prov), "Microsoft Platform Crypto Provider", 0)

    try:
        blob = get_property(prov, "PCP_EKPUB")
        der  = blob_to_der(blob)
        result = {
            "present":   True,
            "sha256":    hashlib.sha256(der).hexdigest(),
        }

    except OSError as e:
        result = {"present": False, "error": str(e)}
    finally:
        ncrypt.NCryptFreeObject(prov)

    return result


def install():
    pass

def audit():
    WAPT.write_audit_data_if_changed("audit-tpm-endorsementkeyinfo", "audit-tpm-endorsementkeyinfo", get_tpm_ek())
    return "OK"

38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
c2d17bfa86b0b22e5b137eca2f9ad89d8f1b4942e0b1753cad1b40349aa96249 : WAPT/control
7f00fc99ce8f9f34ed57f77501e4e635afaef7809c99755f6f108cdf53c5f955 : WAPT/icon.png
60d79f3af544f17b5de3ab79c9a4868a818ffc1a11bdcaf492b4c5196657886d : luti.json
9b40eac89c5febfd1fbe7c4df39aeed126812d9042adaa267e4aea66d19b48e1 : setup.py