/* * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */#include"internal/cryptlib.h"#include"internal/constant_time.h"#include"bn_local.h"#include<stdlib.h>#ifdef _WIN32#include<malloc.h># ifndef alloca# define alloca _alloca# endif#elif defined(__GNUC__)# ifndef alloca# define alloca(s) __builtin_alloca((s))# endif#elif defined(__sun)#include<alloca.h>#endif#include"rsaz_exp.h"#undef SPARC_T4_MONT#if defined(OPENSSL_BN_ASM_MONT) && (defined(__sparc__) || defined(__sparc))#include"crypto/sparc_arch.h"# define SPARC_T4_MONT#endif/* maximum precomputation table size for *variable* sliding windows */