Sven,

In 1, if i2d_ASN1_OBJECT's second argument is 0 (or NULL), ASN1_object_size
returns the complete length of the object identifier including:

identifier octets
length octets
content octets

This is good.

If i2d_ASN1_OBJECT's second argument is not 0, only the length of the
content octets is returned. This is bad. In most cases the difference will
be two, but not necessarily.

Unfortunately, I do not have a fix, yet.

Frank

> -----Original Message-----
> From: Sven Heiberg [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, August 22, 2000 6:10 AM
> To: [EMAIL PROTECTED]
> Subject: Several issues concerning ASN1 in OpenSSL
> 
> 
> 
> Hi!
> 
> I'm not sure whether all topics touched describe bugs or not. At least
> these are things which seem unnatural to me. Thank you in 
> advance for your
> attention and patience.
> 
>       Sven Heiberg
> 
> -------------------------------------------------------------
> 
> 1. Problem with i2d_ASN1_OBJECT
> 
> My code: 
> 
> ASN1_OBJECT *obj = OBJ_nid2obj(NID_sha1);
> unsigned char *asn = 0;
> int length_before = i2d_ASN1_OBJECT(obj, 0);
> asn = new unsigned char[length_before];
> unsigned char *res = asn;
> int length_after = i2d_ASN1_OBJECT(obj, &asn);
> 
> Problem is that length_before and length_after differ by 2. 
> This does not
> seem to be normal behaviour and causes trouble when i'm using 
> length_after
> to save DER encoded ASN1_OBJECT.
> 
> --------------------------------------------------------------
> 
> 2. Problem with ASN1_INTEGER_to_BN
> 
> In OpenSSL there is following code:
> 
> BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai, BIGNUM *bn)
> {
>     BIGNUM *ret;
> 
>     if ((ret=BN_bin2bn(ai->data,ai->length,bn)) == NULL)
>         ASN1err(ASN1_F_ASN1_INTEGER_TO_BN,ASN1_R_BN_LIB);
>     if(ai->type == V_ASN1_NEG_INTEGER) bn->neg = 1;
>     return(ret);
> }
> 
> I wonder what will happen if I write my code like this:
> 
> BIGNUM *mybig = NULL;
> 
> mybig = ASN1_INTEGER_to_BN(some_previously_defined_int, mybig);
> 
> In my opinion everything will be fine up to the point where BN_bin2bn
> fails. Now if (BN_bin2bn returns NULL) AND 
> (some_previously_defined_int
> happens to be negative) then SIGSEGV is on the fly. Am I right?
> 
> Also note that ASN1_INTEGER_to_BN and BN_to_ASN1_INTEGER do not check
> whether their first argument is NULL or not. Is this intended 
> behaviour?
> 
> --------------------------------------------------------------
> 
> 3. Problem with i2d_PKCS and d2i_PKCS
> 
> If i read rfc2630 and rfc2315 then i notice that one can define other
> contentTypes for CMS data instead of data, signed-data, 
> enveloped-data ...
> which are defined in rfc2630. Now i defined my own OID and 
> tried to use it
> with PKCS. It doesn't work 'cause if PKCS doesn't recognize 
> the OID used
> the attatched data will not be saved. Why is it not possible to do
> following:
> 
> if OpenSSL recognizes the data type encapsulated in PKCS then the data
> will be interpreted. If OpenSSL doesn't recognize the data type it is
> handled so as if it was arbitrary der-encoded byte array there? (This
> means it's also saved and loaded during i2d and d2i functions).
> 
> ---------------------------------------------------------------
> 
> My testlog:
> 
> OpenSSL self-test report:
> 
> OpenSSL version:  0.9.5a
> Last change:      Make sure _lrotl and _lrotr are only used 
> with MSVC....
> OS (uname):       Linux ondatra.tartu-labor 2.2.14-6.1.1 #2 T 
> apr 25 19:06:55 EET 2000 i686 unknown
> OS (config):      i686-whatever-linux2
> Target (default): linux-elf
> Target:           linux-elf
> Compiler:         gcc version 2.95.3 19991030 (prerelease)
> 
> Test passed.
> 
> 
>       Sven Heiberg
> 
> ______________________________________________________________________
> OpenSSL Project                                 http://www.openssl.org
> Development Mailing List                       [EMAIL PROTECTED]
> Automated List Manager                           [EMAIL PROTECTED]
> 
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to