Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
210 changes: 92 additions & 118 deletions bin/create_certificates.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,64 +13,65 @@ def create_rsa_private_key(key_size=2048, public_exponent=65537):
private_key = rsa.generate_private_key(
public_exponent=public_exponent,
key_size=key_size,
backend=backends.default_backend()
backend=backends.default_backend(),
)
return private_key


def create_self_signed_certificate(subject_name, private_key, days_valid=365):
subject = x509.Name([
x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, u"Test, Inc."),
x509.NameAttribute(x509.NameOID.COMMON_NAME, subject_name)
])
certificate = x509.CertificateBuilder().subject_name(
subject
).issuer_name(
subject
).public_key(
private_key.public_key()
).serial_number(
x509.random_serial_number()
).add_extension(
x509.BasicConstraints(ca=True, path_length=None), critical=True
).not_valid_before(
datetime.datetime.utcnow()
).not_valid_after(
datetime.datetime.utcnow() + datetime.timedelta(days=days_valid)
).sign(private_key, hashes.SHA256(), backends.default_backend())
subject = x509.Name(
[
x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, "Test, Inc."),
x509.NameAttribute(x509.NameOID.COMMON_NAME, subject_name),
]
)
certificate = (
x509.CertificateBuilder()
.subject_name(subject)
.issuer_name(subject)
.public_key(private_key.public_key())
.serial_number(x509.random_serial_number())
.add_extension(x509.BasicConstraints(ca=True, path_length=None), critical=True)
.not_valid_before(datetime.datetime.utcnow())
.not_valid_after(
datetime.datetime.utcnow() + datetime.timedelta(days=days_valid)
)
.sign(private_key, hashes.SHA256(), backends.default_backend())
)

return certificate


def create_certificate(subject_name,
private_key,
signing_certificate,
signing_key,
days_valid=365,
client_auth=False,
hostname=None):
subject = x509.Name([
x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, u"Test, Inc."),
x509.NameAttribute(x509.NameOID.COMMON_NAME, subject_name)
])
builder = x509.CertificateBuilder().subject_name(
subject
).issuer_name(
signing_certificate.subject
).public_key(
private_key.public_key()
).serial_number(
x509.random_serial_number()
).not_valid_before(
datetime.datetime.utcnow()
).not_valid_after(
datetime.datetime.utcnow() + datetime.timedelta(days=days_valid)
def create_certificate(
subject_name,
private_key,
signing_certificate,
signing_key,
days_valid=365,
client_auth=False,
hostname=None,
):
subject = x509.Name(
[
x509.NameAttribute(x509.NameOID.ORGANIZATION_NAME, "Test, Inc."),
x509.NameAttribute(x509.NameOID.COMMON_NAME, subject_name),
]
)
builder = (
x509.CertificateBuilder()
.subject_name(subject)
.issuer_name(signing_certificate.subject)
.public_key(private_key.public_key())
.serial_number(x509.random_serial_number())
.not_valid_before(datetime.datetime.utcnow())
.not_valid_after(
datetime.datetime.utcnow() + datetime.timedelta(days=days_valid)
)
)

if client_auth:
builder = builder.add_extension(
x509.ExtendedKeyUsage([x509.ExtendedKeyUsageOID.CLIENT_AUTH]),
critical=True
x509.ExtendedKeyUsage([x509.ExtendedKeyUsageOID.CLIENT_AUTH]), critical=True
)

if hostname:
Expand All @@ -79,135 +80,108 @@ def create_certificate(subject_name,
critical=False,
)

certificate = builder.sign(
signing_key,
hashes.SHA256(),
backends.default_backend()
)
certificate = builder.sign(signing_key, hashes.SHA256(), backends.default_backend())
return certificate


def main():
root_key = create_rsa_private_key()
root_certificate = create_self_signed_certificate(
u"Root CA",
root_key
)
root_certificate = create_self_signed_certificate("Root CA", root_key)

server_key = create_rsa_private_key()
server_certificate = create_certificate(
u"Server Certificate",
"Server Certificate",
server_key,
root_certificate,
root_key,
hostname=u"localhost"
hostname="localhost",
)

john_doe_client_key = create_rsa_private_key()
john_doe_client_certificate = create_certificate(
u"John Doe",
john_doe_client_key,
root_certificate,
root_key,
client_auth=True
"John Doe", john_doe_client_key, root_certificate, root_key, client_auth=True
)
jane_doe_client_key = create_rsa_private_key()
jane_doe_client_certificate = create_certificate(
u"Jane Doe",
jane_doe_client_key,
root_certificate,
root_key,
client_auth=True
"Jane Doe", jane_doe_client_key, root_certificate, root_key, client_auth=True
)
john_smith_client_key = create_rsa_private_key()
john_smith_client_certificate = create_certificate(
u"John Smith",
"John Smith",
john_smith_client_key,
root_certificate,
root_key,
client_auth=True
client_auth=True,
)
jane_smith_client_key = create_rsa_private_key()
jane_smith_client_certificate = create_certificate(
u"Jane Smith",
"Jane Smith",
jane_smith_client_key,
root_certificate,
root_key,
)

with open("root_key.pem", "wb") as f:
f.write(root_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
))
with open("root_certificate.pem", "wb") as f:
f.write(
root_certificate.public_bytes(
serialization.Encoding.PEM
root_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
)
with open("root_certificate.pem", "wb") as f:
f.write(root_certificate.public_bytes(serialization.Encoding.PEM))
with open("server_key.pem", "wb") as f:
f.write(server_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
))
with open("server_certificate.pem", "wb") as f:
f.write(
server_certificate.public_bytes(
serialization.Encoding.PEM
server_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
)
with open("server_certificate.pem", "wb") as f:
f.write(server_certificate.public_bytes(serialization.Encoding.PEM))
with open("client_key_john_doe.pem", "wb") as f:
f.write(john_doe_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
))
with open("client_certificate_john_doe.pem", "wb") as f:
f.write(
john_doe_client_certificate.public_bytes(
serialization.Encoding.PEM
john_doe_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
)
with open("client_certificate_john_doe.pem", "wb") as f:
f.write(john_doe_client_certificate.public_bytes(serialization.Encoding.PEM))
with open("client_key_jane_doe.pem", "wb") as f:
f.write(jane_doe_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
))
with open("client_certificate_jane_doe.pem", "wb") as f:
f.write(
jane_doe_client_certificate.public_bytes(
serialization.Encoding.PEM
jane_doe_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
)
with open("client_certificate_jane_doe.pem", "wb") as f:
f.write(jane_doe_client_certificate.public_bytes(serialization.Encoding.PEM))
with open("client_key_john_smith.pem", "wb") as f:
f.write(john_smith_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
))
with open("client_certificate_john_smith.pem", "wb") as f:
f.write(
john_smith_client_certificate.public_bytes(
serialization.Encoding.PEM
john_smith_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
)
with open("client_certificate_john_smith.pem", "wb") as f:
f.write(john_smith_client_certificate.public_bytes(serialization.Encoding.PEM))
with open("client_key_jane_smith.pem", "wb") as f:
f.write(jane_smith_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
))
with open("client_certificate_jane_smith.pem", "wb") as f:
f.write(
jane_smith_client_certificate.public_bytes(
serialization.Encoding.PEM
jane_smith_client_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
)
with open("client_certificate_jane_smith.pem", "wb") as f:
f.write(jane_smith_client_certificate.public_bytes(serialization.Encoding.PEM))


if __name__ == '__main__':
if __name__ == "__main__":
main()
2 changes: 1 addition & 1 deletion bin/run_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
from kmip.services.server import server


if __name__ == '__main__':
if __name__ == "__main__":
server.main()
27 changes: 6 additions & 21 deletions kmip/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,28 +24,13 @@
from kmip.pie.client import ProxyKmipClient as KmipClient

# Dynamically set __version__
version_path = os.path.join(
os.path.dirname(os.path.realpath(__file__)),
"version.py"
)
with open(version_path, 'r') as f:
m = re.search(
r"^__version__ = \"(\d+\.\d+\..*)\"$",
f.read(),
re.MULTILINE
)
version_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "version.py")
with open(version_path, "r") as f:
m = re.search(r"^__version__ = \"(\d+\.\d+\..*)\"$", f.read(), re.MULTILINE)
__version__ = m.group(1)


__all__ = [
'client',
'core',
'demos',
'enums',
'KmipClient',
'objects',
'services'
]
__all__ = ["client", "core", "demos", "enums", "KmipClient", "objects", "services"]


if sys.version_info[:2] == (2, 7):
Expand All @@ -54,7 +39,7 @@
"PyKMIP will drop support for Python 2.7 in a future release. "
"Please upgrade to a newer version of Python (3.5+ preferred)."
),
PendingDeprecationWarning
PendingDeprecationWarning,
)

if sys.version_info[:2] == (3, 4):
Expand All @@ -63,5 +48,5 @@
"PyKMIP will drop support for Python 3.4 in a future release. "
"Please upgrade to a newer version of Python (3.5+ preferred)."
),
PendingDeprecationWarning
PendingDeprecationWarning,
)
2 changes: 1 addition & 1 deletion kmip/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
# License for the specific language governing permissions and limitations
# under the License.

__all__ = ['factories', 'messages', 'repo']
__all__ = ["factories", "messages", "repo"]
Loading