示例#1
0
    if (!$secret) {
        throw new RuntimeException("Cannot use MWCryptHKDF without a secret.");
    }
    // In HKDF, the context can be known to the attacker, but this will
    // keep simultaneous runs from producing the same output.
    $context = [microtime(), getmypid(), gethostname()];
    // Setup salt cache. Use APC, or fallback to the main cache if it isn't setup
    $cache = $services->getLocalServerObjectCache();
    if ($cache instanceof EmptyBagOStuff) {
        $cache = ObjectCache::getLocalClusterInstance();
    }
    return new CryptHKDF($secret, $config->get('HKDFAlgorithm'), $cache, $context, $services->getCryptRand());
}, 'MediaHandlerFactory' => function (MediaWikiServices $services) {
    return new MediaHandlerFactory($services->getMainConfig()->get('MediaHandlers'));
}, 'MimeAnalyzer' => function (MediaWikiServices $services) {
    return new MimeMagic(MimeMagic::applyDefaultParameters([], $services->getMainConfig()));
}, 'ProxyLookup' => function (MediaWikiServices $services) {
    $mainConfig = $services->getMainConfig();
    return new ProxyLookup($mainConfig->get('SquidServers'), $mainConfig->get('SquidServersNoPurge'));
}, 'Parser' => function (MediaWikiServices $services) {
    $conf = $services->getMainConfig()->get('ParserConf');
    return ObjectFactory::constructClassInstance($conf['class'], [$conf]);
}, 'LinkCache' => function (MediaWikiServices $services) {
    return new LinkCache($services->getTitleFormatter(), ObjectCache::getMainWANInstance());
}, 'LinkRendererFactory' => function (MediaWikiServices $services) {
    return new LinkRendererFactory($services->getTitleFormatter(), $services->getLinkCache());
}, 'LinkRenderer' => function (MediaWikiServices $services) {
    global $wgUser;
    if (defined('MW_NO_SESSION')) {
        return $services->getLinkRendererFactory()->create();
    } else {