From 0a47af04f679313d87cfe656c1bba67740e165bb Mon Sep 17 00:00:00 2001 From: Hans-Joerg Hoexer Date: Fri, 23 Jan 2004 16:58:44 +0000 Subject: evp api and manual page for acss ok deraadt@ markus@ --- lib/libcrypto/evp/e_acss.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/libcrypto/evp/e_acss.c (limited to 'lib') diff --git a/lib/libcrypto/evp/e_acss.c b/lib/libcrypto/evp/e_acss.c new file mode 100644 index 00000000000..f4e55f1030c --- /dev/null +++ b/lib/libcrypto/evp/e_acss.c @@ -0,0 +1,85 @@ +/* $Id: e_acss.c,v 1.1 2004/01/23 16:58:43 hshoexer Exp $ */ +/* + * Copyright (c) 2004 The OpenBSD project + * + * 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 THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR 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. + */ + +#ifndef OPENSSL_NO_ACSS + +#include "cryptlib.h" +#include +#include +#include "evp_locl.h" +#include + +typedef struct { + ACSS_KEY ks; +} EVP_ACSS_KEY; + +#define data(ctx) EVP_C_DATA(EVP_ACSS_KEY,ctx) + +static int acss_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc); +static int acss_ciph(EVP_CIPHER_CTX *ctx, unsigned char *out, + const unsigned char *in, unsigned int inl); +static int acss_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +static const EVP_CIPHER acss_cipher = { + NID_undef, + 1,5,0, + 0, + acss_init_key, + acss_ciph, + NULL, + sizeof(EVP_ACSS_KEY), + NULL, + NULL, + acss_ctrl, + NULL +}; + +const +EVP_CIPHER *EVP_acss(void) +{ + return(&acss_cipher); +} + +static int +acss_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, + const unsigned char *iv, int enc) +{ + acss_setkey(&data(ctx)->ks,key,enc,ACSS_DATA); + return 1; +} + +static int +acss_ciph(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, + unsigned int inl) +{ + acss(&data(ctx)->ks,inl,in,out); + return 1; +} + +static int +acss_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) +{ + switch(type) { + case EVP_CTRL_SET_ACSS_MODE: + data(ctx)->ks.mode = arg; + return 1; + + default: + return -1; + } +} +#endif -- cgit v1.2.3