<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span style="font-size: 14px;" class="">Hi! I’m a hobbiest developer. I’m trying to execute this command using C functions in objective C. The output using this subcommand and its functions are very different. I’d been reading the open source smime.c file but I don’t understand where is my mistake. Nevertheless I don’t know where I can get a detailed documentation of the flags. Below I paste my code and a stack overflow question I had asked. Thanks for your time.<br class=""><br class="">openssl smime -sign -signer *certificate.cer* -inkey *myKey* -outoutFile.xml.cms -in *infile.xml -outform PEM -nodetach</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class=""><br class="">I do try to do this in Objective-C, but the length of the string which I end up is very different.<br class=""><br class="">SSL_library_init();</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">OPENSSL_add_all_algorithms_noconf</span><span style="font-size: 14px;" class="">();</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><span style="font-size: 14px;" class="">OpenSSL_add_all_digests();<br class="">//Load the private key</span><br class=""><span style="font-size: 14px;" class="">NSString *privateKeyPath = [[NSBundle mainBundle]pathForResource:@"nameOfPrivateKeyFile" ofType:@"”];</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span><div class=""><span style="font-size: 14px;" class="">BIO</span><span style="font-size: 14px;" class="">*</span><span style="font-size: 14px;" class=""> bio </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> BIO_new_file</span><span style="font-size: 14px;" class="">([</span><span style="font-size: 14px;" class="">privateKeyPath cStringUsingEncoding</span><span style="font-size: 14px;" class="">:</span><span style="font-size: 14px;" class="">NSUTF8StringEncoding</span><span style="font-size: 14px;" class="">],</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">"rb"</span><span style="font-size: 14px;" class="">);</span></div><span style="font-size: 14px;" class="">if (!bio) {<br class=""></span><span style="font-size: 14px;" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>NSLog(@"Error %s (%d)",strerror(errno), errno);<br class="">}</span><div class=""><br class=""></div><div class=""><span style="font-size: 14px;" class="">EVP_PKEY</span><span style="font-size: 14px;" class="">*</span><span style="font-size: 14px;" class=""> pkey </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">;</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">PEM_read_bio_PrivateKey</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">bio</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">&</span><span style="font-size: 14px;" class="">pkey</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">);</span></div><div class=""><br class=""></div><span style="font-size: 14px;" class="">if (!pkey) {</span><span style="font-size: 14px;" class="">    </span><span style="font-size: 14px;" class=""><br class=""></span><span style="font-size: 14px;" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>NSLog(@"problem");<br class="">}</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">BIO_free_all</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">bio</span><span style="font-size: 14px;" class="">);</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">// Load the certificate</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">X509</span><span style="font-size: 14px;" class="">*</span><span style="font-size: 14px;" class=""> certificate </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">;</span></div><span style="font-size: 14px;" class="">NSString *certificatePath = [[NSBundle mainBundle]pathForResource:@"certificateFilePath" ofType:@"cer"];</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">bio </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> BIO_new_file</span><span style="font-size: 14px;" class="">([</span><span style="font-size: 14px;" class="">certificatePath cStringUsingEncoding</span><span style="font-size: 14px;" class="">:</span><span style="font-size: 14px;" class="">NSUTF8StringEncoding</span><span style="font-size: 14px;" class="">],</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">"rb"</span><span style="font-size: 14px;" class="">);</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">certificate </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> PEM_read_bio_X509_AUX</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">bio</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">);</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">BIO_free_all</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">bio</span><span style="font-size: 14px;" class="">);</span></div><div class=""><br class=""></div><span style="font-size: 14px;" class="">//Sign the binary..</span><div class=""><br class=""></div><div class=""><span style="font-size: 14px;" class="">PKCS7</span><span style="font-size: 14px;" class="">*</span><span style="font-size: 14px;" class=""> pkcs7 </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> PKCS7_sign</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> PKCS7_PARTIAL</span><span style="font-size: 14px;" class="">);</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">PKCS7_sign_add_signer</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">pkcs7</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> certificate</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> pkey</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> PKCS7_PARTIAL</span><span style="font-size: 14px;" class="">);</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">PKCS7_final</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">pkcs7</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> NULL</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class=""> PKCS7_PARTIAL</span><span style="font-size: 14px;" class="">);</span></div><div class=""><br class=""></div><span style="font-size: 14px;" class="">if (!pkcs7) {</span><span style="font-size: 14px;" class="">    </span><span style="font-size: 14px;" class=""><br class=""></span><span style="font-size: 14px;" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>NSLog(@“Problem in PKCS7");<br class="">}</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">BIO_free_all</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">bio</span><span style="font-size: 14px;" class="">);</span></div><div class=""><br class=""></div><span style="font-size: 14px;" class="">//Load file to sign..<br class="">NSString *fileToWritePath = [[NSBundle mainBundle]pathForResource:@"fileToEncrypt" ofType:@"xml"];</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">bio </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> BIO_new_file</span><span style="font-size: 14px;" class="">([</span><span style="font-size: 14px;" class="">fileToWritePath cStringUsingEncoding</span><span style="font-size: 14px;" class="">:</span><span style="font-size: 14px;" class="">NSUTF8StringEncoding</span><span style="font-size: 14px;" class="">],</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">"rb"</span><span style="font-size: 14px;" class="">);</span></div><div class=""><span style="font-size: 14px;" class="">NSString</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">*</span><span style="font-size: 14px;" class="">fileToSignPath </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">[[</span><span style="font-size: 14px;" class="">NSBundle</span><span style="font-size: 14px;" class=""> mainBundle</span><span style="font-size: 14px;" class="">]</span><span style="font-size: 14px;" class="">pathForResource</span><span style="font-size: 14px;" class="">:@</span><span style="font-size: 14px;" class="">"fileToSign"</span><span style="font-size: 14px;" class=""> ofType</span><span style="font-size: 14px;" class="">:@</span><span style="font-size: 14px;" class="">"xml"</span><span style="font-size: 14px;" class="">];</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">BIO</span><span style="font-size: 14px;" class="">*</span><span style="font-size: 14px;" class=""> bioIn </span><span style="font-size: 14px;" class="">=</span><span style="font-size: 14px;" class=""> BIO_new_file</span><span style="font-size: 14px;" class="">([</span><span style="font-size: 14px;" class="">secondTicketPath cStringUsingEncoding</span><span style="font-size: 14px;" class="">:</span><span style="font-size: 14px;" class="">NSUTF8StringEncoding</span><span style="font-size: 14px;" class="">],</span><span style="font-size: 14px;" class=""> </span><span style="font-size: 14px;" class="">"rb"</span><span style="font-size: 14px;" class="">);</span></div><span style="font-size: 14px;" class="">if (!bioIn) {</span><div class=""><span style="font-size: 14px;" class="">    </span><span style="font-size: 14px;" class="">NSLog</span><span style="font-size: 14px;" class="">(@</span><span style="font-size: 14px;" class="">"Error %s (%d)"</span><span style="font-size: 14px;" class="">,</span><span style="font-size: 14px;" class="">strerror</span><span style="font-size: 14px;" class="">(</span><span style="font-size: 14px;" class="">errno</span><span style="font-size: 14px;" class="">),</span><span style="font-size: 14px;" class=""> errno</span><span style="font-size: 14px;" class="">);</span></div><span style="font-size: 14px;" class="">}</span><div class=""><br class=""></div><span style="font-size: 14px;" class="">int rv = PEM_write_bio_PKCS7_stream(bio, pkcs7, bioIn, PKCS7_F_PKCS7_FINAL);</span><div class=""><br class=""></div><span style="font-size: 14px;" class="">if (rv == 0){</span><span style="font-size: 14px;" class="">    </span><span style="font-size: 14px;" class=""><br class=""></span><span style="font-size: 14px;" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>NSLog(@"Error writting file ");<br class="">}</span><div class=""><br class=""></div><span style="font-size: 14px;" class="">NSString *result = [NSString stringWithContentsOfFile:dalaiPath encoding:NSUTF8StringEncoding error:NULL];</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class=""><br class="">The expected result is this file in printed in text format<br class=""><br class="">-----BEGIN PKCS7-----</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">MIIG7QYJKoZIhvcNAQcCoIIG3jCCBtoCAQExCzAJBgUrDgMCGgUAMIIBWAYJKoZI</span></div><div class=""><span style="font-size: 14px;" class="">…….</span></div><div class=""><span style="font-size: 14px;" class="">qz5dxSDJ4rYBoio1ZncTIwUnpHAWwe2OTWt9wSEu3d5elPFXQ</span></div><div class=""><span style="font-size: 14px;" class="">mw</span></div><span style="font-size: 14px;" class="">==<br class="">-----END PKCS7——</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class=""><br class="">but I obtain, the length of the string is completely different (short) I cannot get the -----END PKCS7------ part of the message. Now the first part of the message seems right. But not the last.</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""><br class="">-----BEGIN PKCS7-----</span><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class="">MIIF3QYJKoZIhvcNAQcCoIIFzjCCBcoCAQExDzANBglghkgBZQMEAgEFADAPBgkq</span></div><div class=""><span style="font-size: 14px;" class="">…….</span></div><div class=""><span style="font-size: 14px;" class="">aPdcT7Wg5StNrGYsmmRzxaY=</span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><div class=""><span style="font-size: 14px;" class=""><br class=""></span></div><span style="font-size: 14px;" class="">Can anyone please give a clue of what I may be doing wrong?<br class=""><br class="">Thanks</span></div></div></div></body></html>