mirror of
https://github.com/selfxyz/self.git
synced 2026-01-11 07:38:00 -05:00
37 lines
2.6 KiB
Python
37 lines
2.6 KiB
Python
from Cryptodome.PublicKey import RSA
|
|
from Cryptodome.Signature import pkcs1_15
|
|
from Cryptodome.Hash import SHA256
|
|
from Cryptodome.Util.asn1 import DerSequence
|
|
from Cryptodome.PublicKey import RSA
|
|
from Cryptodome.Util.number import long_to_bytes
|
|
from binascii import unhexlify
|
|
|
|
# Assuming your eContent, publicKey and encryptedDigest are byte strings
|
|
sodFile_eContent = unhexlify('3166301506092a864886f70d01090331080606678108010101301c06092a864886f70d010905310f170d3139313231363137323233385a302f06092a864886f70d01090431220420b0603bd5835259f8697d25b19ea2892b0d2773063be5516e314bffb89b497456')
|
|
sodFile_encryptedDigest = unhexlify('5a78c5d241463136f26255cb75fe2de2dbaeda10ef7c7eea2f6b635940e079b04d6bfec592ef1293366076382e2a9543bd84a973c66e6c0715e468738c5d802c98cd81aa3d338a4e338e93e219412835456c4a0208587c360a5b8d4c2d09d069671e4175104c69c8ad2dadc6dea40729463dd8543392420406c08a020dadcb14ec78fad95ccef0cbe06a5416c45a9abc31c38d88190cb650a6536f0357bb6a04c59817a889d2eee4128b7757b2f7b52e572b030ef7b362dbad20de3a2a2c488134042fb8b18a254d2332cde4996e768da37863419a2760b9f394de395425db5b8276a24b60f02a0b595bf81a28dc3bd7584863641a75504b0df267467de87516')
|
|
publicKey = """
|
|
-----BEGIN PUBLIC KEY-----
|
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3xG6BteTegWeyOeRarD7CwlKm57PmOl+2mg0ojB18gMAcqPHaI+FBEr2rLX1wr7fbCZFTZkjK5i7RW5fjOMhSIiLyKEU3rH6oDkzb2eDN9Fit0I2jLOJj71Soyws6SRP0dAtn6vNkmVIQYy8CgX6zVrE/nozAenKU9HZ48xElnVVMb0oFf1Q217r34dTQ51LWZsM+dWO7/Q88rP8JtXGZtIWMhI/ycPmzUmApnXtVNlQmwD+ld6/MPsV73tFirZKLJ5ib8BQRR79n7Yf9sqepGb1ryG2uhlmy9yaoDjy6rZ9XtS2iGzQj2r8Uh7WPa6MwNWWg5bCFu9lsO0nGaeEZNzeZ+mpoQIDAQAB
|
|
-----END PUBLIC KEY-----
|
|
"""
|
|
|
|
modulus = int('df11ba06d7937a059e8ce7916ab0fb0b094a9b9ecf98e97eda6834a23075f2030072a3c7868f85045af2acb5f5c2bedf6c25614d99232b98bb456e5f8ce32148882f2281537ac7aa80e4cdb79e0cdf4627cd08da32ce263ef54a26c2ca3493f1d02d9fabcd89952058cb0085fa356b13f9e2cc1e9ca4f47678dc49129d55531bd2817dd436d5aef778d4d439d2d659b0cf9d58eeff43ce2cff26d5c66d23164123fc9c3e6cd4902e9d7b54d9509b03f95debfc3fb15ef7b458ac64a2c6e26bf010451eff67ed87f6ca7a946dd7ac86dea2566cbdc9aa0e3cbaad9f5ed4b6886cd08f6baf1487b58f6ba33075968396c216ef65b0eb49c6978464dcde99f9a9a1', 16)
|
|
public_exponent = int('10001', 16)
|
|
|
|
# Parsing the public key
|
|
# public_key = RSA.importKey(publicKey)
|
|
public_key = RSA.construct((modulus, public_exponent))
|
|
|
|
# print("public_key: ", public_key.export_key()),
|
|
|
|
# SHA-256 hash of the eContent
|
|
hash_obj = SHA256.new(sodFile_eContent)
|
|
|
|
# print("hash_obj: ", hash_obj.hexdigest())
|
|
|
|
# Signature verification
|
|
try:
|
|
valid = pkcs1_15.new(public_key).verify(hash_obj, sodFile_encryptedDigest)
|
|
print("The signature is valid.")
|
|
except (ValueError, TypeError):
|
|
print("The signature is not valid.") |