xref: /openssl/crypto/ec/ecp_ppc.c (revision 3d178db7)
1 /*
2  * Copyright 2009-2021 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the Apache License 2.0 (the "License").  You may not use
5  * this file except in compliance with the License.  You can obtain a copy
6  * in the file LICENSE in the source distribution or at
7  * https://www.openssl.org/source/license.html
8  */
9 
10 #include "internal/cryptlib.h"
11 #include "crypto/ppc_arch.h"
12 #include "ec_local.h"
13 
14 void ecp_nistz256_mul_mont(unsigned long res[4], const unsigned long a[4],
15                            const unsigned long b[4]);
16 
17 void ecp_nistz256_to_mont(unsigned long res[4], const unsigned long in[4]);
ecp_nistz256_to_mont(unsigned long res[4],const unsigned long in[4])18 void ecp_nistz256_to_mont(unsigned long res[4], const unsigned long in[4])
19 {
20     static const unsigned long RR[] = { 0x0000000000000003U,
21                                         0xfffffffbffffffffU,
22                                         0xfffffffffffffffeU,
23                                         0x00000004fffffffdU };
24 
25     ecp_nistz256_mul_mont(res, in, RR);
26 }
27 
28 void ecp_nistz256_from_mont(unsigned long res[4], const unsigned long in[4]);
ecp_nistz256_from_mont(unsigned long res[4],const unsigned long in[4])29 void ecp_nistz256_from_mont(unsigned long res[4], const unsigned long in[4])
30 {
31     static const unsigned long one[] = { 1, 0, 0, 0 };
32 
33     ecp_nistz256_mul_mont(res, in, one);
34 }
35