/******************************************************************************
* Copyright(c) 2012, Intel Corp.                                             
* Developers and authors:                                                    
* Shay Gueron (1, 2), and Vlad Krasnov (1)                                   
* (1) Intel Corporation, Israel Development Center, Haifa, Israel                               
* (2) University of Haifa, Israel                                              
******************************************************************************
* LICENSE:                                                                
* This submission to OpenSSL is to be made available under the OpenSSL  
* license, and only to the OpenSSL project, in order to allow integration    
* into the publicly distributed code. 
* The use of this code, or portions of this code, or concepts embedded in
* this code, or modification of this code and/or algorithm(s) in it, or the
* use of this code for any other purpose than stated above, requires special
* licensing.                                                                  
******************************************************************************
* DISCLAIMER:                                                                
* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS AND THE COPYRIGHT OWNERS     
* ``AS IS''. ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS OR THE COPYRIGHT
* OWNERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF    
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS   
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN    
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)    
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
* POSSIBILITY OF SUCH DAMAGE.                                                
******************************************************************************/

#ifndef RSAZ_EXP_H
#define RSAZ_EXP_H

#include <openssl/bn.h>

void RSAZ_1024_mod_exp_avx2(BN_ULONG result[16],
	const BN_ULONG base_norm[16], const BN_ULONG exponent[16],
	const BN_ULONG m_norm[16], const BN_ULONG RR[16], BN_ULONG k0);
int rsaz_avx2_eligible();

void RSAZ_512_mod_exp(BN_ULONG result[8],
	const BN_ULONG base_norm[8], const BN_ULONG exponent[8],
	const BN_ULONG m_norm[8], BN_ULONG k0, const BN_ULONG RR[8]);
#endif
