summaryrefslogtreecommitdiff
path: root/usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp')
-rw-r--r--usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp317
1 files changed, 0 insertions, 317 deletions
diff --git a/usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp b/usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp
deleted file mode 100644
index 637191a2af..0000000000
--- a/usr/src/lib/libkmsagent/common/KMSAgentChallenge.cpp
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/**
- * \file KMSAgentChallenge.cpp
- */
-
-#include "KMSAgentChallenge.h"
-#include "KMSAgentCryptoUtilities.h"
-#include "KMSAgentStringUtilities.h"
-#include "ApplianceParameters.h"
-#include "SYSCommon.h"
-
-extern "C" int Log2(char* msg1,
- char* msg2);
-
-#ifdef METAWARE
-#include "debug.h"
-#endif
-
-
-/**
- * ComputeChallengeResponse
- */
-bool ComputeChallengeResponse(
- const unsigned char* i_pAuthenticationSecret,
- int i_iAuthenticationSecretLength,
- const unsigned char* i_pRootCACertificate,
- int i_iRootCACertificateLength,
- const unsigned char* i_pAuthenticationChallenge,
- int i_iAuthenticationChallengeLength,
- unsigned char* o_pAuthenticationChallengeResponse,
- int i_iAuthenticationChallengeResponseLength )
-{
-
- bool rc;
-
-#ifdef DEBUG
- Log2 ("KMSAgent_LoadProfile::ComputeChallengeResponse", "Entered");
-#endif
- FATAL_ASSERT( i_iAuthenticationChallengeResponseLength == HMAC_LENGTH );
-
- // challenge response is HMAC-SHA1( RootCACertificate ||
- // AuthenticationChallenge, AuthenticationSecret )
- const unsigned char* aBuffersToHMAC[2];
- int aBuffersToHMACSize[2];
-
- aBuffersToHMAC[0] = i_pRootCACertificate;
- aBuffersToHMACSize[0] = i_iRootCACertificateLength;
-
- aBuffersToHMAC[1] = i_pAuthenticationChallenge;
- aBuffersToHMACSize[1] = i_iAuthenticationChallengeLength;
-
- rc = HMACBuffers(
- 2,
- aBuffersToHMAC,
- aBuffersToHMACSize,
- i_pAuthenticationSecret,
- i_iAuthenticationSecretLength,
- o_pAuthenticationChallengeResponse );
-
-#if defined(METAWARE) && defined(DEBUG)
- int j=0;
-
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "length=%x\n",
- i_iAuthenticationSecretLength);
-
- for (int i=0 ; i< i_iAuthenticationSecretLength; i++)
- {
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "%x",
- i_pAuthenticationSecret[i]);
- }
- snprintf(outmsg+j, OUTMSG_SIZE, "\n");
-
- Log2("Secret = ",outmsg);
-#endif
-
-#if defined(METAWARE) && defined(DEBUG)
- j=0;
-
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "length=%x\n",
- i_iRootCACertificateLength);
-
- for (i=0 ; i< i_iRootCACertificateLength; i++)
- {
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "%x",
- i_pRootCACertificate[i]);
- }
- snprintf(outmsg+j, OUTMSG_SIZE, "\n");
-
- Log2("i_pRootCACertificate = ",outmsg);
-#endif
-
-#if defined(METAWARE) && defined(DEBUG)
- j=0;
-
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "length=%x\n",
- i_iAuthenticationChallengeLength);
-
- for (i=0 ; i< i_iAuthenticationChallengeLength; i++)
- {
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "%x",
- i_pAuthenticationChallenge[i]);
- }
- snprintf(outmsg+j, OUTMSG_SIZE, "\n");
-
- Log2("i_pAuthenticationChallenge = ",outmsg);
-#endif
-
-#if defined(METAWARE) && defined(DEBUG)
- j=0;
-
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "length=%x\n",
- i_iAuthenticationChallengeResponseLength);
-
- for (i=0 ; i< i_iAuthenticationChallengeResponseLength; i++)
- {
- j+=snprintf(outmsg+j, OUTMSG_SIZE,
- "%x",
- o_pAuthenticationChallengeResponse[i]);
- }
- snprintf(outmsg+j, OUTMSG_SIZE, "\n");
-
- Log2("o_pAuthenticationChallengeResponse = ",outmsg);
-#endif
-
- return rc;
-
-#undef __IAM__
-}
-
-/**
- * ComputeEntityHashedPassphraseAndAuthenticationSecret
- */
-bool ComputeEntityHashedPassphraseAndAuthenticationSecret(
- const char* i_sPassphrase,
- char* const o_sHexHashedPassphrase,
- int* const o_piAuthenticationHashIterationCount,
- char* const o_sHexAuthenticationSecret )
-{
- // HashedPassphrase is SHA1( Passphrase-UTF-8 )
- // Using UTF-8 ensures the same result on different platforms with
- // different wide character representations.
- // This hashed passphrase value is used to wrap entity
- // private key materials.
-#if defined(METAWARE) && defined(DEBUG)
- Log2 ("KMSAgent_LoadProfile::ComputeEntityHashedPassphraseAndAuthenticationSecret",
- "Entered");
-#endif
-
- unsigned char aHashedPassphrase[HASH_LENGTH];
-
- memset(aHashedPassphrase, 0, HASH_LENGTH);
-
- if ( strlen(i_sPassphrase) > 0 )
- {
- if ( !HashBuffer(
- (unsigned char*)i_sPassphrase,
- strlen(i_sPassphrase),
- aHashedPassphrase) )
- {
- return false;
- }
- }
-
- ConvertBinaryToUTF8HexString( o_sHexHashedPassphrase,
- aHashedPassphrase,
- HASH_LENGTH );
-
- // HexAuthenticationSecret is SHA1( SHA1( ... ( SHA1(
- // HashedPassphrase ) ) ) The number of iterations is time bounded
- // at 1/10 of a second, and also bounded by fixed minimum and
- // maximum values (to prevent too weak of a computation and to
- // prevent a DoS, respectively). This value is used as the shared
- // secret in challenge-response authentication exchanges.
-
- *o_piAuthenticationHashIterationCount = 0;
-
- unsigned long iStartTickCount = K_GetTickCount();
-
- while ( *o_piAuthenticationHashIterationCount <
- MAX_AUTHENTICATION_ITERATION_COUNT
- && ( *o_piAuthenticationHashIterationCount <
- MIN_AUTHENTICATION_ITERATION_COUNT
- || iStartTickCount +
- AUTHENTICATION_ITERATION_TIME_IN_MILLISECONDS >
- K_GetTickCount() ) )
- {
- if ( !HashBuffer(
- aHashedPassphrase,
- HASH_LENGTH,
- aHashedPassphrase) )
- {
- return false;
- }
-
- (*o_piAuthenticationHashIterationCount)++;
- }
-
- ConvertBinaryToUTF8HexString( o_sHexAuthenticationSecret,
- aHashedPassphrase, HASH_LENGTH );
-
-#if defined(METAWARE) && defined(DEBUG)
- snprintf(outmsg, OUTMSG_SIZE,
- "o_sHexAuthenticationSecret=%x o_piAuth..."
- "= %x aHashedPassphrase=%s\n",
- o_sHexAuthenticationSecret,
- *o_piAuthenticationHashIterationCount,
- aHashedPassphrase);
- Log2("ComputeEntityHashedPassphraseAndAuthenticationSecret ",
- outmsg);
-#endif
-
- return true;
-}
-
-/**
- * ComputeFixedEntityHashedPassphraseAndAuthenticationSecret
- */
-bool ComputeFixedEntityHashedPassphraseAndAuthenticationSecret(
- const char* i_sPassphrase,
- char* const o_sHexHashedPassphrase,
- int i_iAuthenticationHashIterationCount,
- char* const o_sHexAuthenticationSecret )
-{
- // compute same values as
- // ComputeEntityHashedPassphraseAndAuthenticationSecret, except
- // iteration count is fixed
-#if defined(METAWARE) && defined(DEBUG)
- Log2 ("KMSAgent_LoadProfile::"
- "ComputeFixedEntityHashedPassphraseAndAuthenticationSecret", "Entered");
-#endif
-
- // detect attempts to cause weak computation or DoS attack
- if ( i_iAuthenticationHashIterationCount <
- MIN_AUTHENTICATION_ITERATION_COUNT ||
- i_iAuthenticationHashIterationCount >
- MAX_AUTHENTICATION_ITERATION_COUNT )
- {
- return false;
- }
-
-
- unsigned char aHashedPassphrase[HASH_LENGTH];
-
- memset(aHashedPassphrase, 0, HASH_LENGTH);
-
- if ( strlen(i_sPassphrase) > 0 )
- {
- if ( !HashBuffer(
- (unsigned char*)i_sPassphrase,
- strlen(i_sPassphrase),
- aHashedPassphrase) )
- {
- return false;
- }
- }
-
- ConvertBinaryToUTF8HexString( o_sHexHashedPassphrase,
- aHashedPassphrase, HASH_LENGTH );
-
- int i;
- for ( i = 0; i < i_iAuthenticationHashIterationCount; i++ )
- {
- if ( !HashBuffer(
- aHashedPassphrase,
- HASH_LENGTH,
- aHashedPassphrase) )
- {
- return false;
- }
- }
-
- ConvertBinaryToUTF8HexString( o_sHexAuthenticationSecret,
- aHashedPassphrase, HASH_LENGTH );
-
-#if defined(METAWARE) && defined(DEBUG)
- snprintf(outmsg, OUTMSG_SIZE,
- "i_iAuth %x \n",
- i_iAuthenticationHashIterationCount);
-
- Log2("ComputeEntityHashedPassphraseAndAuthenticationSecret ",
- outmsg);
-#endif
-
-
- return true;
-}