I'm getting alot of wrongly encoding mails lately from different sources, they 
have base64 lines which exceeds the standard. I.e. in between one line
is 4 characters longer, then the next lines are all shifted by these 4 
characters.

i.e.

3/BExiJWU6pKjH8JFebBYjHyYYbVYdIqpm6HeKJd2QdGIWXqaUacDXdEZ582wBvtpiqd/IsP9zwn
DhBgOxHXEhy/CzkNjQysNxJQ492WCybahjBwpRfJRU3i0qwW1SBG+7XL4lEZ2CfaOdheE2yM3OooAAAA
AAAA

this can  happend at either the end of the message or somewhere in the middle.

I know openssl is not to blame of creating invalid base64 blocks for mime 
messages.

However, it would be easy to fix i guess - the base64 reader simply must ignore 
the rule that each line has to be a certain length.

So anyone already done the task on modifying the base64 reader for smime 
messages? I tracked it to crypto/pkcs7/pk7_mime.c function *B64_read_PKCS7

static PKCS7 *B64_read_PKCS7(BIO *bio)
{
      BIO *b64;
      PKCS7 *p7;
      if(!(b64 = BIO_new(BIO_f_base64()))) {
            PKCS7err(PKCS7_F_B64_READ_PKCS7,ERR_R_MALLOC_FAILURE);
            return 0;
      }
      bio = BIO_push(b64, bio);
      if(!(p7 = d2i_PKCS7_bio(bio, NULL))) 
            PKCS7err(PKCS7_F_B64_READ_PKCS7,PKCS7_R_DECODE_ERROR);
      BIO_flush(bio);
      bio = BIO_pop(bio);
      BIO_free(b64);
      return p7;
}

im not certain at which point i have todo the change tho.

BTW: One "popular" offender of invalid base64 encodings is blackberry clients, 
messages which are signed AND encrypted are very funny. The original encrypted 
message has the correct base64 encoding, however after decrypting and seeing 
the signed messages - there are no newlines in the base64 block - the base64 is 
just one freaking long line.


      
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to