110 lines
3.4 KiB
C
110 lines
3.4 KiB
C
/* Copyright 2015 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#define TPM_FAIL_C
|
|
#include "Global.h"
|
|
#include "CryptoEngine.h"
|
|
|
|
CRYPT_RESULT _cpri__C_2_2_KeyExchange(
|
|
TPMS_ECC_POINT * outZ1, // OUT: a computed point
|
|
TPMS_ECC_POINT * outZ2, // OUT: and optional second point
|
|
TPM_ECC_CURVE curveId, // IN: the curve for the computations
|
|
TPM_ALG_ID scheme, // IN: the key exchange scheme
|
|
TPM2B_ECC_PARAMETER * dsA, // IN: static private TPM key
|
|
TPM2B_ECC_PARAMETER * deA, // IN: ephemeral private TPM key
|
|
TPMS_ECC_POINT * QsB, // IN: static public party B key
|
|
TPMS_ECC_POINT * QeB // IN: ephemeral public party B key
|
|
)
|
|
{
|
|
ecprintf("%s called\n", __func__);
|
|
return CRYPT_FAIL;
|
|
}
|
|
|
|
CRYPT_RESULT _cpri__DrbgGetPutState(
|
|
GET_PUT direction,
|
|
int bufferSize,
|
|
BYTE * buffer)
|
|
{
|
|
/* This unction is not implemented in the TPM2 library either. */
|
|
return CRYPT_SUCCESS;
|
|
}
|
|
|
|
CRYPT_RESULT _cpri__EccCommitCompute(
|
|
TPMS_ECC_POINT * K, // OUT: [d]B or [r]Q
|
|
TPMS_ECC_POINT * L, // OUT: [r]B
|
|
TPMS_ECC_POINT * E, // OUT: [r]M
|
|
TPM_ECC_CURVE curveId, // IN: the curve for the computations
|
|
TPMS_ECC_POINT * M, // IN: M (optional)
|
|
TPMS_ECC_POINT * B, // IN: B (optional)
|
|
TPM2B_ECC_PARAMETER * d, // IN: d (required)
|
|
TPM2B_ECC_PARAMETER * r // IN: the computed r value (required)
|
|
)
|
|
{
|
|
ecprintf("%s called\n", __func__);
|
|
return CRYPT_FAIL;
|
|
}
|
|
|
|
BOOL _cpri__Startup(
|
|
void)
|
|
{
|
|
/*
|
|
* Below is the list of functions called by the TPM2 library from
|
|
* _cpri__Startup().
|
|
*
|
|
* _cpri__HashStartup() - not doing anything for now, maybe hw
|
|
* reinitialization is required?
|
|
* _cpri__RsaStartup() - not sure what needs to be done in HW
|
|
* _cpri__EccStartup() - not sure what needs to be done in HW
|
|
* _cpri__SymStartup() - this function is emtpy in the TPM2 library
|
|
* implementation.
|
|
*/
|
|
return 1;
|
|
}
|
|
|
|
CRYPT_RESULT _math__Div(
|
|
const TPM2B * n, // IN: numerator
|
|
const TPM2B * d, // IN: denominator
|
|
TPM2B * q, // OUT: quotient
|
|
TPM2B * r // OUT: remainder
|
|
)
|
|
{
|
|
ecprintf("%s called\n", __func__);
|
|
return CRYPT_FAIL;
|
|
}
|
|
|
|
void __assert_func(
|
|
const char *file,
|
|
int line,
|
|
const char *func,
|
|
const char *condition
|
|
)
|
|
{
|
|
/*
|
|
* TPM2 library invokes assert from a common wrapper, which first sets
|
|
* global variables describing the failure point and then invokes the
|
|
* assert() macro which ends up calling this function as defined by the gcc
|
|
* toolchain.
|
|
*
|
|
* For some weird reason (or maybe this is a bug), s_FailFunction is defined
|
|
* in the tpm2 library as a 32 bit int, but on a failure the name of the
|
|
* failing function (its first four bytes) are copiied into this variable.
|
|
*
|
|
* TODO(vbendeb): investigate and fix TPM2 library assert handling.
|
|
*/
|
|
ecprintf("Failure in %s, func %s, line %d:\n%s\n",
|
|
file,
|
|
s_failFunction ? (const char *)&s_failFunction : func,
|
|
s_failLine ? s_failLine : line,
|
|
condition);
|
|
while (1)
|
|
; /* Let the watchdog doo the rest. */
|
|
}
|
|
|
|
CRYPT_RESULT _cpri__InitCryptoUnits(
|
|
FAIL_FUNCTION failFunction)
|
|
{
|
|
return CRYPT_SUCCESS;
|
|
}
|