Sorry once again for all my questions; I only resort to this list when I've tried everything else.<div><br></div><div>I'm trying to make classes that encapsulate various things in Botan. The one below is meant to create digital signatures. You'll notice that I try my best to optimize performance by making rng a global variable and signer a class data member, so I don't have to keep recreating them locally. The problem is that when I try to perform this->signer->sign_message(), it creates a segmentation fault.</div>
<div><br></div><div>I admit I'm still an amateur at C++, so if I could get an explanation about what I'm doing wrong I would really appreciate it.</div><div><br></div><div><div>class MySigner</div><div>{</div><div>
  public:</div><div>    MySigner (string privateKey)</div><div>    {</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>DataSource_Memory key_src(privateKey);</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>auto_ptr<PKCS8_PrivateKey> loadedPrivateKey(PKCS8::load_key(key_src, rng));</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>RSA_PrivateKey* rsaPrivateKey = dynamic_cast<RSA_PrivateKey*>(loadedPrivateKey.get());</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>PK_Signing_Key* key = dynamic_cast<PK_Signing_Key*>(rsaPrivateKey);</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>this->signer = get_pk_signer(*key, "EMSA4(SHA-1)");</div><div>    }</div><div><br></div><div>    string Sign (string message)</div><div>    {</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>byte *msg = (unsigned char*) message.c_str();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return b64_encode(this->signer->sign_message(msg, sizeof(msg), rng));</div>
<div>    }</div><div>  private:</div><div>    PK_Signer* signer;</div><div>};</div></div>