in keyper/__init__.py [0:0]
def _get_value(self, value_name: str) -> Optional[str]:
log.debug("Getting certificate value: %s", value_name)
get_cert_command = [
"openssl",
"pkcs12",
"-in",
self.path,
"-nokeys",
"-passin",
f"pass:{self.password}",
]
try:
with subprocess.Popen(
get_cert_command,
universal_newlines=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
) as get_cert:
openssl_command = ["openssl", "x509", "-noout", f"-{value_name}"]
with subprocess.Popen(
openssl_command,
universal_newlines=True,
stdin=get_cert.stdout,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
) as openssl:
if openssl.stdout is None:
raise subprocess.CalledProcessError(1, openssl_command, None, None)
value = openssl.stdout.read()
except subprocess.CalledProcessError as ex:
log.error("Failed to get value: %s", ex)
return None
value = value.strip()
log.debug("Full value: %s", value)
return value