/* * This file is part of ViaProxy - https://github.com/RaphiMC/ViaProxy * Copyright (C) 2023 RK_01/RaphiMC and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package net.raphimc.viaproxy.injection.transformer; import com.mojang.authlib.yggdrasil.ServicesKeyInfo; import com.mojang.authlib.yggdrasil.YggdrasilServicesKeyInfo; import net.lenni0451.classtransform.annotations.CTransformer; import net.lenni0451.classtransform.annotations.injection.COverride; import net.lenni0451.reflect.stream.RStream; import net.raphimc.netminecraft.netty.crypto.CryptUtil; import java.security.PublicKey; @CTransformer(YggdrasilServicesKeyInfo.class) public abstract class YggdrasilServicesKeyInfoTransformer { @COverride public static ServicesKeyInfo createFromResources() { try { return RStream.of(YggdrasilServicesKeyInfo.class).constructors().by(PublicKey.class).newInstance(CryptUtil.MOJANG_PUBLIC_KEY); } catch (Throwable e) { throw new AssertionError("Missing/invalid yggdrasil public key!", e); } } }