36 lines
820 B
Python
36 lines
820 B
Python
|
|
from pinecrypt.server import const
|
|
from random import SystemRandom
|
|
from time import time_ns
|
|
|
|
random = SystemRandom()
|
|
|
|
MAPPING = dict(
|
|
common_name="CN",
|
|
organizational_unit_name="OU",
|
|
organization_name="O"
|
|
)
|
|
|
|
|
|
def cert_to_dn(cert):
|
|
d = []
|
|
for key, value in cert["tbs_certificate"]["subject"].native.items():
|
|
if not isinstance(value, list):
|
|
value = [value]
|
|
for comp in value:
|
|
d.append("%s=%s" % (MAPPING[key], comp))
|
|
return ", ".join(d)
|
|
|
|
|
|
def cn_to_dn(common_name, ou=None):
|
|
d = {"common_name": common_name}
|
|
if ou:
|
|
d["organizational_unit_name"] = ou
|
|
if const.AUTHORITY_ORGANIZATION:
|
|
d["organization_name"] = const.AUTHORITY_ORGANIZATION
|
|
return d
|
|
|
|
|
|
def generate_serial():
|
|
return time_ns() << 56 | random.randint(0, 2 ** 56 - 1)
|