You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
241 lines
15 KiB
241 lines
15 KiB
4 years ago
|
/***************************************************************************/
|
||
|
/* */
|
||
|
/* Project: OpenSLP - OpenSource implementation of Service Location */
|
||
|
/* Protocol */
|
||
|
/* */
|
||
|
/* File: slp_auth.h */
|
||
|
/* */
|
||
|
/* Abstract: Common for OpenSLP's SLPv2 authentication implementation */
|
||
|
/* Currently only bsd 0x0002 (DSA-SHA1) is supported */
|
||
|
/* */
|
||
|
/*-------------------------------------------------------------------------*/
|
||
|
/* */
|
||
|
/* Please submit patches to http://www.openslp.org */
|
||
|
/* */
|
||
|
/*-------------------------------------------------------------------------*/
|
||
|
/* */
|
||
|
/* Copyright (C) 2000 Caldera Systems, Inc */
|
||
|
/* All rights reserved. */
|
||
|
/* */
|
||
|
/* Redistribution and use in source and binary forms, with or without */
|
||
|
/* modification, are permitted provided that the following conditions are */
|
||
|
/* met: */
|
||
|
/* */
|
||
|
/* Redistributions of source code must retain the above copyright */
|
||
|
/* notice, this list of conditions and the following disclaimer. */
|
||
|
/* */
|
||
|
/* Redistributions in binary form must reproduce the above copyright */
|
||
|
/* notice, this list of conditions and the following disclaimer in */
|
||
|
/* the documentation and/or other materials provided with the */
|
||
|
/* distribution. */
|
||
|
/* */
|
||
|
/* Neither the name of Caldera Systems nor the names of its */
|
||
|
/* contributors may be used to endorse or promote products derived */
|
||
|
/* from this software without specific prior written permission. */
|
||
|
/* */
|
||
|
/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
|
||
|
/* `AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
|
||
|
/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */
|
||
|
/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CALDERA */
|
||
|
/* SYSTEMS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
|
||
|
/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
|
||
|
/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
|
||
|
/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
|
||
|
/* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
|
||
|
/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */
|
||
|
/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
||
|
/* */
|
||
|
/***************************************************************************/
|
||
|
|
||
|
#ifndef SLP_AUTH_H_INCLUDED
|
||
|
#define SLP_AUTH_H_INCLUDED
|
||
|
|
||
|
#include "slp_message.h"
|
||
|
#include "slp_spi.h"
|
||
|
|
||
|
#define SLPAUTH_SHA1_DIGEST_SIZE 20
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthVerifyString(SLPSpiHandle hspi,
|
||
|
int emptyisfail,
|
||
|
unsigned short stringlen,
|
||
|
const char* string,
|
||
|
int authcount,
|
||
|
const SLPAuthBlock* autharray);
|
||
|
/* Verify authenticity of the specified attribute list */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* emptyisfail (IN) if non-zero, messages without authblocks */
|
||
|
/* will fail */
|
||
|
/* stringlen (IN) the length of string to verify */
|
||
|
/* string (IN) the list to verify */
|
||
|
/* authcount (IN) the number of blocks in autharray */
|
||
|
/* autharray (IN) array of authblocks */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthVerifyUrl(SLPSpiHandle hspi,
|
||
|
int emptyisfail,
|
||
|
const SLPUrlEntry* urlentry);
|
||
|
/* Verify authenticity of the specified url entry */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* emptyisfail (IN) if non-zero, messages without authblocks */
|
||
|
/* will fail */
|
||
|
/* urlentry (IN) the url entry to verify */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthVerifyDAAdvert(SLPSpiHandle hspi,
|
||
|
int emptyisfail,
|
||
|
const SLPDAAdvert* daadvert);
|
||
|
/* Verify authenticity of the specified DAAdvert */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* (IN) if non-zero, messages without authblocks */
|
||
|
/* will fail */
|
||
|
/* spistrlen (IN) length of the spi string */
|
||
|
/* sprstr (IN) the spi string */
|
||
|
/* daadvert (IN) the DAAdvert to verify */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthVerifySAAdvert(SLPSpiHandle hspi,
|
||
|
int emptyisfail,
|
||
|
const SLPSAAdvert* saadvert);
|
||
|
/* Verify authenticity of the specified SAAdvert */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* emptyisfail (IN) if non-zero, messages without authblocks */
|
||
|
/* will fail */
|
||
|
/* spistrlen (IN) length of the spi string */
|
||
|
/* sprstr (IN) the spi string */
|
||
|
/* saadvert (IN) the SAADVERT to verify */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthSignString(SLPSpiHandle hspi,
|
||
|
int spistrlen,
|
||
|
const char* spistr,
|
||
|
unsigned short stringlen,
|
||
|
const char* string,
|
||
|
int* authblocklen,
|
||
|
unsigned char** authblock);
|
||
|
/* Generate an authblock signature for an attribute list */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* spistrlen (IN) length of the SPI string */
|
||
|
/* spistr (IN) SPI to sign with */
|
||
|
/* attrlistlen (IN) the length of the URL to sign */
|
||
|
/* attrlist (IN) the url to sign */
|
||
|
/* authblocklen (OUT) the length of the authblock signature */
|
||
|
/* authblock (OUT) buffer containing authblock signature */
|
||
|
/* must be freed by the caller */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthSignUrl(SLPSpiHandle hspi,
|
||
|
int spistrlen,
|
||
|
const char* spistr,
|
||
|
unsigned short urllen,
|
||
|
const char* url,
|
||
|
int* authblocklen,
|
||
|
unsigned char** authblock);
|
||
|
/* Generate an authblock signature for a Url */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* spistrlen (IN) length of the SPI string */
|
||
|
/* spistr (IN) SPI to sign with */
|
||
|
/* urllen (IN) the length of the URL to sign */
|
||
|
/* url (IN) the url to sign */
|
||
|
/* authblocklen (OUT) the length of the authblock signature */
|
||
|
/* authblock (OUT) buffer containing authblock signature */
|
||
|
/* must be freed by the caller */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthSignDAAdvert(SLPSpiHandle hspi,
|
||
|
unsigned short spistrlen,
|
||
|
const char* spistr,
|
||
|
unsigned long bootstamp,
|
||
|
unsigned short urllen,
|
||
|
const char* url,
|
||
|
unsigned short attrlistlen,
|
||
|
const char* attrlist,
|
||
|
unsigned short scopelistlen,
|
||
|
const char* scopelist,
|
||
|
unsigned short daspistrlen,
|
||
|
const char* daspistr,
|
||
|
int* authblocklen,
|
||
|
unsigned char** authblock);
|
||
|
/* Generate an authblock signature for a DAADVERT */
|
||
|
/* */
|
||
|
/* Parameters: hspi (IN) open SPI handle */
|
||
|
/* spistrlen (IN) length of the spi string */
|
||
|
/* sprstr (IN) the spi string */
|
||
|
/* bootstamp (IN) the statless DA boot timestamp */
|
||
|
/* urllen (IN) the length of the URL to sign */
|
||
|
/* url (IN) the url to sign */
|
||
|
/* attrlistlen (IN) the length of the URL to sign */
|
||
|
/* attrlist (IN) the url to sign */
|
||
|
/* scopelistlen (IN) the length of the DA's scope list */
|
||
|
/* scopelist (IN) the DA's scope list */
|
||
|
/* daspistrlen (IN) the length of the list of DA's SPIs */
|
||
|
/* daspistr (IN) the list of the DA's SPI's */
|
||
|
/* authblocklen (OUT) the length of the authblock signature */
|
||
|
/* authblock (OUT) buffer containing authblock signature must */
|
||
|
/* be freed by the caller */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
/*=========================================================================*/
|
||
|
int SLPAuthSignSAAdvert(unsigned short spistrlen,
|
||
|
const char* spistr,
|
||
|
unsigned short urllen,
|
||
|
const char* url,
|
||
|
unsigned short attrlistlen,
|
||
|
const char* attrlist,
|
||
|
unsigned short scopelistlen,
|
||
|
const char* scopelist,
|
||
|
int* authblocklen,
|
||
|
unsigned char** authblock);
|
||
|
/* Generate an authblock signature for a SAADVERT */
|
||
|
/* */
|
||
|
/* Parameters: spistrlen (IN) length of the spi string */
|
||
|
/* sprstr (IN) the spi string */
|
||
|
/* urllen (IN) the length of the URL to sign */
|
||
|
/* url (IN) the url to sign */
|
||
|
/* attrlistlen (IN) the length of the URL to sign */
|
||
|
/* attrlist (IN) the url to sign */
|
||
|
/* scopelistlen (IN) the length of the DA's scope list */
|
||
|
/* scopelist (IN) the DA's scope list */
|
||
|
/* authblocklen (OUT) the length of the authblock signature */
|
||
|
/* authblock (OUT) buffer containing authblock signature must */
|
||
|
/* be freed by the caller */
|
||
|
/* */
|
||
|
/* Returns: 0 on success or SLP_ERROR_xxx code on failure */
|
||
|
/*=========================================================================*/
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|