in jsign-core/src/main/java/net/jsign/YubiKey.java [63:112]
static File getYkcs11Library() {
String osname = System.getProperty("os.name");
String arch = System.getProperty("sun.arch.data.model");
if (osname.contains("Windows")) {
String programfiles;
if ("32".equals(arch) && System.getenv("ProgramFiles(x86)") != null) {
programfiles = System.getenv("ProgramFiles(x86)");
} else {
programfiles = System.getenv("ProgramFiles");
}
File libykcs11 = new File(programfiles + "/Yubico/Yubico PIV Tool/bin/libykcs11.dll");
if (!System.getenv("PATH").contains("Yubico PIV Tool\\bin")) {
System.out.println("WARNING: The YubiKey library path (" + libykcs11.getParentFile().getAbsolutePath().replace('/', '\\') + ") is missing from the PATH environment variable");
}
return libykcs11;
} else if (osname.contains("Mac")) {
return new File("/usr/local/lib/libykcs11.dylib");
} else {
// Linux
List<String> paths = new ArrayList<>();
if ("32".equals(arch)) {
paths.add("/usr/lib/libykcs11.so");
paths.add("/usr/lib/libykcs11.so.1");
paths.add("/usr/lib/i386-linux-gnu/libykcs11.so");
paths.add("/usr/lib/arm-linux-gnueabi/libykcs11.so");
paths.add("/usr/lib/arm-linux-gnueabihf/libykcs11.so");
} else {
paths.add("/usr/lib64/libykcs11.so");
paths.add("/usr/lib64/libykcs11.so.1");
paths.add("/usr/lib/x86_64-linux-gnu/libykcs11.so");
paths.add("/usr/lib/aarch64-linux-gnu/libykcs11.so");
paths.add("/usr/lib/mips64el-linux-gnuabi64/libykcs11.so");
paths.add("/usr/lib/riscv64-linux-gnu/libykcs11.so");
}
for (String path : paths) {
File libykcs11 = new File(path);
if (libykcs11.exists()) {
return libykcs11;
}
}
return new File("/usr/local/lib/libykcs11.so");
}
}