23 lines
602 B
Python
23 lines
602 B
Python
from OpenSSL import crypto
|
|
|
|
|
|
def gen_priv_key():
|
|
key = crypto.PKey()
|
|
key.generate_key(crypto.TYPE_RSA, 2048)
|
|
return crypto.dump_privatekey(crypto.FILETYPE_PEM, key).decode("utf-8")
|
|
|
|
|
|
def parse_priv_key(priv_key: str) -> crypto.PKey:
|
|
return crypto.load_privatekey(crypto.FILETYPE_PEM, priv_key)
|
|
|
|
|
|
def gen_csr(priv_key: str, cn: str) -> str:
|
|
priv_key = parse_priv_key(priv_key)
|
|
|
|
req = crypto.X509Req()
|
|
req.get_subject().CN = cn
|
|
req.set_pubkey(priv_key)
|
|
req.sign(priv_key, "sha256")
|
|
|
|
return crypto.dump_certificate_request(crypto.FILETYPE_PEM, req).decode("utf-8")
|