aboutsummaryrefslogtreecommitdiff
path: root/ext/ipp/sources/ippcp/src/pcpgfpecdh.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/ipp/sources/ippcp/src/pcpgfpecdh.c')
-rw-r--r--ext/ipp/sources/ippcp/src/pcpgfpecdh.c229
1 files changed, 0 insertions, 229 deletions
diff --git a/ext/ipp/sources/ippcp/src/pcpgfpecdh.c b/ext/ipp/sources/ippcp/src/pcpgfpecdh.c
deleted file mode 100644
index 797e8f6..0000000
--- a/ext/ipp/sources/ippcp/src/pcpgfpecdh.c
+++ /dev/null
@@ -1,229 +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 GF(p^m) Shared Secret (Diffie-Hellman wo/w cofactor)
-//
-// Contents:
-// ippsGFpECSharedSecretDH()
-// ippsGFpECSharedSecretDHC()
-//
-//
-*/
-
-#include "owndefs.h"
-#include "owncp.h"
-
-#include "pcpgfpecstuff.h"
-
-
-/*F*
-// Name: ippsGFpECSharedSecretDHC
-//
-// Purpose: Compute Shared Secret (Diffie-Hellman)
-//
-// Returns: Reason:
-// ippStsNullPtrErr NULL == pEC
-// NULL == pPrivateA
-// NULL == pPublicB
-// NULL == pShare
-//
-// ippStsContextMatchErr illegal pEC->idCtx
-// illegal pPrivateA->idCtx
-// illegal pPublicB->idCtx
-// illegal pShare->idCtx
-//
-// ippStsRangeErr not enough room for share key
-//
-// ippStsShareKeyErr (infinity) => z
-//
-// ippStsNoErr no errors
-//
-// Parameters:
-// pPrivateA pointer to own private key
-// pPublicB pointer to alien public key
-// pShare pointer to the shared secret value
-// pEC pointer to the EC context
-//
-*F*/
-IPPFUN(IppStatus, ippsGFpECSharedSecretDH,(const IppsBigNumState* pPrivateA, const IppsGFpECPoint* pPublicB,
- IppsBigNumState* pShare,
- IppsGFpECState* pEC, Ipp8u* pScratchBuffer))
-{
- IppsGFpState* pGF;
- gsModEngine* pGFE;
-
- /* EC context and buffer */
- IPP_BAD_PTR2_RET(pEC, pScratchBuffer);
- 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 private (own) key */
- IPP_BAD_PTR1_RET(pPrivateA);
- pPrivateA = (IppsBigNumState*)( IPP_ALIGNED_PTR(pPrivateA, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pPrivateA), ippStsContextMatchErr);
-
- /* test public (other party) key */
- IPP_BAD_PTR1_RET(pPublicB);
- IPP_BADARG_RET( !ECP_POINT_TEST_ID(pPublicB), ippStsContextMatchErr );
-
- /* test share secret value */
- IPP_BAD_PTR1_RET(pShare);
- pShare = (IppsBigNumState*)( IPP_ALIGNED_PTR(pShare, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pShare), ippStsContextMatchErr);
- IPP_BADARG_RET((BN_ROOM(pShare)<GFP_FELEN(pGFE)), ippStsRangeErr);
-
- {
- int elmLen = GFP_FELEN(pGFE);
-
- IppsGFpElement elm;
- IppsGFpECPoint T;
- int finite_point;
-
- /* T = [privateA]pPublicB */
- cpEcGFpInitPoint(&T, cpEcGFpGetPool(1, pEC),0, pEC);
- gfec_MulPoint(&T, pPublicB, BN_NUMBER(pPrivateA), BN_SIZE(pPrivateA), pEC, pScratchBuffer);
-
- /* share = T.x */
- cpGFpElementConstruct(&elm, cpGFpGetPool(1, pGFE), elmLen);
- finite_point = gfec_GetPoint(GFPE_DATA(&elm), NULL, &T, pEC);
-
- if(finite_point) {
- BNU_CHUNK_T* pShareData = BN_NUMBER(pShare);
- int nsShare = BN_ROOM(pShare);
- /* share = decode(T.x) */
- GFP_METHOD(pGFE)->decode(pShareData, GFPE_DATA(&elm), pGFE);
- cpGFpElementPadd(pShareData+elmLen, nsShare-elmLen, 0);
-
- BN_SIGN(pShare) = ippBigNumPOS;
- FIX_BNU(pShareData, nsShare);
- BN_SIZE(pShare) = nsShare;
- }
-
- cpGFpReleasePool(1, pGFE);
- cpEcGFpReleasePool(1, pEC);
-
- return finite_point? ippStsNoErr : ippStsShareKeyErr;
- }
-}
-
-
-/*F*
-// Name: ippsGFpECSharedSecretDHC
-//
-// Purpose: Compute Shared Secret (Diffie-Hellman with cofactor)
-//
-// Returns: Reason:
-// ippStsNullPtrErr NULL == pEC
-// NULL == pPrivateA
-// NULL == pPublicB
-// NULL == pShare
-//
-// ippStsContextMatchErr illegal pEC->idCtx
-// illegal pPrivateA->idCtx
-// illegal pPublicB->idCtx
-// illegal pShare->idCtx
-//
-// ippStsRangeErr not enough room for share key
-//
-// ippStsShareKeyErr (infinity) => z
-//
-// ippStsNoErr no errors
-//
-// Parameters:
-// pPrivateA pointer to own private key
-// pPublicB pointer to alien public key
-// pShare pointer to the shared secret value
-// pEC pointer to the EC context
-//
-*F*/
-IPPFUN(IppStatus, ippsGFpECSharedSecretDHC,(const IppsBigNumState* pPrivateA, const IppsGFpECPoint* pPublicB,
- IppsBigNumState* pShare,
- IppsGFpECState* pEC, Ipp8u* pScratchBuffer))
-{
- IppsGFpState* pGF;
- gsModEngine* pGFE;
-
- /* EC context and buffer */
- IPP_BAD_PTR2_RET(pEC, pScratchBuffer);
- 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 private (own) key */
- IPP_BAD_PTR1_RET(pPrivateA);
- pPrivateA = (IppsBigNumState*)( IPP_ALIGNED_PTR(pPrivateA, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pPrivateA), ippStsContextMatchErr);
-
- /* test public (other party) key */
- IPP_BAD_PTR1_RET(pPublicB);
- IPP_BADARG_RET( !ECP_POINT_TEST_ID(pPublicB), ippStsContextMatchErr );
-
- /* test share key */
- IPP_BAD_PTR1_RET(pShare);
- pShare = (IppsBigNumState*)( IPP_ALIGNED_PTR(pShare, ALIGN_VAL) );
- IPP_BADARG_RET(!BN_VALID_ID(pShare), ippStsContextMatchErr);
- IPP_BADARG_RET((BN_ROOM(pShare)<GFP_FELEN(pGFE)), ippStsRangeErr);
-
- {
- int elmLen = GFP_FELEN(pGFE);
-
- IppsGFpElement elm;
- IppsGFpECPoint T;
- int finite_point;
-
- gsModEngine* montR = ECP_MONT_R(pEC);
- int nsR = MOD_LEN(montR);
-
- /* compute factored secret F = coFactor*privateA */
- BNU_CHUNK_T* F = cpGFpGetPool(1, pGFE);
- cpMontEnc_BNU_EX(F, BN_NUMBER(pPrivateA), BN_SIZE(pPrivateA), montR);
- cpMontMul_BNU_EX(F, F, nsR, ECP_COFACTOR(pEC), 1, montR);
-
- /* T = [F]pPublicB */
- cpEcGFpInitPoint(&T, cpEcGFpGetPool(1, pEC),0, pEC);
- FIX_BNU(F, nsR);
- gfec_MulPoint(&T, pPublicB, F, nsR, pEC, pScratchBuffer);
-
- /* share = T.x */
- cpGFpElementConstruct(&elm, F, elmLen);
- finite_point = gfec_GetPoint(GFPE_DATA(&elm), NULL, &T, pEC);
- if(finite_point) {
- BNU_CHUNK_T* pShareData = BN_NUMBER(pShare);
- int nsShare = BN_ROOM(pShare);
- /* share = decode(T.x) */
- GFP_METHOD(pGFE)->decode(pShareData, GFPE_DATA(&elm), pGFE);
- cpGFpElementPadd(pShareData+elmLen, nsShare-elmLen, 0);
-
- BN_SIGN(pShare) = ippBigNumPOS;
- FIX_BNU(pShareData, nsShare);
- BN_SIZE(pShare) = nsShare;
- }
-
- cpGFpReleasePool(1, pGFE);
- cpEcGFpReleasePool(1, pEC);
-
- return finite_point? ippStsNoErr : ippStsShareKeyErr;
- }
-}