+#ifdef RSA_OPENSSL
+
+ if ( !(p = Ustrstr(sig->rsa_privkey, "-----BEGIN RSA PRIVATE KEY-----"))
+ || !(q = Ustrstr(p+=31, "-----END RSA PRIVATE KEY-----"))
+ )
+ return PDKIM_ERR_RSA_PRIVKEY;
+ *q = '\0';
+ if ( (len = b64decode(p, &p)) < 0
+ || !(rsa = d2i_RSAPrivateKey(NULL, CUSS &p, len))
+ )
+ /*XXX todo: get errstring from library */
+ return PDKIM_ERR_RSA_PRIVKEY;
+
+#elif defined(RSA_GNUTLS)