Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
1.4 kB
2
Indexable
Never
from OpenSSL import crypto

def load_private_keys(file):
    with open(file, 'r') as f:
        keys = f.read().split('-----END RSA PRIVATE KEY-----')
        keys = [k + '-----END RSA PRIVATE KEY-----' for k in keys[:-1]]  # reattach the end marker
    return [crypto.load_privatekey(crypto.FILETYPE_PEM, k) for k in keys]

def load_certificate(file):
    with open(file, 'rb') as f:
        cert = crypto.load_certificate(crypto.FILETYPE_PEM, f.read())
    return cert

def find_matching_key(cert, private_keys):
    cert_public_key = crypto.dump_publickey(crypto.FILETYPE_PEM, cert.get_pubkey())
    for i, key in enumerate(private_keys):
        key_public_key = crypto.dump_publickey(crypto.FILETYPE_PEM, key)
        if key_public_key == cert_public_key:
            return i, key
    return None, None

# replace these with your actual file paths
certificate_file = '/path/to/certificate.pem'
private_keys_file = '/path/to/private_keys.pem'

certificate = load_certificate(certificate_file)
private_keys = load_private_keys(private_keys_file)

index, matching_key = find_matching_key(certificate, private_keys)

if matching_key is not None:
    print(f'Matching key found at index {index}:')
    print(crypto.dump_privatekey(crypto.FILETYPE_PEM, matching_key).decode())
else:
    print('No matching key found.')