Print the debug thingies on stderr instead of stdout. If for nothing
[openssl.git] / crypto / evp / evp_lib.c
index d49ae90c775f47484bcfdb841b27ea2688684c5a..b532c45de304ab2f9c8c4cb757d5df5dff833e74 100644 (file)
@@ -85,13 +85,15 @@ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
 
 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,20 +103,23 @@ 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);
        }
 
 /* Convert the various cipher NIDs and dummies to a proper OID NID */
-int EVP_CIPHER_type(EVP_CIPHER *ctx)
+int EVP_CIPHER_type(const EVP_CIPHER *ctx)
 {
        int nid;
+       ASN1_OBJECT *otmp;
        nid = EVP_CIPHER_nid(ctx);
 
        switch(nid) {
@@ -130,8 +135,35 @@ int EVP_CIPHER_type(EVP_CIPHER *ctx)
 
                return NID_rc4;
 
-               default:
+               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);
+               if(!otmp || !otmp->data) nid = NID_undef;
+               ASN1_OBJECT_free(otmp);
                return nid;
        }
 }