<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Answering my own question - I forgot the END of sequence in the marco.<div class=""><br class=""></div><div class="">Functional code below.<br class=""><div><br class=""></div><div>Dw.</div><div><br class=""><blockquote type="cite" class=""><div class="">On 28 Aug 2020, at 15:49, Dirk-Willem van Gulik <<a href="mailto:dirkx@webweaving.org" class="">dirkx@webweaving.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">I've got a very simple sequence of to integers that I am trying to convert to DER.<br class=""><br class="">Bt I am getting an error or segfault in the final i2d step (lengt -1 for i2d_X9_62).<br class=""><br class="">Any advice on what is going wrong here ?<br class=""><br class="">With kind regards,<br class=""><br class="">Dw.<br class=""></div></div></blockquote><br class=""></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <openssl/bn.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <openssl/ec.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <openssl/asn1.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <openssl/asn1t.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <err.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <assert.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">#include <stdio.h></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">typedef struct X962_st {</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre"> </span>ASN1_INTEGER *p;</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>ASN1_INTEGER *q;</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">} X962;</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">DECLARE_ASN1_FUNCTIONS(X962)</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">ASN1_SEQUENCE(X962) =</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">{</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>ASN1_SIMPLE(X962, p, ASN1_INTEGER),</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>ASN1_SIMPLE(X962, q, ASN1_INTEGER)</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">}ASN1_SEQUENCE_END(X962);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">DECLARE_ASN1_ALLOC_FUNCTIONS(X962)</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">IMPLEMENT_ASN1_FUNCTIONS(X962)</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">int<span class="Apple-tab-span" style="white-space:pre">      </span>main(int argc, char **argv)</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">{</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>const unsigned char pbin[] = {1, 2, 3, 4, 5, 6, 7, 8, </span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">            </span>1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8};</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>const unsigned char qbin[] = {0, 0, 0, 0, 0, 0, 0, 0, </span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">            </span>1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8};</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>assert(sizeof(pbin) == 32);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>assert(sizeof(qbin) == 32);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>X962          *x962 = X962_new();</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>BIGNUM * p = BN_bin2bn(pbin, sizeof(pbin), NULL);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>assert(p);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>x962->p = BN_to_ASN1_INTEGER(p, NULL);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>fprintf(stderr,"P: %s\n",BN_bn2hex(p));</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>assert(x962->p);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>BIGNUM * q = BN_bin2bn(qbin, sizeof(qbin), NULL);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>assert(q);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>x962->q = BN_to_ASN1_INTEGER(q, NULL);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>fprintf(stderr,"Q: %s\n",BN_bn2hex(q));</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">      </span>assert(x962->q);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">  </span>int len = i2d_X962(x962, NULL);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>assert(len>0 && len < 1000);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>unsigned char<span class="Apple-tab-span" style="white-space:pre">               </span>buff[32 * 1024];</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>unsigned char           *outp = buff;</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">       </span>len = i2d_X962(x962, &outp );</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>for (size_t i = 0; i < len; i++)</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">            </span>putchar(buff[i]);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>X962_free(x962);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><span class="Apple-tab-span" style="white-space:pre">     </span>return (0);</span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class=""><br class=""></span></font></div><div class=""><font color="#5856d6" class=""><span style="caret-color: rgb(88, 86, 214);" class="">};</span></font></div><div class=""><br class=""></div></div></body></html>