Kan Li

172 papers A* 18A 1B 5C 1Misc 4Journal 84Unranked 59
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Xinglin Wang, Jiayi Shi, Shaoxiong Feng, Peiwen Yuan, Yiwei Li, Yueqi Zhang, Chuyi Tan, Ji Zhang, Boyuan Pan, Yao Hu, Kan Li
2026 J jnl
IEEE Trans. Veh. Technol.
Hang Yin, Li Qiao, Yu Ma, Shuo Sun, Kan Li, Zhen Gao, Dusit Niyato
2026 J jnl
CoRR
Yueqi Zhang, Jin Hu, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Yiwei Li, Jiayi Shi, Chuyi Tan, Ji Zhang, Boyuan Pan, Yao Hu, Kan Li
2026 A* conf
AAAI
Wenxiao Fan, Kan Li
2026 J jnl
Neurocomputing
Hang Yin, Xinglin Wang, Yueqi Zhang, Pinren Lu, Bin Sun, Peiwen Yuan, Kan Li
2026 conf
CNML
Lingxiang Wei, Peiwen Yuan, Shaojie Qu, Kan Li
2025 J jnl
Expert Syst. Appl.
Yang Li, Ji Zhang, Lin Zhang, Kan Li
2025 conf
ACL (1)
Peiwen Yuan, Yueqi Zhang, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Peiwen Yuan, Yueqi Zhang, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 conf
NAACL (Long Papers)
Xinglin Wang, Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2025 A* conf
AAAI
Wenxiao Fan, Kan Li
2025 conf
CCEAI
Ziang Li, Kan Li, Shaojie Qu
2025 J jnl
CoRR
Chuyi Tan, Peiwen Yuan, Xinglin Wang, Yiwei Li, Shaoxiong Feng, Yueqi Zhang, Jiayi Shi, Ji Zhang, Boyuan Pan, Yao Hu, Kan Li
2025 Misc conf
ICASSP
Hang Yin, Zhifeng Lin, Xin Liu, Bin Sun, Kan Li
2025 J jnl
CoRR
Xinglin Wang, Yiwei Li, Shaoxiong Feng, Peiwen Yuan, Yueqi Zhang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
Intell. Data Anal.
Yang Li, Xin Liu, Kan Li
2025 J jnl
CoRR
Peiwen Yuan, Chuyi Tan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Jiayi Shi, Boyuan Pan, Yao Hu, Kan Li
2025 conf
ACL (1)
Peiwen Yuan, Chuyi Tan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Jiayi Shi, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Hang Yin, Li Qiao, Yu Ma, Shuo Sun, Kan Li, Zhen Gao, Dusit Niyato
2025 J jnl
Ann. Oper. Res.
Yang Li, Jie Li, Kan Li
2025 conf
EMNLP (Findings)
Jiayi Shi, Yiwei Li, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Huan Ren, Yao Hu, Kan Li
2025 J jnl
CoRR
Jiayi Shi, Yiwei Li, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Huan Ren, Yao Hu, Kan Li
2025 conf
CACML
Yikai Ning, Kan Li, Shaojie Qu
2025 J jnl
CoRR
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 conf
NAACL (Findings)
Xinglin Wang, Shaoxiong Feng, Yiwei Li, Peiwen Yuan, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Yueqi Zhang, Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Ji Zhang, Yiwei Li, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Jiayi Shi, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 conf
ACL (Findings)
Yiwei Li, Ji Zhang, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Jiayi Shi, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Yiwei Li, Ji Zhang, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Jiayi Shi, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Peiwen Yuan, Yiwei Li, Shaoxiong Feng, Xinglin Wang, Yueqi Zhang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 conf
EMNLP (Findings)
Yiwei Li, Jiayi Shi, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Yueqi Zhang, Ji Zhang, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Yiwei Li, Jiayi Shi, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Yueqi Zhang, Ji Zhang, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Hang Yin, Xiaomin He, Peiwen Yuan, Yiwei Li, Jiayi Shi, Wenxiao Fan, Shaoxiong Feng, Kan Li
2025 A* conf
ICLR
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2025 J jnl
CoRR
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Jiayi Shi, Chuyi Tan, Boyuan Pan, Yao Hu, Kan Li
2024 conf
ACL (1)
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
CoRR
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Boyuan Pan, Heda Wang, Kan Li
2024 J jnl
Signal Image Video Process.
Zhichao Ma, Kan Li
2024 J jnl
CoRR
Xinglin Wang, Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
CoRR
Wenxiao Fan, Kan Li
2024 J jnl
CoRR
Hang Yin, Zhifeng Lin, Xin Liu, Bin Sun, Kan Li
2024 conf
ACL (Findings)
Yiwei Li, Fei Mi, Yitong Li, Yasheng Wang, Bin Sun, Shaoxiong Feng, Kan Li
2024 J jnl
CoRR
Yiwei Li, Fei Mi, Yitong Li, Yasheng Wang, Bin Sun, Shaoxiong Feng, Kan Li
2024 A* conf
ICLR
Yiwei Li, Peiwen Yuan, Shaoxiong Feng, Boyuan Pan, Xinglin Wang, Bin Sun, Heda Wang, Kan Li
2024 J jnl
CoRR
Yiwei Li, Peiwen Yuan, Shaoxiong Feng, Boyuan Pan, Xinglin Wang, Bin Sun, Heda Wang, Kan Li
2024 conf
ICIC (LNAI 2)
Yang Li, Kan Li
2024 J jnl
Neurocomputing
Kan Li, Yang Li, Ji Zhang, Xin Liu, Zhichao Ma
2024 A* conf
EMNLP
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
CoRR
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Yueqi Zhang, Chuyi Tan, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 conf
EACL (1)
Peiwen Yuan, Xinglin Wang, Shaoxiong Feng, Boyuan Pan, Yiwei Li, Heda Wang, Xupeng Miao, Kan Li
2024 J jnl
CoRR
Peiwen Yuan, Xinglin Wang, Shaoxiong Feng, Boyuan Pan, Yiwei Li, Heda Wang, Xupeng Miao, Kan Li
2024 A* conf
NeurIPS
Yiwei Li, Jiayi Shi, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
CoRR
Yiwei Li, Jiayi Shi, Shaoxiong Feng, Peiwen Yuan, Xinglin Wang, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 conf
ACL (1)
Xinglin Wang, Yiwei Li, Shaoxiong Feng, Peiwen Yuan, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
CoRR
Xinglin Wang, Yiwei Li, Shaoxiong Feng, Peiwen Yuan, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
Appl. Intell.
Hang Yin, Pinren Lu, Ziang Li, Bin Sun, Kan Li
2024 J jnl
CoRR
Xinglin Wang, Shaoxiong Feng, Yiwei Li, Peiwen Yuan, Yueqi Zhang, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 conf
ACL (Findings)
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
CoRR
Peiwen Yuan, Shaoxiong Feng, Yiwei Li, Xinglin Wang, Boyuan Pan, Heda Wang, Yao Hu, Kan Li
2024 J jnl
Mach. Vis. Appl.
Zhichao Ma, Kan Li
2024 A* conf
AAAI
Yiwei Li, Peiwen Yuan, Shaoxiong Feng, Boyuan Pan, Bin Sun, Xinglin Wang, Heda Wang, Kan Li
2023 conf
ICSAI
Zhaojia Han, Kan Li, Shaojie Qu
2023 J jnl
CoRR
Mingzhu Zhang, Ruiping Yin, Zhen Yang, Yipeng Wang, Kan Li
2023 conf
PRCV (6)
Zhichao Ma, Kan Li
2023 J jnl
CoRR
Hang Yin, Pinren Lu, Ziang Li, Bin Sun, Kan Li
2023 A* conf
AAAI
Yiwei Li, Shaoxiong Feng, Bin Sun, Kan Li
2023 J jnl
CoRR
Yiwei Li, Shaoxiong Feng, Bin Sun, Kan Li
2023 J jnl
Appl. Intell.
Zhichao Ma, Kan Li, Yang Li
2023 J jnl
Knowl. Based Syst.
Yiwei Li, Bin Sun, Shaoxiong Feng, Kan Li
2023 A* conf
AAAI
Bin Sun, Yitong Li, Fei Mi, Weichao Wang, Yiwei Li, Kan Li
2023 conf
ACL (2)
Bin Sun, Yitong Li, Fei Mi, Fanhu Bie, Yiwei Li, Kan Li
2023 J jnl
CoRR
Yiwei Li, Peiwen Yuan, Shaoxiong Feng, Boyuan Pan, Bin Sun, Xinglin Wang, Heda Wang, Kan Li
2022 conf
NAACL-HLT
Yiwei Li, Shaoxiong Feng, Bin Sun, Kan Li
2022 J jnl
CoRR
Yiwei Li, Shaoxiong Feng, Bin Sun, Kan Li
2022 conf
ACL (Findings)
Shaoxiong Feng, Xuancheng Ren, Kan Li, Xu Sun
2022 J jnl
CoRR
Shaoxiong Feng, Xuancheng Ren, Kan Li, Xu Sun
2022 J jnl
IEEE Trans. Knowl. Data Eng.
Shuai Jiang, Kan Li, Richard Yi Da Xu
2022 conf
EMNLP (Findings)
Bin Sun, Shaoxiong Feng, Yiwei Li, Weichao Wang, Fei Mi, Yitong Li, Kan Li
2022 J jnl
CoRR
Bin Sun, Shaoxiong Feng, Yiwei Li, Weichao Wang, Fei Mi, Yitong Li, Kan Li
2022 J jnl
CoRR
Yiwei Li, Bin Sun, Shaoxiong Feng, Kan Li
2022 J jnl
Knowl. Based Syst.
Bin Sun, Shaoxiong Feng, Yiwei Li, Jiamou Liu, Kan Li
2022 J jnl
CoRR
Bin Sun, Yitong Li, Fei Mi, Weichao Wang, Yiwei Li, Kan Li
2021 A* conf
AAAI
Shaoxiong Feng, Hongshen Chen, Xuancheng Ren, Zhuoye Ding, Kan Li, Xu Sun
2021 conf
ACL/IJCNLP (1)
Bin Sun, Shaoxiong Feng, Yiwei Li, Jiamou Liu, Kan Li
2021 J jnl
CoRR
Bin Sun, Shaoxiong Feng, Yiwei Li, Jiamou Liu, Kan Li
2021 conf
SAI (1)
Yi Zhang, Kan Li, Xin Niu
2021 conf
SAI (1)
Haoting Wang, Kan Li, Xin Niu
2021 A* conf
AAAI
Shaoxiong Feng, Xuancheng Ren, Kan Li, Xu Sun
2021 J jnl
CoRR
Shaoxiong Feng, Xuancheng Ren, Kan Li, Xu Sun
2021 J jnl
Neural Process. Lett.
Mohammed A. B. Mahmoud, Ping Guo, Ahmed Fathy, Kan Li
2021 conf
SAI (1)
Jiahe Li, Kan Li, Xin Niu
2021 J jnl
CoRR
Bin Sun, Shaoxiong Feng, Yiwei Li, Jiamou Liu, Kan Li
2020 Misc conf
ICTIR
Yiwei Li, Miao Fan, Jizhou Huang, Kan Li
2020 J jnl
CoRR
Shaoxiong Feng, Hongshen Chen, Xuancheng Ren, Zhuoye Ding, Kan Li, Xu Sun
2020 J jnl
Neurocomputing
Ahmed Fathy, Kan Li
2020 J jnl
Pattern Recognit.
Yang Li, Kan Li, Xinxin Wang, Richard Yi Da Xu
2020 A* conf
AAAI
Yang Li, Kan Li, Shuai Jiang, Ziyue Zhang, Congzhentao Huang, Richard Yi Da Xu
2020 J jnl
Inf. Sci.
Adil Imad Eddine Hosni, Kan Li, Sadique Ahmad
2020 J jnl
Knowl. Based Syst.
Adil Imad Eddine Hosni, Kan Li
2020 A* conf
AAAI
Shaoxiong Feng, Hongshen Chen, Kan Li, Dawei Yin
2020 J jnl
CoRR
Shaoxiong Feng, Hongshen Chen, Kan Li, Dawei Yin
2020 J jnl
Pattern Recognit.
Yang Li, Kan Li, Xinxin Wang
2020 conf
EMNLP (1)
Shaoxiong Feng, Xuancheng Ren, Hongshen Chen, Bin Sun, Kan Li, Xu Sun
2020 J jnl
CoRR
Shaoxiong Feng, Xuancheng Ren, Hongshen Chen, Bin Sun, Kan Li, Xu Sun
2020 conf
PAKDD (1)
Ahmed Fathy, Kan Li
2019 J jnl
Knowl. Based Syst.
Ruiping Yin, Kan Li, Guangquan Zhang, Jie Lu
2019 J jnl
CoRR
Shaojie Qu, Kan Li, Zheyi Fan, Sisi Wu, Xinyi Liu, Zhiguo Huang
2019 conf
ICONIP (4)
Ahmed Fathy, Kan Li
2019 conf
ICONIP (2)
Adil Imad Eddine Hosni, Kan Li, Sadique Ahmad
2019 A* conf
WWW
Ruiping Yin, Kan Li, Jie Lu, Guangquan Zhang
2019 J jnl
Aust. J. Intell. Inf. Process. Syst.
Ahmed Fathy, Kan Li
2019 J jnl
Aust. J. Intell. Inf. Process. Syst.
Shaojie Qu, Kan Li, Bo Wu, Kai Tang, Weimin Liu
2019 J jnl
Entropy
Shaojie Qu, Kan Li, Bo Wu, Xuri Zhang, Kaihao Zhu
2019 J jnl
IEEE Trans. Knowl. Data Eng.
Shuai Jiang, Kan Li, Richard Yi Da Xu
2019 B conf
IJCNN
Ruiping Yin, Kan Li, Jie Lu, Guangquan Zhang
2018 conf
ICANN (2)
Lingling Li, Kan Li, Chao Xiang
2018 J jnl
IEEE Access
Sadique Ahmad, Kan Li, Adnan Amin, Muhammad Shahid Anwar, Wahab Khan
2018 J jnl
IEEE Access
Sadique Ahmad, Kan Li, Adnan Amin, Salabat Khan
2018 J jnl
Int. J. Comput. Intell. Syst.
Fan Dong, Jie Lu, Guangquan Zhang, Kan Li
2018 B conf
IJCNN
Cangfeng Ding, Kan Li
2018 J jnl
Neurocomputing
Cangfeng Ding, Kan Li
2018 A* conf
IJCAI
Yang Li, Kan Li, Xinxin Wang
2018 conf
CF
Cangfeng Ding, Kan Li
2018 conf
CSAI/ICIMT
Junying Shang, Kan Li
2018 J jnl
Knowl. Based Syst.
Fan Dong, Guangquan Zhang, Jie Lu, Kan Li
2018 conf
ICONIP (2)
Adil Imad Eddine Hosni, Kan Li, Sadique Ahmad
2018 conf
ICONIP (6)
Adil Imad Eddine Hosni, Kan Li, Cangfeng Ding, Sadique Ahmed
2018 J jnl
CoRR
Shuai Jiang, Kan Li, Richard Yi Da Xu
2018 J jnl
IEEE Access
Shaojie Qu, Kan Li, Shuhui Zhang, Yongchao Wang
2018 J jnl
CoRR
Shuai Jiang, Kan Li, Richard Yida Xu
2018 conf
ICCI*CC
Sadique Ahmad, Kan Li, Adnan Amin, Muhammad Yasir Faheem
2018 conf
TURC
Shumin Shi, Heyan Huang, Kan Li
2018 J jnl
J. Comput. Sci.
Cangfeng Ding, Kan Li
2017 conf
ICONIP (6)
Xinxin Wang, Kan Li, Yang Li
2017 J jnl
Neural Comput. Appl.
Zheng Zhou, Kan Li, Lin Bai
2017 Misc conf
ISKE
Fan Dong, Jie Lu, Kan Li, Guangquan Zhang
2017 A* conf
ICDM
Walid Atwa, Kan Li
2017 B conf
FUZZ-IEEE
Ruiping Yin, Kan Li, Guangquan Zhang, Jie Lu
2017 conf
IEEE ICCI*CC
Sadique Ahmad, Kan Li, Yang Li, Humera Qureshi, Siraj Khan
2017 conf
ICONIP (5)
Zhu Liu, Kan Li, Dacheng Qu
2016 A* conf
IJCAI
Zheng Zhou, Kan Li, Xiangjian He, Mengmeng Li
2016 J jnl
Neurocomputing
Cangfeng Ding, Kan Li
2016 J jnl
Neural Comput. Appl.
Lin Bai, Kan Li, JianMeng Pei, Shuai Jiang
2016 conf
DSC
Tao Ma, Dacheng Qu, Rui Ma, Wei Feng, Kan Li
2015 conf
MMM (1)
Hang Xu, Kan Li, Fuyu Lv, JianMeng Pei
2015 J jnl
Knowl. Based Syst.
Fengjiao Chen, Kan Li
2015 B conf
IJCNN
Kan Li, Lin Bai
2015 A conf
ICME
Lin Bai, Kan Li
2015 A* conf
ACM Multimedia
Zheng Zhou, Kan Li, Xiangjian He
2015 B conf
IJCNN
Lin Bai, Kan Li, Shuai Jiang
2015 conf
DASFAA Workshops
Walid Atwa, Kan Li
2014 conf
WISE (1)
Guangyao Zhu, Kan Li
2014 J jnl
Neurocomputing
Kan Li, Yin Pang
2014 conf
DEXA (1)
Walid Atwa, Kan Li
2014 conf
DEXA (1)
Walid Atwa, Kan Li
2014 conf
WISE (1)
Fengjiao Chen, Kan Li
2013 conf
ADMA (2)
Kan Li, Wensi Mu, Yong Luan, Shaohua An
2013 conf
ADMA (1)
Yin Pang, Kan Li
2013 conf
BIBM
Kan Li, Yin Pang
2013 conf
BIBM
Kan Li, Fengjiao Chen
2012 conf
PAKDD (1)
Kan Li, Yin Pang
2010 conf
IITSI
Yin Pang, Kan Li, Xin Sun, Kaili Bu
2009 conf
ACIS-ICIS
Xin Sun, Kan Li, Yushu Liu
2009 J jnl
Int. J. Distributed Sens. Networks
Kan Li, Xin Sun, Yue He
2009 J jnl
Int. J. Comput. Intell. Syst.
Shibin Zhou, Kan Li, Yushu Liu
2008 conf
ICOIN
Zhao Cao, Kan Li, Yushu Liu
2008 conf
GCC
Kan Li, Zhikun Zheng, Xiaoxing Xing, Xin Sun
2008 C conf
HPCC
Xin Sun, Kan Li, Yushu Liu, Yong Tian
2008 conf
RSKT
Shibin Zhou, Kan Li, Yushu Liu
2008 conf
FSKD (2)
Shibin Zhou, Kan Li, Yushu Liu
2007 Misc conf
IC-AI
Kan Li, Yushu Liu
2005 conf
FSKD (1)
Kan Li, Yushu Liu
redb/extractors/pe_extractors/pe_signature_old.py
← Index redb/extractors/pe_extractors/pe_signature_old.py python
import inspect
import pefile

from hashlib import md5, sha1, sha256

from asn1crypto import cms, pem, x509, core

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PECertificate, PESigner


class PESignatureExtractor(PEExtractor):
    """
    RFC 3161 - Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)
    Section 2.4.2 defines the TSTInfo structure.
    https://tools.ietf.org/html/rfc3161#section-2.4.2

    Microsoft Authenticode Time Stamping Specification
    https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx
    """

    def __init__(
        self,
        filepath,
        log,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_signature"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.PE_SIGNATURE.value

    @staticmethod
    def _extract_certificate_info(cert_data):
        # self.log.debug(inspect.currentframe().f_code.co_name)

        certificate = x509.Certificate.load(cert_data)
        certificate_serial_number = format(certificate.serial_number, "x").upper()
        grouped_serial_number = ":".join(
            [
                certificate_serial_number[i : i + 2]
                for i in range(0, len(certificate_serial_number), 2)
            ]
        )
        return PECertificate(
            _id=format(certificate.serial_number, "x").upper(),
            certificate_serial_number=grouped_serial_number,
            certificate_issuer=certificate.issuer.human_friendly,
            certificate_subject=certificate.subject.human_friendly,
            certificate_valid_from=certificate["tbs_certificate"]["validity"][
                "not_before"
            ].native.strftime("%Y-%m-%d %H:%M:%S"),
            certificate_valid_to=certificate["tbs_certificate"]["validity"][
                "not_after"
            ].native.strftime("%Y-%m-%d %H:%M:%S"),
            certificate_thumbprint=sha1(cert_data).hexdigest().upper(),
            certificate_md5=md5(cert_data).hexdigest().upper(),
            certificate_sha256=sha256(cert_data).hexdigest().upper(),
        )

    @staticmethod
    def _parse_microsoft_time_stamp(ts_token):
        class TSTInfo(core.Sequence):
            _fields = [
                ("version", core.Integer),
                ("policy_id", core.ObjectIdentifier),
                ("message_imprint", core.Sequence),
                ("serial_number", core.Integer),
                ("gen_time", core.GeneralizedTime),
                ("accuracy", core.Sequence, {"optional": True}),
                ("ordering", core.Boolean, {"optional": True}),
                ("nonce", core.Integer, {"optional": True}),
                ("tsa", core.Sequence, {"optional": True}),
                ("extensions", core.Sequence, {"optional": True}),
            ]

        # The content should be SignedData
        signed_data = ts_token["content"]

        # The actual timestamp should be in the encapContentInfo
        encap_content_info = signed_data["encap_content_info"]
        tst_info = TSTInfo.load(encap_content_info["content"])

        # Extract the genTime field from TSTInfo, type(genTime): <class 'datetime.datetime'>
        gen_time = tst_info["gen_time"].native

        return gen_time

    def _extract_signer_info(self, signer):
        self.log.debug(inspect.currentframe().f_code.co_name)
        signing_time = None

        for attr_set in [signer["signed_attrs"], signer["unsigned_attrs"]]:
            if attr_set:
                for attribute in attr_set:
                    attr_type = attribute["type"].dotted
                    if attr_type == "1.2.840.113549.1.9.5":  # signingTime
                        signing_time = attribute["values"][0].native
                        break
                    elif (
                        attr_type == "1.3.6.1.4.1.311.3.2.1"
                        or attr_type == "1.3.6.1.4.1.311.3.3.1"
                    ):  # microsoft_time_stamp_token
                        try:
                            ts_token = attribute["values"][0].native
                            signing_time = self._parse_microsoft_time_stamp(ts_token)
                            self.log.debug(
                                f"Signing Time from Microsoft Time Stamp Token: {signing_time}"
                            )
                        except Exception as e:
                            self.log.error(
                                f"Error parsing Microsoft Time Stamp Token: {e}"
                            )
                            self.log.error("Token structure:", attribute["values"][0])
                    elif attr_type == "1.2.840.113549.1.9.6":  # counterSignature
                        counter_sig_values = attribute["values"]
                        for counter_sig_value in counter_sig_values:
                            try:
                                counter_sig_info = cms.SignerInfo.load(
                                    counter_sig_value.native
                                )
                                cs_signed_attrs = counter_sig_info["signed_attrs"]
                                for cs_attr in cs_signed_attrs:
                                    cs_attr_type = cs_attr["type"].dotted
                                    if (
                                        cs_attr_type == "1.2.840.113549.1.9.5"
                                    ):  # signingTime
                                        signing_time = cs_attr["values"][0].native
                                        self.log.debug(
                                            "Signing Time (from countersignature):",
                                            signing_time,
                                        )
                                        break
                                if signing_time:
                                    break
                            except Exception as e:
                                self.log.error(
                                    f"Error processing countersignature: {e}"
                                )
                    if signing_time:
                        break
            if signing_time:
                break
        signer_serial_number = format(
            signer["sid"].native["serial_number"], "x"
        ).upper()
        grouped_serial_number = " ".join(
            [
                signer_serial_number[i : i + 2]
                for i in range(0, len(signer_serial_number), 2)
            ]
        )
        return PESigner(
            # this is to avoid duplicate _id with the Signer certificate used to sign as they are in the same ES index
            _id=format(signer["sid"].native["serial_number"], "x").upper()
            + signer["digest_algorithm"]["algorithm"].native,
            signer_serial_number=grouped_serial_number,
            signer_digest_algorithm=signer["digest_algorithm"]["algorithm"].native,
            signer_signature_algorithm=signer["signature_algorithm"][
                "algorithm"
            ].native,
            signing_time=(
                signing_time.strftime("%Y-%m-%d %H:%M:%S") if signing_time else None
            ),
            # "countersigners": extract_countersigners(signer), # TODO: Implement this
        )

    def _extract_signature_info(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        address = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        size = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].Size

        addr_8 = address + 8
        signature_data = bytes(
            self.pe.write()[addr_8 : addr_8 + size]  # noqa E203
        )  # Ensure this is a bytes object
        if pem.detect(signature_data):
            signature_data = pem.unarmor(signature_data)

        content_info = cms.ContentInfo.load(signature_data)
        signed_data = content_info["content"]

        certificates = signed_data["certificates"]
        signers = signed_data["signer_infos"]

        certificates_list = []
        for cert in certificates:
            cert_info = self._extract_certificate_info(cert.chosen.dump())
            certificates_list.append(cert_info)

        signer_info_list = []
        for signer in signers:
            signer_info = self._extract_signer_info(signer)
            signer_info_list.append(signer_info)

        return certificates_list, signer_info_list

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            if self._is_signed():
                certificates_list, signers_list = self._extract_signature_info()
                # self.export_to_elastic([PECodeSigning(certificates_list, signers_list)])
                self.export_to_elastic(certificates_list, Tag.PE_CERTIFICATE.value)
                self.export_to_elastic(signers_list, Tag.PE_SIGNER.value)
            return True
        except Exception as e:
            self.log.error(f"Error extracting PE Signature: {e}")
            return None