opensslrsa_link.c revision 4f30395c97ad0586562a433fc6f1b9655fa6ba73
/*
* Copyright (C) 2000, 2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
* 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.
*/
/*
* Principal Author: Brian Wellington
* $Id: opensslrsa_link.c,v 1.17 2001/11/20 21:28:41 gson Exp $
*/
#ifdef OPENSSL
#include <config.h>
#include "dst_internal.h"
#include "dst_parse.h"
static isc_result_t
} else {
}
return (ISC_R_SUCCESS);
}
static void
}
} else {
}
}
}
static isc_result_t
} else {
}
return (ISC_R_SUCCESS);
}
static isc_result_t
isc_region_t r;
/* note: ISC_SHA1_DIGESTLENGTH > ISC_MD5_DIGESTLENGTH */
unsigned char digest[ISC_SHA1_DIGESTLENGTH];
unsigned int siglen;
int status;
int type;
unsigned int digestlen;
return (ISC_R_NOSPACE);
} else {
}
if (status == 0) {
return (DST_R_SIGNFAILURE);
}
return (ISC_R_SUCCESS);
}
static isc_result_t
/* note: ISC_SHA1_DIGESTLENGTH > ISC_MD5_DIGESTLENGTH */
unsigned char digest[ISC_SHA1_DIGESTLENGTH];
int status = 0;
int type;
unsigned int digestlen;
} else {
}
return (DST_R_VERIFYFAILURE);
if (status == 0) {
return (DST_R_VERIFYFAILURE);
}
return (ISC_R_SUCCESS);
}
static isc_boolean_t
int status;
return (ISC_TRUE);
return (ISC_FALSE);
if (status != 0)
return (ISC_FALSE);
return (ISC_FALSE);
if (status != 0)
return (ISC_FALSE);
}
return (ISC_TRUE);
}
static isc_result_t
unsigned long e;
if (exp == 0)
e = RSA_3;
else
e = RSA_F4;
return (DST_R_OPENSSLFAILURE);
}
return (ISC_R_SUCCESS);
}
static isc_boolean_t
}
static void
}
static isc_result_t
isc_region_t r;
unsigned int e_bytes;
unsigned int mod_bytes;
if (r.length < 1)
return (ISC_R_NOSPACE);
} else {
if (r.length < 3)
return (ISC_R_NOSPACE);
isc_buffer_putuint8(data, 0);
}
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
}
static isc_result_t
isc_region_t r;
unsigned int e_bytes;
if (r.length == 0)
return (ISC_R_SUCCESS);
return (ISC_R_NOMEMORY);
if (r.length < 1) {
return (DST_R_INVALIDPUBLICKEY);
}
r.length--;
if (e_bytes == 0) {
if (r.length < 2) {
return (DST_R_INVALIDPUBLICKEY);
}
r.length -= 2;
}
return (DST_R_INVALIDPUBLICKEY);
}
return (ISC_R_SUCCESS);
}
static isc_result_t
int i;
unsigned char *bufs[8];
return (DST_R_NULLKEY);
for (i = 0; i < 8; i++) {
goto fail;
}
}
i = 0;
i++;
i++;
i++;
i++;
i++;
i++;
i++;
i++;
fail:
for (i = 0; i < 8; i++)
return (result);
}
static isc_result_t
int i;
/* read private key file */
&priv);
if (ret != ISC_R_SUCCESS)
return (ret);
case TAG_RSA_MODULUS:
break;
case TAG_RSA_PUBLICEXPONENT:
break;
case TAG_RSA_PRIVATEEXPONENT:
break;
case TAG_RSA_PRIME1:
break;
case TAG_RSA_PRIME2:
break;
case TAG_RSA_EXPONENT1:
break;
case TAG_RSA_EXPONENT2:
break;
case TAG_RSA_COEFFICIENT:
break;
}
}
return (ISC_R_SUCCESS);
err:
return (ret);
}
static dst_func_t opensslrsa_functions = {
NULL, /* computesecret */
NULL, /* paramcompare */
NULL, /* cleanup */
};
return (ISC_R_SUCCESS);
}
#else /* OPENSSL */
#endif /* OPENSSL */