SKF Wrapper

This commit is contained in:
Zhi Guan
2016-05-29 00:22:33 +02:00
parent 0cf9126a7d
commit ee4384daeb
142 changed files with 9469 additions and 6750 deletions

View File

@@ -22,8 +22,8 @@ TEST=otptest.c
APPS=
LIB=$(TOP)/libcrypto.a
LIBSRC=otp.c
LIBOBJ=otp.o
LIBSRC=otp.c otp_err.c
LIBOBJ=otp.o otp_err.o
SRC= $(LIBSRC)
@@ -79,3 +79,20 @@ clean:
# DO NOT DELETE THIS LINE -- make depend depends on it.
otp.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
otp.o: ../../include/openssl/cbcmac.h ../../include/openssl/crypto.h
otp.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
otp.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
otp.o: ../../include/openssl/modes.h ../../include/openssl/obj_mac.h
otp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
otp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
otp.o: ../../include/openssl/otp.h ../../include/openssl/safestack.h
otp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
otp.o: ../modes/modes_lcl.h otp.c
otp_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
otp_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
otp_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
otp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
otp_err.o: ../../include/openssl/otp.h ../../include/openssl/safestack.h
otp_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
otp_err.o: otp_err.c

Binary file not shown.

View File

@@ -5,6 +5,7 @@
#include <string.h>
#include <strings.h>
#include <openssl/evp.h>
#include <openssl/err.h>
#include <openssl/crypto.h>
#include <openssl/cbcmac.h>
#include "../modes/modes_lcl.h"
@@ -51,7 +52,7 @@ int OTP_generate(const OTP_PARAMS *params, const void *event, size_t eventlen,
OPENSSL_assert(sizeof(time_t) == 8);
if (!check_params(params)) {
fprintf(stderr, "error: %s %d\n", __FILE__, __LINE__);
OTPerr(OTP_F_OTP_GENERATE, OTP_R_INVALID_PARAMS);
return 0;
}
@@ -60,7 +61,7 @@ int OTP_generate(const OTP_PARAMS *params, const void *event, size_t eventlen,
idlen = 16;
}
if (!(id = OPENSSL_malloc(idlen))) {
fprintf(stderr, "error: %s %d\n", __FILE__, __LINE__);
OTPerr(OTP_F_OTP_GENERATE, OTP_R_MALLOC_FAILED);
goto end;
}
bzero(id, idlen);
@@ -77,32 +78,41 @@ int OTP_generate(const OTP_PARAMS *params, const void *event, size_t eventlen,
if (params->type == NID_sm3) {
md = EVP_get_digestbynid(params->type);
if (!(mdctx = EVP_MD_CTX_create())) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_EVP_LIB);
goto end;
}
if (!EVP_DigestInit_ex(mdctx, md, NULL)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_EVP_LIB);
goto end;
}
if (!EVP_DigestUpdate(mdctx, key, keylen)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_EVP_LIB);
goto end;
}
if (!EVP_DigestUpdate(mdctx, id, idlen)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_EVP_LIB);
goto end;
}
if (!EVP_DigestFinal_ex(mdctx, s, (unsigned int *)&slen)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_EVP_LIB);
goto end;
}
} else if (params->type == NID_sms4_ecb) {
cipher = EVP_get_cipherbynid(params->type);
if (!(cmctx = CBCMAC_CTX_new())) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_CBCMAC_LIB);
goto end;
}
if (!CBCMAC_Init(cmctx, key, keylen, cipher, NULL)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_CBCMAC_LIB);
goto end;
}
if (!CBCMAC_Update(cmctx, id, idlen)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_CBCMAC_LIB);
goto end;
}
if (!CBCMAC_Final(cmctx, s, &slen)) {
OTPerr(OTP_F_OTP_GENERATE, ERR_R_CBCMAC_LIB);
goto end;
}
} else {

View File

@@ -79,9 +79,23 @@ typedef struct OTP_PARAMS_st {
int OTP_generate(const OTP_PARAMS *params, const void *event, size_t eventlen,
unsigned int *otp, const unsigned char *key, size_t keylen);
/* BEGIN ERROR CODES */
/*
* The following lines are auto generated by the script mkerr.pl. Any changes
* made after this point may be overwritten when the script is next run.
*/
void ERR_load_OTP_strings(void);
#ifdef __cplusplus
extern "C" {
/* Error codes for the OTP functions. */
/* Function codes. */
# define OTP_F_OTP_GENERATE 100
/* Reason codes. */
# define OTP_R_INVALID_PARAMS 101
# define OTP_R_MALLOC_FAILED 100
#ifdef __cplusplus
}
#endif
#endif

94
crypto/otp/otp_err.c Normal file
View File

@@ -0,0 +1,94 @@
/* crypto/otp/otp_err.c */
/* ====================================================================
* Copyright (c) 1999-2016 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. 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.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@OpenSSL.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED 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 OpenSSL PROJECT OR
* ITS 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.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
/*
* NOTE: this file was auto generated by the mkerr.pl script: any changes
* made to it will be overwritten when the script next updates this file,
* only reason strings will be preserved.
*/
#include <stdio.h>
#include <openssl/err.h>
#include <openssl/otp.h>
/* BEGIN ERROR CODES */
#ifndef OPENSSL_NO_ERR
# define ERR_FUNC(func) ERR_PACK(ERR_LIB_OTP,func,0)
# define ERR_REASON(reason) ERR_PACK(ERR_LIB_OTP,0,reason)
static ERR_STRING_DATA OTP_str_functs[] = {
{ERR_FUNC(OTP_F_OTP_GENERATE), "OTP_generate"},
{0, NULL}
};
static ERR_STRING_DATA OTP_str_reasons[] = {
{ERR_REASON(OTP_R_INVALID_PARAMS), "invalid params"},
{ERR_REASON(OTP_R_MALLOC_FAILED), "malloc failed"},
{0, NULL}
};
#endif
void ERR_load_OTP_strings(void)
{
#ifndef OPENSSL_NO_ERR
if (ERR_func_error_string(OTP_str_functs[0].error) == NULL) {
ERR_load_strings(0, OTP_str_functs);
ERR_load_strings(0, OTP_str_reasons);
}
#endif
}