SignatureValidator.java

net.minecraft.util.SignatureValidator

信息

  • 全限定名:net.minecraft.util.SignatureValidator
  • 类型:public interface
  • 包:net.minecraft.util
  • 源码路径:src/main/java/net/minecraft/util/SignatureValidator.java
  • 起始行号:L14
  • 职责:

    TODO

字段/常量

  • NO_VALIDATION

    • 类型: SignatureValidator
    • 修饰符: package-private
    • 源码定位: L15
    • 说明:

      TODO

  • LOGGER

    • 类型: Logger
    • 修饰符: package-private
    • 源码定位: L16
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

boolean validate(SignatureUpdater updater, byte[] signature) @ L18

  • 方法名:validate
  • 源码定位:L18
  • 返回类型:boolean
  • 修饰符:package-private

参数:

  • updater: SignatureUpdater
  • signature: byte[]

说明:

TODO

default boolean validate(byte[] payload, byte[] signature) @ L20

  • 方法名:validate
  • 源码定位:L20
  • 返回类型:boolean
  • 修饰符:default

参数:

  • payload: byte[]
  • signature: byte[]

说明:

TODO

private static boolean verifySignature(SignatureUpdater updater, byte[] signature, Signature verifier) @ L24

  • 方法名:verifySignature
  • 源码定位:L24
  • 返回类型:boolean
  • 修饰符:private static

参数:

  • updater: SignatureUpdater
  • signature: byte[]
  • verifier: Signature

说明:

TODO

static SignatureValidator from(PublicKey publicKey, String algorithm) @ L29

  • 方法名:from
  • 源码定位:L29
  • 返回类型:SignatureValidator
  • 修饰符:static

参数:

  • publicKey: PublicKey
  • algorithm: String

说明:

TODO

static SignatureValidator from(ServicesKeySet keySet, ServicesKeyType type) @ L42

  • 方法名:from
  • 源码定位:L42
  • 返回类型:SignatureValidator
  • 修饰符:static

参数:

  • keySet: ServicesKeySet
  • type: ServicesKeyType

说明:

TODO

代码

public interface SignatureValidator {
    SignatureValidator NO_VALIDATION = (payload, signature) -> true;
    Logger LOGGER = LogUtils.getLogger();
 
    boolean validate(SignatureUpdater updater, byte[] signature);
 
    default boolean validate(byte[] payload, byte[] signature) {
        return this.validate(output -> output.update(payload), signature);
    }
 
    private static boolean verifySignature(SignatureUpdater updater, byte[] signature, Signature verifier) throws SignatureException {
        updater.update(verifier::update);
        return verifier.verify(signature);
    }
 
    static SignatureValidator from(PublicKey publicKey, String algorithm) {
        return (updater, signature) -> {
            try {
                Signature verifier = Signature.getInstance(algorithm);
                verifier.initVerify(publicKey);
                return verifySignature(updater, signature, verifier);
            } catch (Exception var5) {
                LOGGER.error("Failed to verify signature", (Throwable)var5);
                return false;
            }
        };
    }
 
    static @Nullable SignatureValidator from(ServicesKeySet keySet, ServicesKeyType type) {
        Collection<ServicesKeyInfo> keys = keySet.keys(type);
        return keys.isEmpty() ? null : (updater, signature) -> keys.stream().anyMatch(key -> {
            Signature verifier = key.signature();
 
            try {
                return verifySignature(updater, signature, verifier);
            } catch (SignatureException var5) {
                LOGGER.error("Failed to verify Services signature", (Throwable)var5);
                return false;
            }
        });
    }
}

引用的其他类