thlorenz / doctoc

📜 Generates table of contents for markdown files inside local git repository. Links are compatible with anchors generated by github or other sites.
https://www.npmjs.com/package/doctoc
MIT License
4.23k stars 480 forks source link

Killer #252

Open caledrummond90 opened 10 months ago

caledrummond90 commented 10 months ago

from datetime import datetime, timedelta, timezone from pathlib import Path

from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives.hashes import SHA256 from cryptography.hazmat.primitives.serialization import ( Encoding, NoEncryption, PrivateFormat, ) from cryptography.x509 import ( CertificateBuilder, DNSName, Name, NameAttribute, SubjectAlternativeName, random_serial_number, ) from cryptography.x509.oid import NameOID

https://cryptography.io/en/latest/x509/tutorial/#creating-a-self-signed-certificate

def generate_keys(): folder = Path(file).parent

key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend(),
)
(folder / "localhost.key").write_bytes(
    key.private_bytes(
        encoding=Encoding.PEM,
        format=PrivateFormat.TraditionalOpenSSL,
        encryption_algorithm=NoEncryption(),
    ),
)

subject = issuer = Name(
    [
        NameAttribute(NameOID.COUNTRY_NAME, "IE"),
        NameAttribute(NameOID.ORGANIZATION_NAME, "Scrapy"),
        NameAttribute(NameOID.COMMON_NAME, "localhost"),
    ]
)
cert = (
    CertificateBuilder()
    .subject_name(subject)
    .issuer_name(issuer)
    .public_key(key.public_key())
    .serial_number(random_serial_number())
    .not_valid_before(datetime.now(tz=timezone.utc))
    .not_valid_after(datetime.now(tz=timezone.utc) + timedelta(days=10))
    .add_extension(
        SubjectAlternativeName([DNSName("localhost")]),
        critical=False,
    )
    .sign(key, SHA256(), default_backend())
)
(folder / "localhost.crt").write_bytes(cert.public_bytes(Encoding.PEM))