class ZTSImpl implements KeyStore, ZTSHandler {

    String getProxyForPrincipalValue(final String proxyName, final String principalName,
                                     final String principalDomain, final String caller) {

        if (proxyName.isEmpty()) {
            return null;
        }

        // validate name matches our schema

        validate(proxyName, TYPE_ENTITY_NAME, principalDomain, caller);

        // we can only have a proxy for principal request if the original
        // caller is authorized for such operations

        if (!isAuthorizedProxyUser(authorizedProxyUsers, principalName)) {
            LOGGER.error("postAccessTokenRequest: Principal {} not authorized for proxy role token request", principalName);
            throw forbiddenError("postAccessTokenRequest: Principal: " + principalName
                    + " not authorized for proxy access token request", caller,
                    ZTSConsts.ZTS_UNKNOWN_DOMAIN, principalDomain);
        }

        return proxyName;
    }

    public  ZTSImpl();
    public  ZTSImpl(CloudStore implCloudStore, DataStore implDataStore);

}