+ RSAPUB_BNS(RSAPUB_LOADCORE_GETBN)
+
+ rsa_sethash(l,&st->common,&st->ops.hash);
+
+ return st;
+
+ error_out:
+ rsapub_dispose(st);
+ return 0;
+}
+
+static list_t *rsapub_apply(closure_t *self, struct cloc loc, dict_t *context,
+ list_t *args)
+{
+ struct load_ctx l[1];
+ l->verror=verror_cfgfatal;
+ l->postreadcheck=0;
+ l->what="rsa-public";
+ l->deprdict=context;
+ l->loc=loc;
+
+#define RSAPUB_APPLY_GETBN(ix,en,what) \
+ item_t *en##i; \
+ const char *en##s; \
+ en##i=list_elem(args,ix); \
+ if (!en##i) \
+ cfgfatal(loc,"rsa-public", \
+ "you must provide an encryption key\n"); \
+ struct cloc en##_loc=en##i->loc; \
+ if (en##i->type!=t_string) \
+ cfgfatal(en##_loc,"rsa-public", \
+ "first argument must be a string\n"); \
+ en##s=en##i->data.string;
+