aboutsummaryrefslogtreecommitdiff
path: root/ext/ipp/sources/ippcp/src/pcpeccpdpca.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ipp/sources/ippcp/src/pcpeccpdpca.c')
-rw-r--r--ext/ipp/sources/ippcp/src/pcpeccpdpca.c453
1 files changed, 0 insertions, 453 deletions
diff --git a/ext/ipp/sources/ippcp/src/pcpeccpdpca.c b/ext/ipp/sources/ippcp/src/pcpeccpdpca.c
deleted file mode 100644
index 8010137..0000000
--- a/ext/ipp/sources/ippcp/src/pcpeccpdpca.c
+++ /dev/null
@@ -1,453 +0,0 @@
-/*############################################################################
- # Copyright 1999-2018 Intel Corporation
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- ############################################################################*/
-
-/*
-//
-// Purpose:
-// Cryptography Primitive.
-// EC over Prime Finite Field (setup/retrieve domain parameters)
-//
-// Contents:
-// ippsECCPSet()
-// ippsECCPSetStd()
-// ippsECCPSetStd128r1()
-// ippsECCPSetStd128r2()
-// ippsECCPSetStd192r1()
-// ippsECCPSetStd224r1()
-// ippsECCPSetStd256r1()
-// ippsECCPSetStd384r1()
-// ippsECCPSetStd521r1()
-// ippsECCPSetStdSM2()
-//
-// ippsECCPGet()
-// ippsECCPGetBitSizeOrder()
-//
-//
-*/
-
-#include "owndefs.h"
-#include "owncp.h"
-#include "pcpeccp.h"
-
-
-/*F*
-// Name: ippsECCPSet
-//
-// Purpose: Set EC Domain Parameters.
-//
-// Returns: Reason:
-// ippStsNullPtrErr NULL == pPrime
-// NULL == pA
-// NULL == pB
-// NULL == pGX
-// NULL == pGY
-// NULL == pOrder
-// NULL == pECC
-//
-// ippStsContextMatchErr illegal pPrime->idCtx
-// illegal pA->idCtx
-// illegal pB->idCtx
-// illegal pGX->idCtx
-// illegal pGY->idCtx
-// illegal pOrder->idCtx
-// illegal pECC->idCtx
-//
-// ippStsRangeErr not enough room for:
-// pPrime
-// pA, pB,
-// pGX,pGY
-// pOrder
-//
-// ippStsRangeErr 0>= cofactor
-//
-// ippStsNoErr no errors
-//
-// Parameters:
-// pPrime pointer to the prime (specify FG(p))
-// pA pointer to the A coefficient of EC equation
-// pB pointer to the B coefficient of EC equation
-// pGX,pGY pointer to the Base Point (x and y coordinates) of EC
-// pOrder pointer to the Base Point order
-// cofactor cofactor value
-// pECC pointer to the ECC context
-//
-*F*/
-IppStatus ECCPSetDP(const IppsGFpMethod* method,
- int pLen, const BNU_CHUNK_T* pP,
- int aLen, const BNU_CHUNK_T* pA,
- int bLen, const BNU_CHUNK_T* pB,
- int xLen, const BNU_CHUNK_T* pX,
- int yLen, const BNU_CHUNK_T* pY,
- int rLen, const BNU_CHUNK_T* pR,
- BNU_CHUNK_T h,
- IppsGFpECState* pEC)
-{
- IPP_BADARG_RET(!ECP_TEST_ID(pEC), ippStsContextMatchErr);
-
- {
- IppsGFpState * pGF = ECP_GFP(pEC);
-
- IppStatus sts = ippStsNoErr;
- IppsBigNumState P, H;
- int primeBitSize = BITSIZE_BNU(pP, pLen);
- //cpConstructBN(&P, pLen, (BNU_CHUNK_T*)pP, NULL);
- //sts = cpGFpSetGFp(&P, primeBitSize, method, pGF);
- cpGFpSetGFp(pP, primeBitSize, method, pGF);
-
- if(ippStsNoErr==sts) {
- gsModEngine* pGFE = GFP_PMA(pGF);
-
- do {
- int elemLen = GFP_FELEN(pGFE);
- IppsGFpElement elmA, elmB;
-
- /* convert A ans B coeffs into GF elements */
- cpGFpElementConstruct(&elmA, cpGFpGetPool(1, pGFE), elemLen);
- cpGFpElementConstruct(&elmB, cpGFpGetPool(1, pGFE), elemLen);
- sts = ippsGFpSetElement((Ipp32u*)pA, BITS2WORD32_SIZE(BITSIZE_BNU(pA,aLen)), &elmA, pGF);
- if(ippStsNoErr!=sts) break;
- sts = ippsGFpSetElement((Ipp32u*)pB, BITS2WORD32_SIZE(BITSIZE_BNU(pB,bLen)), &elmB, pGF);
- if(ippStsNoErr!=sts) break;
- /* and set EC */
- sts = ippsGFpECSet(&elmA, &elmB, pEC);
- if(ippStsNoErr!=sts) break;
-
- /* convert GX ans GY coeffs into GF elements */
- cpConstructBN(&P, rLen, (BNU_CHUNK_T*)pR, NULL);
- cpConstructBN(&H, 1, &h, NULL);
- sts = ippsGFpSetElement((Ipp32u*)pX, BITS2WORD32_SIZE(BITSIZE_BNU(pX,xLen)), &elmA, pGF);
- if(ippStsNoErr!=sts) break;
- sts = ippsGFpSetElement((Ipp32u*)pY, BITS2WORD32_SIZE(BITSIZE_BNU(pY,yLen)), &elmB, pGF);
- if(ippStsNoErr!=sts) break;
- /* and init EC subgroup */
- sts = ippsGFpECSetSubgroup(&elmA, &elmB, &P, &H, pEC);
- } while(0);
-
- cpGFpReleasePool(2, pGFE);
- }
-
- return sts;
- }
-}
-
-IPPFUN(IppStatus, ippsECCPSet, (const IppsBigNumState* pPrime,
- const IppsBigNumState* pA, const IppsBigNumState* pB,
- const IppsBigNumState* pGX,const IppsBigNumState* pGY,
- const IppsBigNumState* pOrder, int cofactor,
- IppsECCPState* pEC))
-{
- /* test pEC */
- IPP_BAD_PTR1_RET(pEC);
- /* use aligned EC context */
- pEC = (IppsGFpECState*)( IPP_ALIGNED_PTR(pEC, ECGFP_ALIGNMENT) );
- IPP_BADARG_RET(!ECP_TEST_ID(pEC), ippStsContextMatchErr);
-
- /* test pPrime */
- IPP_BAD_PTR1_RET(pPrime);
- pPrime = (IppsBigNumState*)( IPP_ALIGNED_PTR(pPrime, BN_ALIGNMENT) );
- IPP_BADARG_RET(!BN_VALID_ID(pPrime), ippStsContextMatchErr);
- IPP_BADARG_RET((cpBN_bitsize(pPrime)>GFP_FEBITLEN(GFP_PMA(ECP_GFP(pEC)))), ippStsRangeErr);
-
- /* test pA and pB */
- IPP_BAD_PTR2_RET(pA,pB);
- pA = (IppsBigNumState*)( IPP_ALIGNED_PTR(pA, ALIGN_VAL) );
- pB = (IppsBigNumState*)( IPP_ALIGNED_PTR(pB, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pA), ippStsContextMatchErr);
- IPP_BADARG_RET(!BN_VALID_ID(pB), ippStsContextMatchErr);
- //IPP_BADARG_RET((cpBN_bitsize(pA)>GFP_FEBITLEN(ECP_GFP(pEC))), ippStsRangeErr);
- //IPP_BADARG_RET((cpBN_bitsize(pB)>GFP_FEBITLEN(ECP_GFP(pEC))), ippStsRangeErr);
- IPP_BADARG_RET(BN_NEGATIVE(pA) || 0<=cpBN_cmp(pA,pPrime), ippStsRangeErr);
- IPP_BADARG_RET(BN_NEGATIVE(pB) || 0<=cpBN_cmp(pB,pPrime), ippStsRangeErr);
-
- /* test pG and pGorder pointers */
- IPP_BAD_PTR3_RET(pGX,pGY, pOrder);
- pGX = (IppsBigNumState*)( IPP_ALIGNED_PTR(pGX, ALIGN_VAL) );
- pGY = (IppsBigNumState*)( IPP_ALIGNED_PTR(pGY, ALIGN_VAL) );
- pOrder = (IppsBigNumState*)( IPP_ALIGNED_PTR(pOrder, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pGX), ippStsContextMatchErr);
- IPP_BADARG_RET(!BN_VALID_ID(pGY), ippStsContextMatchErr);
- IPP_BADARG_RET(!BN_VALID_ID(pOrder), ippStsContextMatchErr);
- //IPP_BADARG_RET((cpBN_bitsize(pGX)>GFP_FEBITLEN(ECP_GFP(pEC))), ippStsRangeErr);
- //IPP_BADARG_RET((cpBN_bitsize(pGY)>GFP_FEBITLEN(ECP_GFP(pEC))), ippStsRangeErr);
- IPP_BADARG_RET(BN_NEGATIVE(pGX) || 0<=cpBN_cmp(pGX,pPrime), ippStsRangeErr);
- IPP_BADARG_RET(BN_NEGATIVE(pGY) || 0<=cpBN_cmp(pGY,pPrime), ippStsRangeErr);
- IPP_BADARG_RET((cpBN_bitsize(pOrder)>ECP_ORDBITSIZE(pEC)), ippStsRangeErr);
-
- /* test cofactor */
- IPP_BADARG_RET(!(0<cofactor), ippStsRangeErr);
-
- return ECCPSetDP(ippsGFpMethod_pArb(),
- BN_SIZE(pPrime), BN_NUMBER(pPrime),
- BN_SIZE(pA), BN_NUMBER(pA),
- BN_SIZE(pB), BN_NUMBER(pB),
- BN_SIZE(pGX), BN_NUMBER(pGX),
- BN_SIZE(pGY), BN_NUMBER(pGY),
- BN_SIZE(pOrder), BN_NUMBER(pOrder),
- (BNU_CHUNK_T)cofactor,
- pEC);
-}
-
-
-/*F*
-// Name: ippsECCPSetStd
-//
-// Purpose: Set Standard ECC Domain Parameter.
-//
-// Returns: Reason:
-// ippStsNullPtrErr NULL == pECC
-//
-// ippStsContextMatchErr illegal pECC->idCtx
-//
-// ippStsECCInvalidFlagErr invalid flag
-//
-// ippStsNoErr no errors
-//
-// Parameters:
-// flag specify standard ECC parameter(s) to be setup
-// pECC pointer to the ECC context
-//
-*F*/
-IPPFUN(IppStatus, ippsECCPSetStd, (IppECCType flag, IppsECCPState* pEC))
-{
- /* test pEC */
- IPP_BAD_PTR1_RET(pEC);
- /* use aligned EC context */
- pEC = (IppsGFpECState*)( IPP_ALIGNED_PTR(pEC, ECGFP_ALIGNMENT) );
-
- switch(flag) {
- case IppECCPStd112r1:
- return ECCPSetDP(ippsGFpMethod_pArb(),
- BITS_BNU_CHUNK(112), secp112r1_p,
- BITS_BNU_CHUNK(112), secp112r1_a,
- BITS_BNU_CHUNK(112), secp112r1_b,
- BITS_BNU_CHUNK(112), secp112r1_gx,
- BITS_BNU_CHUNK(112), secp112r1_gy,
- BITS_BNU_CHUNK(112), secp112r1_r,
- secp112r1_h, pEC);
-
- case IppECCPStd112r2:
- return ECCPSetDP(ippsGFpMethod_pArb(),
- BITS_BNU_CHUNK(112), secp112r2_p,
- BITS_BNU_CHUNK(112), secp112r2_a,
- BITS_BNU_CHUNK(112), secp112r2_b,
- BITS_BNU_CHUNK(112), secp112r2_gx,
- BITS_BNU_CHUNK(112), secp112r2_gy,
- BITS_BNU_CHUNK(112), secp112r2_r,
- secp112r2_h, pEC);
-
- case IppECCPStd128r1: return ippsECCPSetStd128r1(pEC);
-
- case IppECCPStd128r2: return ippsECCPSetStd128r2(pEC);
-
- case IppECCPStd160r1:
- return ECCPSetDP(ippsGFpMethod_pArb(),
- BITS_BNU_CHUNK(160), secp160r1_p,
- BITS_BNU_CHUNK(160), secp160r1_a,
- BITS_BNU_CHUNK(160), secp160r1_b,
- BITS_BNU_CHUNK(160), secp160r1_gx,
- BITS_BNU_CHUNK(160), secp160r1_gy,
- BITS_BNU_CHUNK(161), secp160r1_r,
- secp160r1_h, pEC);
-
- case IppECCPStd160r2:
- return ECCPSetDP(ippsGFpMethod_pArb(),
- BITS_BNU_CHUNK(160), secp160r2_p,
- BITS_BNU_CHUNK(160), secp160r2_a,
- BITS_BNU_CHUNK(160), secp160r2_b,
- BITS_BNU_CHUNK(160), secp160r2_gx,
- BITS_BNU_CHUNK(160), secp160r2_gy,
- BITS_BNU_CHUNK(161), secp160r2_r,
- secp160r2_h, pEC);
-
- case IppECCPStd192r1: return ippsECCPSetStd192r1(pEC);
-
- case IppECCPStd224r1: return ippsECCPSetStd224r1(pEC);
-
- case IppECCPStd256r1: return ippsECCPSetStd256r1(pEC);
-
- case IppECCPStd384r1: return ippsECCPSetStd384r1(pEC);
-
- case IppECCPStd521r1: return ippsECCPSetStd521r1(pEC);
-
- case ippEC_TPM_BN_P256:
- return ECCPSetDP(ippsGFpMethod_pArb(),
- BITS_BNU_CHUNK(256), tpmBN_p256p_p,
- BITS_BNU_CHUNK(32), tpmBN_p256p_a,
- BITS_BNU_CHUNK(32), tpmBN_p256p_b,
- BITS_BNU_CHUNK(32), tpmBN_p256p_gx,
- BITS_BNU_CHUNK(32), tpmBN_p256p_gy,
- BITS_BNU_CHUNK(256), tpmBN_p256p_r,
- tpmBN_p256p_h, pEC);
-
- case ippECPstdSM2: return ippsECCPSetStdSM2(pEC);
-
- default:
- return ippStsECCInvalidFlagErr;
- }
-}
-
-
-/*F*
-// Name: ippsECCPGet
-//
-// Purpose: Retrieve ECC Domain Parameter.
-//
-// Returns: Reason:
-// ippStsNullPtrErr NULL == pPrime
-// NULL == pA
-// NULL == pB
-// NULL == pGX
-// NULL == pGY
-// NULL == pOrder
-// NULL == cofactor
-// NULL == pECC
-//
-// ippStsContextMatchErr illegal pPrime->idCtx
-// illegal pA->idCtx
-// illegal pB->idCtx
-// illegal pGX->idCtx
-// illegal pGY->idCtx
-// illegal pOrder->idCtx
-// illegal pECC->idCtx
-//
-// ippStsRangeErr not enough room for:
-// pPrime
-// pA, pB,
-// pGX,pGY
-// pOrder
-//
-// ippStsNoErr no errors
-//
-// Parameters:
-// pPrime pointer to the retrieval prime (specify FG(p))
-// pA pointer to the retrieval A coefficient of EC equation
-// pB pointer to the retrieval B coefficient of EC equation
-// pGX,pGY pointer to the retrieval Base Point (x and y coordinates) of EC
-// pOrder pointer to the retrieval Base Point order
-// cofactor pointer to the retrieval cofactor value
-// pECC pointer to the ECC context
-//
-*F*/
-IPPFUN(IppStatus, ippsECCPGet, (IppsBigNumState* pPrime,
- IppsBigNumState* pA, IppsBigNumState* pB,
- IppsBigNumState* pGX,IppsBigNumState* pGY,IppsBigNumState* pOrder,
- int* cofactor,
- IppsECCPState* pEC))
-{
- IppsGFpState* pGF;
- gsModEngine* pGFE;
-
- /* test pECC */
- IPP_BAD_PTR1_RET(pEC);
- /* use aligned EC context */
- pEC = (IppsGFpECState*)( IPP_ALIGNED_PTR(pEC, ECGFP_ALIGNMENT) );
- IPP_BADARG_RET(!ECP_TEST_ID(pEC), ippStsContextMatchErr);
-
- pGF = ECP_GFP(pEC);
- pGFE = GFP_PMA(pGF);
-
- /* test pPrime */
- IPP_BAD_PTR1_RET(pPrime);
- pPrime = (IppsBigNumState*)( IPP_ALIGNED_PTR(pPrime, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pPrime), ippStsContextMatchErr);
- IPP_BADARG_RET(BN_ROOM(pPrime)<GFP_FELEN(pGFE), ippStsRangeErr);
-
- /* test pA and pB */
- IPP_BAD_PTR2_RET(pA,pB);
- pA = (IppsBigNumState*)( IPP_ALIGNED_PTR(pA, ALIGN_VAL) );
- pB = (IppsBigNumState*)( IPP_ALIGNED_PTR(pB, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pA), ippStsContextMatchErr);
- IPP_BADARG_RET(!BN_VALID_ID(pB), ippStsContextMatchErr);
- IPP_BADARG_RET(BN_ROOM(pA)<GFP_FELEN(pGFE), ippStsRangeErr);
- IPP_BADARG_RET(BN_ROOM(pB)<GFP_FELEN(pGFE), ippStsRangeErr);
-
- /* test pG and pGorder pointers */
- IPP_BAD_PTR3_RET(pGX,pGY, pOrder);
- pGX = (IppsBigNumState*)( IPP_ALIGNED_PTR(pGX, ALIGN_VAL) );
- pGY = (IppsBigNumState*)( IPP_ALIGNED_PTR(pGY, ALIGN_VAL) );
- pOrder= (IppsBigNumState*)( IPP_ALIGNED_PTR(pOrder,ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pGX), ippStsContextMatchErr);
- IPP_BADARG_RET(!BN_VALID_ID(pGY), ippStsContextMatchErr);
- IPP_BADARG_RET(!BN_VALID_ID(pOrder), ippStsContextMatchErr);
- IPP_BADARG_RET(BN_ROOM(pGX)<GFP_FELEN(pGFE), ippStsRangeErr);
- IPP_BADARG_RET(BN_ROOM(pGY)<GFP_FELEN(pGFE), ippStsRangeErr);
- IPP_BADARG_RET((BN_ROOM(pOrder)*BITSIZE(BNU_CHUNK_T)<ECP_ORDBITSIZE(pEC)), ippStsRangeErr);
-
- /* test cofactor */
- IPP_BAD_PTR1_RET(cofactor);
-
- {
- mod_decode decode = GFP_METHOD(pGFE)->decode; /* gf decode method */
- BNU_CHUNK_T* tmp = cpGFpGetPool(1, pGFE);
-
- /* retrieve EC parameter */
- ippsSet_BN(ippBigNumPOS, GFP_FELEN32(pGFE), (Ipp32u*)GFP_MODULUS(pGFE), pPrime);
-
- decode(tmp, ECP_A(pEC), pGFE);
- ippsSet_BN(ippBigNumPOS, GFP_FELEN32(pGFE), (Ipp32u*)tmp, pA);
- decode(tmp, ECP_B(pEC), pGFE);
- ippsSet_BN(ippBigNumPOS, GFP_FELEN32(pGFE), (Ipp32u*)tmp, pB);
-
- decode(tmp, ECP_G(pEC), pGFE);
- ippsSet_BN(ippBigNumPOS, GFP_FELEN32(pGFE), (Ipp32u*)tmp, pGX);
- decode(tmp, ECP_G(pEC)+GFP_FELEN(pGFE), pGFE);
- ippsSet_BN(ippBigNumPOS, GFP_FELEN32(pGFE), (Ipp32u*)tmp, pGY);
-
- {
- gsModEngine* pR = ECP_MONT_R(pEC);
- ippsSet_BN(ippBigNumPOS, MOD_LEN(pR)*sizeof(BNU_CHUNK_T)/sizeof(Ipp32u), (Ipp32u*)MOD_MODULUS(pR), pOrder);
- }
-
- *cofactor = (int)ECP_COFACTOR(pEC)[0];
-
- cpGFpReleasePool(1, pGFE);
- return ippStsNoErr;
- }
-}
-
-
-/*F*
-// Name: ippsECCPGetOrderBitSize
-//
-// Purpose: Retrieve size of Pase Point Order (in bits).
-//
-// Returns: Reason:
-// ippStsNullPtrErr NULL == pECC
-// NULL == pBitSize
-//
-// ippStsContextMatchErr illegal pECC->idCtx
-//
-// ippStsNoErr no errors
-//
-// Parameters:
-// pBitSize pointer to the size of base point order
-// pECC pointer to the ECC context
-//
-*F*/
-IPPFUN(IppStatus, ippsECCPGetOrderBitSize,(int* pBitSize, IppsECCPState* pEC))
-{
- /* test pECC */
- IPP_BAD_PTR1_RET(pEC);
- /* use aligned EC context */
- pEC = (IppsGFpECState*)( IPP_ALIGNED_PTR(pEC, ECGFP_ALIGNMENT) );
- IPP_BADARG_RET(!ECP_TEST_ID(pEC), ippStsContextMatchErr);
-
- /* test pBitSize*/
- IPP_BAD_PTR1_RET(pBitSize);
-
- *pBitSize = ECP_ORDBITSIZE(pEC);
- return ippStsNoErr;
-}