Pyopenssl to verify the file signature

前端 未结 1 1639
一整个雨季
一整个雨季 2020-12-20 02:04

I want to verify the downloaded file\'s signature and cert using pyopenssl, but the documentation is not clear and Google is of no help.

I have a root CA cert in use

相关标签:
1条回答
  • 2020-12-20 02:36

    I'm still learning about OpenSSL in general, let alone PyOpenSSL. Having said that, I was able to verify a file (your second command) in PyOpenSSL with the following:

    from OpenSSL.crypto import load_publickey, FILETYPE_PEM, verify, X509
    
    with open(file_to_verify, 'rb') as f:
        file_data = f.read()
    
    with open(signature_filename, 'rb') as f:
        signature = f.read()
    
    with open(public_key_filename) as f:
        public_key_data = f.read()
    
    # load in the publickey file, in my case, I had a .pem file.
    # If the file starts with
    #     "-----BEGIN PUBLIC KEY-----"
    # then it is of the PEM type. The only other FILETYPE is
    # "FILETYPE_ASN1".
    pkey = load_publickey(FILETYPE_PEM, public_key_data)
    
    # the verify() function expects that the public key is
    # wrapped in an X.509 certificate
    x509 = X509()
    x509.set_pubkey(pkey)
    
    # perform the actual verification. We need the X509 object,
    # the signature to verify, the file to verify, and the
    # algorithm used when signing.
    verify(x509, signature, file_data, 'sha256')
    

    The verify() function will return None in the event that verification is successful (i.e. it does nothing) or it will raise an Exception if something went wrong.

    0 讨论(0)
提交回复
热议问题