Source code for aries_cloudagent.indy.util

"""Utilities for dealing with Indy conventions."""

from os import getenv, listdir, makedirs, urandom
from os.path import isdir, join
from pathlib import Path
from platform import system


[docs]async def generate_pr_nonce() -> str: """Generate a nonce for a proof request.""" # equivalent to indy.anoncreds.generate_nonce return str(int.from_bytes(urandom(10), "big"))
[docs]def indy_client_dir(subpath: str = None, create: bool = False) -> str: """ Return '/'-terminated subdirectory of indy-client directory. Args: subpath: subpath within indy-client structure create: whether to create subdirectory if absent """ home = Path.home() target_dir = join( home, "Documents" if isdir(join(home, "Documents")) else getenv("EXTERNAL_STORAGE", "") if system() == "Linux" else "", ".indy_client", subpath if subpath else "", "", # set trailing separator ) if create: makedirs(target_dir, exist_ok=True) return target_dir
[docs]def tails_path(rev_reg_id: str) -> str: """Return path to indy tails file for input rev reg id.""" tails_dir = indy_client_dir(join("tails", rev_reg_id), create=False) if not isdir(tails_dir): return None content = listdir(tails_dir) if len(content) != 1: return None return join(tails_dir, content[0])