marketplace/deployer_util/property_generator.py (31 lines of code) (raw):
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import base64
import json
import OpenSSL
import random
from password import GeneratePassword
def generate_password(config):
"""Generate password value for SchemaXPassword config."""
pw = GeneratePassword(config.length, config.include_symbols)
if config.base64:
pw = base64.b64encode(pw.encode('utf-8')).decode()
return pw
def generate_tls_certificate():
"""Generate TLS value, a json string."""
cert_seconds_to_expiry = 60 * 60 * 24 * 365 # one year
key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, 2048)
cert = OpenSSL.crypto.X509()
cert.get_subject().OU = 'GCP Marketplace K8s App Tools'
cert.get_subject().CN = 'Temporary Certificate'
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(cert_seconds_to_expiry)
cert.set_serial_number(random.getrandbits(64))
cert.set_issuer(cert.get_subject())
cert.set_pubkey(key)
cert.sign(key, 'sha256')
return json.dumps({
'private_key':
OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM,
key).decode('ascii'),
'certificate':
OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM,
cert).decode('ascii')
})