/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/*
* Copyright 1993 by OpenVision Technologies, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appears in all copies and
* that both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of OpenVision not be used
* in advertising or publicity pertaining to distribution of the software
* without specific, written prior permission. OpenVision makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
* OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
* EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/*
*/
#include "gssapiP_krb5.h"
#ifdef HAVE_MEMORY_H
#include <memory.h>
#endif
/* Checksumming the channel bindings always uses plain MD5. */
int bigend;
{
char *buf = 0;
char *ptr;
void *temp;
/* initialize the the cksum */
if (code)
return(code);
/* generate a buffer full of zeros if no cb specified */
if (cb == GSS_C_NO_CHANNEL_BINDINGS) {
return(ENOMEM);
}
return(0);
}
/* create the buffer to checksum into */
return(ENOMEM);
/* helper macros. This code currently depends on a long being 32
bits, and htonl dtrt. */
/* checksum the data */
#if 0 /************** Begin IFDEF'ed OUT *******************************/
/*
* Solaris Kerberos
* - why free then alloc contents again?
* - calling krb5_free_checksum_contents results in cksum->length
* getting set to 0 which causes ftp to fail
* so lets stick w/oldey-but-goodey code.
*/
if (code)
goto cleanup;
goto cleanup;
}
#else
/* Solaris Kerberos */
/* Solaris Kerberos just in case not already free */
return(code);
}
#endif /**************** END IFDEF'ed OUT *******************************/
/* success */
if (buf)
return code;
}
/* Solaris Kerberos: not supported yet */
#if 0 /************** Begin IFDEF'ed OUT *******************************/
int iov_count,
int toktype,
{
int i = 0, j;
return ENOMEM;
/* Checksum over ( Header | Confounder | Data | Pad ) */
if (toktype == KG_TOK_WRAP_MSG)
/* Checksum output */
return ENOMEM;
}
i++;
/* Header | SND_SEQ | SGN_CKSUM | Confounder */
/* Header (calculate from end because of variable length ASN.1 header) */
i++;
/* Confounder */
if (toktype == KG_TOK_WRAP_MSG) {
i++;
}
for (j = 0; j < iov_count; j++) {
i++;
}
if (code == 0) {
} else
return code;
}
static krb5_error_code
int iov_count,
{
int i = 0, j;
unsigned int k5_checksumlen;
if (verify)
code = krb5_c_crypto_length(context, key->keyblock.enctype, KRB5_CRYPTO_TYPE_CHECKSUM, &k5_checksumlen);
if (code != 0)
return code;
if (rrc != k5_checksumlen)
return KRB5_BAD_MSIZE;
return KRB5_BAD_MSIZE;
return KRB5_BAD_MSIZE;
return ENOMEM;
/* Checksum over ( Data | Header ) */
/* Data */
for (j = 0; j < iov_count; j++) {
i++;
}
/* Header */
i++;
/* Checksum */
} else {
}
i++;
if (verify)
else
return code;
}
int iov_count)
{
}
int iov_count,
{
}
#endif /**************** END IFDEF'ed OUT *******************************/