replace macros with functions
[openssl.git] / crypto / evp / evp_lib.c
index a431945ef5c4e7df70b9b0db1720d369d7661e8d..745475bebcd4892499a7e0082d96de774c2786b0 100644 (file)
@@ -68,7 +68,7 @@ int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
        if (c->cipher->set_asn1_parameters != NULL)
                ret=c->cipher->set_asn1_parameters(c,type);
        else
-               ret=1;
+               ret=-1;
        return(ret);
        }
 
@@ -79,19 +79,21 @@ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
        if (c->cipher->get_asn1_parameters != NULL)
                ret=c->cipher->get_asn1_parameters(c,type);
        else
-               ret=1;
+               ret=-1;
        return(ret);
        }
 
 int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
        {
-       int i=0,l;
+       int i=0;
+       unsigned int l;
 
        if (type != NULL) 
                {
                l=EVP_CIPHER_CTX_iv_length(c);
+               OPENSSL_assert(l <= sizeof(c->iv));
                i=ASN1_TYPE_get_octetstring(type,c->oiv,l);
-               if (i != l)
+               if (i != (int)l)
                        return(-1);
                else if (i > 0)
                        memcpy(c->iv,c->oiv,l);
@@ -101,11 +103,13 @@ int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
 
 int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
        {
-       int i=0,j;
+       int i=0;
+       unsigned int j;
 
        if (type != NULL)
                {
                j=EVP_CIPHER_CTX_iv_length(c);
+               OPENSSL_assert(j <= sizeof(c->iv));
                i=ASN1_TYPE_set_octetstring(type,c->oiv,j);
                }
        return(i);
@@ -131,6 +135,30 @@ int EVP_CIPHER_type(const EVP_CIPHER *ctx)
 
                return NID_rc4;
 
+               case NID_aes_128_cfb128:
+               case NID_aes_128_cfb8:
+               case NID_aes_128_cfb1:
+
+               return NID_aes_128_cfb128;
+
+               case NID_aes_192_cfb128:
+               case NID_aes_192_cfb8:
+               case NID_aes_192_cfb1:
+
+               return NID_aes_192_cfb128;
+
+               case NID_aes_256_cfb128:
+               case NID_aes_256_cfb8:
+               case NID_aes_256_cfb1:
+
+               return NID_aes_256_cfb128;
+
+               case NID_des_cfb64:
+               case NID_des_cfb8:
+               case NID_des_cfb1:
+
+               return NID_des_cfb64;
+
                default:
                /* Check it has an OID and it is valid */
                otmp = OBJ_nid2obj(nid);
@@ -140,3 +168,112 @@ int EVP_CIPHER_type(const EVP_CIPHER *ctx)
        }
 }
 
+int EVP_CIPHER_block_size(const EVP_CIPHER *e)
+       {
+       return e->block_size;
+       }
+
+int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->cipher->block_size;
+       }
+
+int EVP_Cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl)
+       {
+       return ctx->cipher->do_cipher(ctx,out,in,inl);
+       }
+
+const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->cipher;
+       }
+
+unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher)
+       {
+       return cipher->flags;
+       }
+
+unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->cipher->flags;
+       }
+
+void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->app_data;
+       }
+
+void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data)
+       {
+       ctx->app_data = data;
+       }
+
+int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher)
+       {
+       return cipher->iv_len;
+       }
+
+int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->cipher->iv_len;
+       }
+
+int EVP_CIPHER_key_length(const EVP_CIPHER *cipher)
+       {
+       return cipher->key_len;
+       }
+
+int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->cipher->key_len;
+       }
+
+int EVP_CIPHER_nid(const EVP_CIPHER *cipher)
+       {
+       return cipher->nid;
+       }
+
+int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx)
+       {
+       return ctx->cipher->nid;
+       }
+
+int EVP_MD_block_size(const EVP_MD *md) 
+       {
+       return md->block_size;
+       }
+
+int EVP_MD_type(const EVP_MD *md)
+       {
+       return md->type;
+       }
+
+int EVP_MD_pkey_type(const EVP_MD *md)
+       {
+       return md->pkey_type;
+       }
+
+int EVP_MD_size(const EVP_MD *md)
+       {
+       return md->md_size;
+       }
+
+const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx)
+       {
+       return ctx->digest;
+       }
+
+void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags)
+       {
+       ctx->flags |= flags;
+       }
+
+void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags)
+       {
+       ctx->flags &= ~flags;
+       }
+
+int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags)
+       {
+       return (ctx->flags & flags);
+       }