Subversion Repositories

?revision_form?Rev ?revision_input??revision_submit??revision_endform?

Rev 50 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
47 holmgren 1
#! /bin/sh /usr/share/dpatch/dpatch-run
2
## 02_smartlink_rpath.dpatch
3
##
50 holmgren 4
## DP: Changes from CVS to make the Nettle module compile with Nettle 2.0
60 holmgren 5
## DP: Unfortunately Pike 7.8 doesn't support precompilation of C modules
6
## DP: without an already installed Pike.
47 holmgren 7
 
8
@DPATCH@
9
 
10
diff -urad Pike-v7.8.316/src/post_modules/Nettle/cipher.cmod pike-cvs/7.8/src/post_modules/Nettle/cipher.cmod
11
--- Pike-v7.8.316/src/post_modules/Nettle/cipher.cmod	2008-07-31 16:52:27.000000000 +0200
12
+++ pike-cvs/7.8/src/post_modules/Nettle/cipher.cmod	2009-07-02 18:35:38.000000000 +0200
13
@@ -79,8 +86,8 @@
14
   pike_nettle_set_key_func set_encrypt_key;
15
   pike_nettle_set_key_func set_decrypt_key;
16
 
17
-  nettle_crypt_func encrypt;
18
-  nettle_crypt_func decrypt;
50 holmgren 19
+  nettle_crypt_func *encrypt;
20
+  nettle_crypt_func *decrypt;
47 holmgren 21
 };
22
 
23
 #define _PIKE_CIPHER(name, NAME) {		\
24
@@ -90,8 +97,8 @@
25
   NAME##_KEY_SIZE,				\
26
   pike_##name##_set_encrypt_key,		\
27
   pike_##name##_set_decrypt_key,		\
28
-  (nettle_crypt_func) name##_encrypt,		\
29
-  (nettle_crypt_func) name##_decrypt,		\
50 holmgren 30
+  (nettle_crypt_func*) name##_encrypt,			\
31
+  (nettle_crypt_func*) name##_decrypt,			\
47 holmgren 32
 }
33
 
34
 /*! @class CipherInfo
35
@@ -175,7 +182,7 @@
36
 PIKECLASS CipherState
37
 {
38
   INHERIT CipherInfo;
39
-  CVAR nettle_crypt_func crypt;
50 holmgren 40
+  CVAR nettle_crypt_func *crypt;
47 holmgren 41
   CVAR void *ctx;
42
   CVAR int key_size;
43
 
44
diff -urad Pike-v7.8.316/src/post_modules/Nettle/nettle.cmod pike-cvs/7.8/src/post_modules/Nettle/nettle.cmod
45
--- Pike-v7.8.316/src/post_modules/Nettle/nettle.cmod	2008-06-29 00:57:14.000000000 +0200
46
+++ pike-cvs/7.8/src/post_modules/Nettle/nettle.cmod	2009-07-05 21:41:58.000000000 +0200
50 holmgren 47
@@ -46,6 +46,21 @@
47 holmgren 48
   CVAR struct yarrow256_ctx ctx;
49
   CVAR struct yarrow_source *sources;
50
 
51
+  PIKEVAR string seed_file flags ID_PRIVATE|ID_STATIC;
52
+
53
+  DECLARE_STORAGE;
54
+
55
+  static void pike_generate_seed_file(void)
56
+  {
57
+    struct pike_string *seed_file =
58
+      begin_shared_string(YARROW256_SEED_FILE_SIZE);
59
+    yarrow256_random(&THIS->ctx, YARROW256_SEED_FILE_SIZE, STR0(seed_file));
60
+    if (THIS->seed_file) {
61
+      free_string(THIS->seed_file);
62
+    }
63
+    THIS->seed_file = end_shared_string(seed_file);
64
+  }
65
+
66
   /*! @decl void create(void|int sources)
67
    *! The number of entropy sources that will feed entropy to the
68
    *! random number generator is given as an argument to Yarrow
69
@@ -90,10 +120,12 @@
70
     optflags OPT_SIDE_EFFECT;
71
   {
72
     if(data->len < YARROW256_SEED_FILE_SIZE)
73
-      Pike_error( "Seed must be at least 32 characters.\n" );
74
+      Pike_error("Seed must be at least %d characters.\n",
75
+		 YARROW256_SEED_FILE_SIZE);
76
 
77
     NO_WIDE_STRING(data);
78
-    yarrow256_seed(&THIS->ctx, data->len, (const uint8_t *)data->str);
79
+    yarrow256_seed(&THIS->ctx, data->len, STR0(data));
80
+    pike_generate_seed_file();
81
     RETURN this_object();
82
   }
83
 
50 holmgren 84
@@ -109,19 +141,26 @@
47 holmgren 85
     RETURN YARROW256_SEED_FILE_SIZE;
86
   }
87
 
88
-  /*! @decl string get_seed()
89
-   *! Returns part of the internal state so that it can
90
-   *! be saved for later seeding.
91
+  /*! @decl string(0..255) get_seed()
92
+   *!   Returns part of the internal state so that it can
93
+   *!   be saved for later seeding.
94
+   *!
95
    *! @seealso
96
-   *!   @[seed]
97
+   *!   @[seed()], @[random_string()]
98
    */
99
   PIKEFUN string get_seed()
100
     optflags OPT_EXTERNAL_DEPEND;
101
+    rawtype tDeprecated(tFunc(tNone, tStr8));
102
   {
103
     if( !yarrow256_is_seeded(&THIS->ctx) )
104
       Pike_error("Random generator not seeded.\n");
105
-    RETURN make_shared_binary_string((const char *)THIS->ctx.seed_file,
106
-				     YARROW256_SEED_FILE_SIZE);
107
+
108
+    if (THIS->seed_file) {
109
+      REF_RETURN THIS->seed_file;
110
+    } else {
111
+      struct pike_string *s = begin_shared_string(YARROW256_SEED_FILE_SIZE);
112
+      RETURN end_shared_string(s);
113
+    }
114
   }
115
 
116
   /*! @decl int(0..1) is_seeded()
50 holmgren 117
@@ -144,7 +188,8 @@
47 holmgren 118
   PIKEFUN void force_reseed()
119
     optflags OPT_SIDE_EFFECT;
120
   {
50 holmgren 121
-    yarrow256_force_reseed(&THIS->ctx);
47 holmgren 122
+    yarrow256_slow_reseed(&THIS->ctx);
123
+    pike_generate_seed_file();
124
   }
125
 
126
   /*! @decl int(0..1) update(string data, int source, int entropy)
127
@@ -156,6 +212,7 @@
128
   PIKEFUN int(0..1) update(string data, int source, int entropy)
129
     optflags OPT_SIDE_EFFECT;
130
   {
131
+    int ret;
132
     /* FIXME: Wide strings could actually be supported here */
133
     NO_WIDE_STRING(data);
134
     if( !THIS->sources )
135
@@ -166,8 +223,11 @@
136
       Pike_error("Entropy must be positive.\n");
137
     if( entropy>(data->len*8) )
138
       Pike_error("Impossibly large entropy value.\n");
139
-    RETURN yarrow256_update(&THIS->ctx, source, entropy, data->len,
140
-                            (const uint8_t *)data->str);
141
+    ret = yarrow256_update(&THIS->ctx, source, entropy, data->len,
142
+			   (const uint8_t *)data->str);
143
+    if (ret)
144
+      pike_generate_seed_file();
145
+    RETURN ret;
146
   }
147
 
148
   /*! @decl int(0..) needed_sources()
149
diff -urad Pike-v7.8.316/src/post_modules/Nettle/testsuite.in pike-cvs/7.8/src/post_modules/Nettle/testsuite.in
150
--- Pike-v7.8.316/src/post_modules/Nettle/testsuite.in	2007-06-18 02:43:51.000000000 +0200
151
+++ pike-cvs/7.8/src/post_modules/Nettle/testsuite.in	2009-08-05 12:01:45.000000000 +0200
152
@@ -193,4 +193,14 @@
153
   }
154
 )
155
 ]])
156
+
157
+cond_resolv( Nettle.Yarrow, [[
158
+  test_any_equal([[
159
+    object y = Nettle.Yarrow()->seed("What happen? Somebody set up us the bomb.");
160
+    return ({ y->get_seed(), y->random_string(20), y->get_seed(), y->random_string(20) });
161
+  ]], [[({String.hex2string("73a35b2f896a8061be0ad434a592a43a82b81b9ed6c018f1c5a51300bbc8d53d"),
162
+	  String.hex2string("7847458e32fb789ff6b6cd6e1c8cc3712ba532a8"),
163
+	  String.hex2string("73a35b2f896a8061be0ad434a592a43a82b81b9ed6c018f1c5a51300bbc8d53d"),
164
+	  String.hex2string("49a090656a6d93782e169994f41005a3616d3cd7")})]])
165
+]])
166
 END_MARKER
60 holmgren 167
--- Pike-v7.8.316/src/post_modules/Nettle/nettle.c	2009-05-17 00:54:13.000000000 +0200
168
+++ pike-cvs/7.8/src/post_modules/Nettle/nettle.c	2009-08-22 21:24:50.000000000 +0200
169
@@ -64,6 +64,9 @@
170
 #undef var_sources_Yarrow_defined
171
 #define var_sources_Yarrow_defined
172
 
173
+#undef var_seed_file_Yarrow_defined
174
+#define var_seed_file_Yarrow_defined
175
+
176
 #undef THIS
177
 #define THIS ((struct Yarrow_struct *)(Pike_interpreter.frame_pointer->current_storage))
178
 
179
@@ -79,12 +82,31 @@
180
 #line 47 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
181
 struct yarrow_source *sources;
182
 #endif /* var_sources_Yarrow_defined */
183
+
184
+#ifdef var_seed_file_Yarrow_defined
185
+  struct pike_string * seed_file;
186
+
187
+#endif /* var_seed_file_Yarrow_defined */
188
 };
189
 #ifdef PIKE_DEBUG
190
 /* Ensure the struct is used in a variable declaration, or else gdb might not see it. */
191
 static struct Yarrow_struct *Yarrow_gdb_dummy_ptr;
192
 #endif
193
-/*! @decl void create(void|int sources)
194
+#line 51 "src/post_modules/Nettle/nettle.cmod"
195
+;
196
+
197
+  static void pike_generate_seed_file(void)
198
+  {
199
+    struct pike_string *seed_file =
200
+      begin_shared_string(YARROW256_SEED_FILE_SIZE);
201
+    yarrow256_random(&THIS->ctx, YARROW256_SEED_FILE_SIZE, STR0(seed_file));
202
+    if (THIS->seed_file) {
203
+      free_string(THIS->seed_file);
204
+    }
205
+    THIS->seed_file = end_shared_string(seed_file);
206
+  }
207
+
208
+  /*! @decl void create(void|int sources)
209
    *! The number of entropy sources that will feed entropy to the
210
    *! random number generator is given as an argument to Yarrow
211
    *! during instantiation.
212
@@ -102,19 +124,19 @@
213
   #define f_Yarrow_create_defined
214
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_create_fun_num = 0;
215
 DEFAULT_CMOD_STORAGE void f_Yarrow_create(INT32 args) {
216
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
217
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
218
 struct svalue * arg;
219
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
220
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
221
 if(args > 1) wrong_number_of_args_error("create",args,1);
222
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
223
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
224
 if (args > 0) {
225
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
226
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
227
 if(Pike_sp[0-args].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"void|int");
228
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
229
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
230
 arg=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
231
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
232
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
233
 } else arg = NULL;
234
-#line 58 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
235
+#line 73 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
236
 {
237
     INT32 num = 0;
238
 
239
@@ -150,23 +172,25 @@
240
   #define f_Yarrow_seed_defined
241
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_seed_fun_num = 0;
242
 DEFAULT_CMOD_STORAGE void f_Yarrow_seed(INT32 args) {
243
-#line 89 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
244
+#line 104 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
245
 struct pike_string * data;
246
-#line 89 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
247
+#line 104 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
248
 if(args != 1) wrong_number_of_args_error("seed",args,1);
249
-#line 89 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
250
+#line 104 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
251
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("seed",1,"string");
252
-#line 89 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
253
+#line 104 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
254
 debug_malloc_pass(data=Pike_sp[0-1].u.string);
255
-#line 91 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
256
+#line 106 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
257
 {
258
     if(data->len < YARROW256_SEED_FILE_SIZE)
259
-      Pike_error( "Seed must be at least 32 characters.\n" );
260
+      Pike_error("Seed must be at least %d characters.\n",
261
+		 YARROW256_SEED_FILE_SIZE);
262
 
263
     NO_WIDE_STRING(data);
264
-    yarrow256_seed(&THIS->ctx, data->len, (const uint8_t *)data->str);
265
+    yarrow256_seed(&THIS->ctx, data->len, STR0(data));
266
+    pike_generate_seed_file();
267
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
268
-#line 98 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
269
+#line 115 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
270
 }
271
 
272
   }
273
@@ -179,34 +203,41 @@
274
   #define f_Yarrow_min_seed_size_defined
275
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_min_seed_size_fun_num = 0;
276
 DEFAULT_CMOD_STORAGE void f_Yarrow_min_seed_size(INT32 args) {
277
-#line 106 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
278
+#line 123 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
279
 if(args != 0) wrong_number_of_args_error("min_seed_size",args,0);
280
-#line 108 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
281
+#line 125 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
282
 {
283
     do { INT_TYPE ret_=(YARROW256_SEED_FILE_SIZE);  push_int(ret_); return; }while(0);
284
-#line 110 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
285
+#line 127 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
286
 }
287
 
288
   }
289
-/*! @decl string get_seed()
290
-   *! Returns part of the internal state so that it can
291
-   *! be saved for later seeding.
292
+/*! @decl string(0..255) get_seed()
293
+   *!   Returns part of the internal state so that it can
294
+   *!   be saved for later seeding.
295
+   *!
296
    *! @seealso
297
-   *!   @[seed]
298
+   *!   @[seed()], @[random_string()]
299
    */
300
   #define f_Yarrow_get_seed_defined
301
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_get_seed_fun_num = 0;
302
 DEFAULT_CMOD_STORAGE void f_Yarrow_get_seed(INT32 args) {
303
-#line 118 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
304
+#line 136 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
305
 if(args != 0) wrong_number_of_args_error("get_seed",args,0);
306
-#line 120 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
307
+#line 139 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
308
 {
309
     if( !yarrow256_is_seeded(&THIS->ctx) )
310
       Pike_error("Random generator not seeded.\n");
311
-    do { struct pike_string * ret_=(make_shared_binary_string((const char *)THIS->ctx.seed_file,
312
-				     YARROW256_SEED_FILE_SIZE));  push_string(ret_); return; }while(0);
313
-#line 125 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
314
+
315
+    if (THIS->seed_file) {
316
+      do { struct pike_string * ret_=(THIS->seed_file); add_ref(ret_);  push_string(ret_); return; }while(0);
317
+#line 145 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
318
+} else {
319
+      struct pike_string *s = begin_shared_string(YARROW256_SEED_FILE_SIZE);
320
+      do { struct pike_string * ret_=(end_shared_string(s));  push_string(ret_); return; }while(0);
321
+#line 148 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
322
 }
323
+  }
324
 
325
   }
326
 /*! @decl int(0..1) is_seeded()
327
@@ -218,12 +249,12 @@
328
   #define f_Yarrow_is_seeded_defined
329
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_is_seeded_fun_num = 0;
330
 DEFAULT_CMOD_STORAGE void f_Yarrow_is_seeded(INT32 args) {
331
-#line 133 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
332
+#line 157 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
333
 if(args != 0) wrong_number_of_args_error("is_seeded",args,0);
334
-#line 135 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
335
+#line 159 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
336
 {
337
     do { INT_TYPE ret_=(yarrow256_is_seeded(&THIS->ctx));  push_int(ret_); return; }while(0);
338
-#line 137 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
339
+#line 161 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
340
 }
341
 
342
   }
343
@@ -235,11 +266,12 @@
344
   #define f_Yarrow_force_reseed_defined
345
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_force_reseed_fun_num = 0;
346
 DEFAULT_CMOD_STORAGE void f_Yarrow_force_reseed(INT32 args) {
347
-#line 144 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
348
+#line 168 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
349
 if(args != 0) wrong_number_of_args_error("force_reseed",args,0);
350
-#line 146 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
351
+#line 170 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
352
 {
353
-    yarrow256_force_reseed(&THIS->ctx);
354
+    yarrow256_slow_reseed(&THIS->ctx);
355
+    pike_generate_seed_file();
356
   }
357
 
358
   }
359
@@ -252,28 +284,29 @@
360
   #define f_Yarrow_update_defined
361
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_update_fun_num = 0;
362
 DEFAULT_CMOD_STORAGE void f_Yarrow_update(INT32 args) {
363
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
364
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
365
 struct pike_string * data;
366
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
367
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
368
 INT_TYPE source;
369
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
370
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
371
 INT_TYPE entropy;
372
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
373
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
374
 if(args != 3) wrong_number_of_args_error("update",args,3);
375
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
376
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
377
 if(Pike_sp[0-3].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("update",1,"string");
378
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
379
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
380
 debug_malloc_pass(data=Pike_sp[0-3].u.string);
381
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
382
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
383
 if(Pike_sp[1-3].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("update",2,"int");
384
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
385
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
386
 source=Pike_sp[1-3].u.integer;
387
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
388
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
389
 if(Pike_sp[2-3].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("update",3,"int");
390
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
391
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
392
 entropy=Pike_sp[2-3].u.integer;
393
-#line 158 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
394
+#line 183 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
395
 {
396
+    int ret;
397
     /* FIXME: Wide strings could actually be supported here */
398
     NO_WIDE_STRING(data);
399
     if( !THIS->sources )
400
@@ -284,9 +317,12 @@
401
       Pike_error("Entropy must be positive.\n");
402
     if( entropy>(data->len*8) )
403
       Pike_error("Impossibly large entropy value.\n");
404
-    do { INT_TYPE ret_=(yarrow256_update(&THIS->ctx, source, entropy, data->len,
405
-                            (const uint8_t *)data->str)); pop_n_elems(3); push_int(ret_); return; }while(0);
406
-#line 171 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
407
+    ret = yarrow256_update(&THIS->ctx, source, entropy, data->len,
408
+			   (const uint8_t *)data->str);
409
+    if (ret)
410
+      pike_generate_seed_file();
411
+    do { INT_TYPE ret_=(ret); pop_n_elems(3); push_int(ret_); return; }while(0);
412
+#line 200 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
413
 }
414
 
415
   }
416
@@ -297,12 +333,12 @@
417
   #define f_Yarrow_needed_sources_defined
418
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_needed_sources_fun_num = 0;
419
 DEFAULT_CMOD_STORAGE void f_Yarrow_needed_sources(INT32 args) {
420
-#line 177 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
421
+#line 206 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
422
 if(args != 0) wrong_number_of_args_error("needed_sources",args,0);
423
-#line 179 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
424
+#line 208 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
425
 {
426
     do { INT_TYPE ret_=(yarrow256_needed_sources(&THIS->ctx));  push_int(ret_); return; }while(0);
427
-#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
428
+#line 210 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
429
 }
430
 
431
   }
432
@@ -312,15 +348,15 @@
433
   #define f_Yarrow_random_string_defined
434
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Yarrow_random_string_fun_num = 0;
435
 DEFAULT_CMOD_STORAGE void f_Yarrow_random_string(INT32 args) {
436
-#line 186 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
437
+#line 215 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
438
 INT_TYPE length;
439
-#line 186 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
440
+#line 215 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
441
 if(args != 1) wrong_number_of_args_error("random_string",args,1);
442
-#line 186 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
443
+#line 215 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
444
 if(Pike_sp[0-1].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("random_string",1,"int");
445
-#line 186 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
446
+#line 215 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
447
 length=Pike_sp[0-1].u.integer;
448
-#line 188 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
449
+#line 217 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
450
 {
451
     struct pike_string *rnd;
452
     if(length < 0)
453
@@ -330,7 +366,7 @@
454
     rnd = begin_shared_string(length);
455
     yarrow256_random(&THIS->ctx, length, (uint8_t *)rnd->str);
456
     do { struct pike_string * ret_=(end_shared_string(rnd)); pop_stack(); push_string(ret_); return; }while(0);
457
-#line 197 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
458
+#line 226 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
459
 }
460
 
461
   }
462
@@ -341,7 +377,7 @@
463
 #undef Yarrow_event_handler_defined
464
 #define Yarrow_event_handler_defined
465
 static void init_Yarrow_struct(void)
466
-#line 200 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
467
+#line 229 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
468
 {
469
     THIS->sources = NULL;
470
     yarrow256_init(&THIS->ctx, 0, NULL);
471
@@ -354,7 +390,7 @@
472
 #undef Yarrow_event_handler_defined
473
 #define Yarrow_event_handler_defined
474
 static void exit_Yarrow_struct(void)
475
-#line 207 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
476
+#line 236 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
477
 {
478
     if( THIS->sources )
479
     {
480
@@ -390,21 +426,21 @@
481
 #define f_crypt_md5_defined
482
 DEFAULT_CMOD_STORAGE ptrdiff_t f_crypt_md5_fun_num = 0;
483
 DEFAULT_CMOD_STORAGE void f_crypt_md5(INT32 args) {
484
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
485
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
486
 struct pike_string * pw;
487
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
488
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
489
 struct pike_string * salt;
490
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
491
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
492
 if(args != 2) wrong_number_of_args_error("crypt_md5",args,2);
493
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
494
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
495
 if(Pike_sp[0-2].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("crypt_md5",1,"string");
496
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
497
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
498
 debug_malloc_pass(pw=Pike_sp[0-2].u.string);
499
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
500
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
501
 if(Pike_sp[1-2].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("crypt_md5",2,"string");
502
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
503
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
504
 debug_malloc_pass(salt=Pike_sp[1-2].u.string);
505
-#line 224 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
506
+#line 253 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
507
 {
508
   char *hash;
509
   NO_WIDE_STRING(pw);
510
@@ -417,7 +453,7 @@
511
 
512
 
513
 }
514
-#line 235 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
515
+#line 264 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
516
 static const char *crypto_functions[] = {
517
   "block_size",
518
   "key_size",
519
@@ -529,22 +565,22 @@
520
 struct CBC_struct {
521
 
522
 #ifdef var_object_CBC_defined
523
-#line 315 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
524
+#line 344 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
525
 struct object *object;
526
 #endif /* var_object_CBC_defined */
527
 
528
 #ifdef var_iv_CBC_defined
529
-#line 316 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
530
+#line 345 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
531
 unsigned INT8 *iv;
532
 #endif /* var_iv_CBC_defined */
533
 
534
 #ifdef var_block_size_CBC_defined
535
-#line 317 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
536
+#line 346 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
537
 INT32 block_size;
538
 #endif /* var_block_size_CBC_defined */
539
 
540
 #ifdef var_mode_CBC_defined
541
-#line 318 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
542
+#line 347 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
543
 INT32 mode;
544
 #endif /* var_mode_CBC_defined */
545
 };
546
@@ -559,7 +595,7 @@
547
 #undef CBC_event_handler_defined
548
 #define CBC_event_handler_defined
549
 static void init_CBC_struct(void)
550
-#line 321 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
551
+#line 350 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
552
 {
553
     THIS->object = NULL;
554
     THIS->iv = NULL;
555
@@ -574,7 +610,7 @@
556
 #undef CBC_event_handler_defined
557
 #define CBC_event_handler_defined
558
 static void exit_CBC_struct(void)
559
-#line 330 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
560
+#line 359 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
561
 {
562
     if(THIS->object) {
563
       free_object(THIS->object);
564
@@ -643,24 +679,24 @@
565
   #define f_CBC_create_defined
566
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_create_fun_num = 0;
567
 DEFAULT_CMOD_STORAGE void f_CBC_create(INT32 args) {
568
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
569
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
570
 struct svalue * cipher;
571
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
572
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
573
 struct svalue * more;
574
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
575
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
576
 if(args < 1) wrong_number_of_args_error("create",args,1);
577
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
578
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
579
 cipher=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
580
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
581
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
582
 if (args > 1) {
583
   INT32 argcnt = 0;
584
   do {
585
     dmalloc_touch_svalue(Pike_sp+1+argcnt-args);
586
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
587
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
588
   } while (++argcnt < args-1);
589
   more=Pike_sp+1-args;
590
 } else more=0;
591
-#line 397 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
592
+#line 426 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
593
 {
594
     int old_block_size = THIS->block_size;
595
     THIS->object = make_cipher_object(args);
596
@@ -694,9 +730,9 @@
597
   #define f_CBC_name_defined
598
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_name_fun_num = 0;
599
 DEFAULT_CMOD_STORAGE void f_CBC_name(INT32 args) {
600
-#line 426 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
601
+#line 455 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
602
 if(args != 0) wrong_number_of_args_error("name",args,0);
603
-#line 428 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
604
+#line 457 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
605
 {
606
     push_constant_text("CBC(");
607
     safe_apply(THIS->object, "name", 0);
608
@@ -711,12 +747,12 @@
609
   #define f_CBC_block_size_defined
610
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_block_size_fun_num = 0;
611
 DEFAULT_CMOD_STORAGE void f_CBC_block_size(INT32 args) {
612
-#line 438 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
613
+#line 467 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
614
 if(args != 0) wrong_number_of_args_error("block_size",args,0);
615
-#line 440 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
616
+#line 469 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
617
 {
618
     do { INT_TYPE ret_=(THIS->block_size);  push_int(ret_); return; }while(0);
619
-#line 442 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
620
+#line 471 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
621
 }
622
 
623
   }
624
@@ -726,9 +762,9 @@
625
   #define f_CBC_key_size_defined
626
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_key_size_fun_num = 0;
627
 DEFAULT_CMOD_STORAGE void f_CBC_key_size(INT32 args) {
628
-#line 447 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
629
+#line 476 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
630
 if(args != 0) wrong_number_of_args_error("key_size",args,0);
631
-#line 449 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
632
+#line 478 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
633
 {
634
     safe_apply(THIS->object, "key_size", args);
635
   }
636
@@ -741,22 +777,22 @@
637
   #define f_CBC_set_encrypt_key_defined
638
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_set_encrypt_key_fun_num = 0;
639
 DEFAULT_CMOD_STORAGE void f_CBC_set_encrypt_key(INT32 args) {
640
-#line 457 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
641
+#line 486 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
642
 struct pike_string * key;
643
-#line 457 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
644
+#line 486 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
645
 if(args != 1) wrong_number_of_args_error("set_encrypt_key",args,1);
646
-#line 457 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
647
+#line 486 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
648
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_encrypt_key",1,"string");
649
-#line 457 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
650
+#line 486 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
651
 debug_malloc_pass(key=Pike_sp[0-1].u.string);
652
-#line 459 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
653
+#line 488 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
654
 {
655
     assert(THIS->block_size);
656
     THIS->mode = 0;
657
     safe_apply(THIS->object, "set_encrypt_key", args);
658
     pop_stack();
659
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
660
-#line 465 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
661
+#line 494 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
662
 }
663
 
664
   }
665
@@ -767,22 +803,22 @@
666
   #define f_CBC_set_decrypt_key_defined
667
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_set_decrypt_key_fun_num = 0;
668
 DEFAULT_CMOD_STORAGE void f_CBC_set_decrypt_key(INT32 args) {
669
-#line 471 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
670
+#line 500 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
671
 struct pike_string * key;
672
-#line 471 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
673
+#line 500 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
674
 if(args != 1) wrong_number_of_args_error("set_decrypt_key",args,1);
675
-#line 471 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
676
+#line 500 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
677
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_decrypt_key",1,"string");
678
-#line 471 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
679
+#line 500 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
680
 debug_malloc_pass(key=Pike_sp[0-1].u.string);
681
-#line 473 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
682
+#line 502 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
683
 {
684
     assert(THIS->block_size);
685
     THIS->mode = 1;
686
     safe_apply(THIS->object, "set_decrypt_key", args);
687
     pop_stack();
688
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
689
-#line 479 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
690
+#line 508 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
691
 }
692
 
693
   }
694
@@ -792,15 +828,15 @@
695
   #define f_CBC_set_iv_defined
696
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_set_iv_fun_num = 0;
697
 DEFAULT_CMOD_STORAGE void f_CBC_set_iv(INT32 args) {
698
-#line 484 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
699
+#line 513 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
700
 struct pike_string * iv;
701
-#line 484 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
702
+#line 513 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
703
 if(args != 1) wrong_number_of_args_error("set_iv",args,1);
704
-#line 484 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
705
+#line 513 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
706
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_iv",1,"string");
707
-#line 484 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
708
+#line 513 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
709
 debug_malloc_pass(iv=Pike_sp[0-1].u.string);
710
-#line 486 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
711
+#line 515 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
712
 {
713
     assert(THIS->iv);
714
     NO_WIDE_STRING(iv);
715
@@ -808,7 +844,7 @@
716
       Pike_error("Argument incompatible with cipher block size.\n");
717
     MEMCPY(THIS->iv, iv->str, THIS->block_size);
718
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
719
-#line 493 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
720
+#line 522 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
721
 }
722
 
723
   }
724
@@ -819,15 +855,15 @@
725
   #define f_CBC_crypt_defined
726
 DEFAULT_CMOD_STORAGE ptrdiff_t f_CBC_crypt_fun_num = 0;
727
 DEFAULT_CMOD_STORAGE void f_CBC_crypt(INT32 args) {
728
-#line 499 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
729
+#line 528 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
730
 struct pike_string * data;
731
-#line 499 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
732
+#line 528 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
733
 if(args != 1) wrong_number_of_args_error("crypt",args,1);
734
-#line 499 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
735
+#line 528 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
736
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("crypt",1,"string");
737
-#line 499 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
738
+#line 528 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
739
 debug_malloc_pass(data=Pike_sp[0-1].u.string);
740
-#line 499 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
741
+#line 528 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
742
 {
743
     unsigned INT8 *result;
744
     INT32 offset = 0;
745
@@ -919,22 +955,22 @@
746
 struct Proxy_struct {
747
 
748
 #ifdef var_object_Proxy_defined
749
-#line 540 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
750
+#line 569 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
751
 struct object *object;
752
 #endif /* var_object_Proxy_defined */
753
 
754
 #ifdef var_block_size_Proxy_defined
755
-#line 541 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
756
+#line 570 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
757
 int block_size;
758
 #endif /* var_block_size_Proxy_defined */
759
 
760
 #ifdef var_backlog_Proxy_defined
761
-#line 542 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
762
+#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
763
 unsigned char *backlog;
764
 #endif /* var_backlog_Proxy_defined */
765
 
766
 #ifdef var_backlog_len_Proxy_defined
767
-#line 543 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
768
+#line 572 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
769
 int backlog_len;
770
 #endif /* var_backlog_len_Proxy_defined */
771
 };
772
@@ -949,7 +985,7 @@
773
 #undef Proxy_event_handler_defined
774
 #define Proxy_event_handler_defined
775
 static void init_Proxy_struct(void)
776
-#line 545 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
777
+#line 574 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
778
 {
779
     THIS->object = NULL;
780
     THIS->block_size = 0;
781
@@ -964,7 +1000,7 @@
782
 #undef Proxy_event_handler_defined
783
 #define Proxy_event_handler_defined
784
 static void exit_Proxy_struct(void)
785
-#line 554 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
786
+#line 583 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
787
 {
788
     if(THIS->backlog) {
789
       MEMSET(THIS->backlog, 0, THIS->block_size);
790
@@ -985,24 +1021,24 @@
791
   #define f_Proxy_create_defined
792
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_create_fun_num = 0;
793
 DEFAULT_CMOD_STORAGE void f_Proxy_create(INT32 args) {
794
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
795
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
796
 struct svalue * cipher;
797
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
798
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
799
 struct svalue * more;
800
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
801
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
802
 if(args < 1) wrong_number_of_args_error("create",args,1);
803
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
804
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
805
 cipher=Pike_sp+0-args; dmalloc_touch_svalue(Pike_sp+0-args);
806
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
807
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
808
 if (args > 1) {
809
   INT32 argcnt = 0;
810
   do {
811
     dmalloc_touch_svalue(Pike_sp+1+argcnt-args);
812
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
813
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
814
   } while (++argcnt < args-1);
815
   more=Pike_sp+1-args;
816
 } else more=0;
817
-#line 573 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
818
+#line 602 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
819
 {
820
     THIS->object = make_cipher_object(args);
821
 
822
@@ -1030,9 +1066,9 @@
823
   #define f_Proxy_name_defined
824
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_name_fun_num = 0;
825
 DEFAULT_CMOD_STORAGE void f_Proxy_name(INT32 args) {
826
-#line 596 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
827
+#line 625 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
828
 if(args != 0) wrong_number_of_args_error("name",args,0);
829
-#line 598 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
830
+#line 627 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
831
 {
832
     push_constant_text("Proxy(");
833
     safe_apply(THIS->object, "name", 0);
834
@@ -1048,12 +1084,12 @@
835
   #define f_Proxy_block_size_defined
836
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_block_size_fun_num = 0;
837
 DEFAULT_CMOD_STORAGE void f_Proxy_block_size(INT32 args) {
838
-#line 609 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
839
+#line 638 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
840
 if(args != 0) wrong_number_of_args_error("block_size",args,0);
841
-#line 611 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
842
+#line 640 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
843
 {
844
     do { INT_TYPE ret_=(THIS->block_size);  push_int(ret_); return; }while(0);
845
-#line 613 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
846
+#line 642 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
847
 }
848
 
849
   }
850
@@ -1064,9 +1100,9 @@
851
   #define f_Proxy_key_size_defined
852
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_key_size_fun_num = 0;
853
 DEFAULT_CMOD_STORAGE void f_Proxy_key_size(INT32 args) {
854
-#line 619 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
855
+#line 648 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
856
 if(args != 0) wrong_number_of_args_error("key_size",args,0);
857
-#line 621 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
858
+#line 650 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
859
 {
860
     safe_apply(THIS->object, "key_size", args);
861
   }
862
@@ -1082,22 +1118,22 @@
863
   #define f_Proxy_set_encrypt_key_defined
864
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_set_encrypt_key_fun_num = 0;
865
 DEFAULT_CMOD_STORAGE void f_Proxy_set_encrypt_key(INT32 args) {
866
-#line 632 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
867
+#line 661 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
868
 struct pike_string * key;
869
-#line 632 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
870
+#line 661 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
871
 if(args != 1) wrong_number_of_args_error("set_encrypt_key",args,1);
872
-#line 632 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
873
+#line 661 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
874
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_encrypt_key",1,"string");
875
-#line 632 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
876
+#line 661 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
877
 debug_malloc_pass(key=Pike_sp[0-1].u.string);
878
-#line 634 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
879
+#line 663 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
880
 {
881
     MEMSET(THIS->backlog, 0, THIS->block_size);
882
     THIS->backlog_len = 0;
883
     safe_apply(THIS->object, "set_encrypt_key", args);
884
     pop_stack();
885
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
886
-#line 640 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
887
+#line 669 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
888
 }
889
 
890
   }
891
@@ -1111,22 +1147,22 @@
892
   #define f_Proxy_set_decrypt_key_defined
893
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_set_decrypt_key_fun_num = 0;
894
 DEFAULT_CMOD_STORAGE void f_Proxy_set_decrypt_key(INT32 args) {
895
-#line 649 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
896
+#line 678 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
897
 struct pike_string * key;
898
-#line 649 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
899
+#line 678 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
900
 if(args != 1) wrong_number_of_args_error("set_decrypt_key",args,1);
901
-#line 649 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
902
+#line 678 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
903
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("set_decrypt_key",1,"string");
904
-#line 649 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
905
+#line 678 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
906
 debug_malloc_pass(key=Pike_sp[0-1].u.string);
907
-#line 651 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
908
+#line 680 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
909
 {
910
     MEMSET(THIS->backlog, 0, THIS->block_size);
911
     THIS->backlog_len = 0;
912
     safe_apply(THIS->object, "set_decrypt_key", args);
913
     pop_stack();
914
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
915
-#line 657 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
916
+#line 686 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
917
 }
918
 
919
   }
920
@@ -1141,15 +1177,15 @@
921
   #define f_Proxy_crypt_defined
922
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_crypt_fun_num = 0;
923
 DEFAULT_CMOD_STORAGE void f_Proxy_crypt(INT32 args) {
924
-#line 667 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
925
+#line 696 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
926
 struct pike_string * data;
927
-#line 667 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
928
+#line 696 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
929
 if(args != 1) wrong_number_of_args_error("crypt",args,1);
930
-#line 667 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
931
+#line 696 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
932
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("crypt",1,"string");
933
-#line 667 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
934
+#line 696 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
935
 debug_malloc_pass(data=Pike_sp[0-1].u.string);
936
-#line 667 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
937
+#line 696 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
938
 {
939
     unsigned char *result;
940
     ptrdiff_t roffset = 0;
941
@@ -1232,9 +1268,9 @@
942
   #define f_Proxy_pad_defined
943
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_pad_fun_num = 0;
944
 DEFAULT_CMOD_STORAGE void f_Proxy_pad(INT32 args) {
945
-#line 745 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
946
+#line 774 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
947
 if(args != 0) wrong_number_of_args_error("pad",args,0);
948
-#line 745 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
949
+#line 774 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
950
 {
951
     ptrdiff_t i;
952
 
953
@@ -1266,15 +1302,15 @@
954
   #define f_Proxy_unpad_defined
955
 DEFAULT_CMOD_STORAGE ptrdiff_t f_Proxy_unpad_fun_num = 0;
956
 DEFAULT_CMOD_STORAGE void f_Proxy_unpad(INT32 args) {
957
-#line 772 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
958
+#line 801 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
959
 struct pike_string * str;
960
-#line 772 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
961
+#line 801 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
962
 if(args != 1) wrong_number_of_args_error("unpad",args,1);
963
-#line 772 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
964
+#line 801 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
965
 if(Pike_sp[0-1].type != PIKE_T_STRING) SIMPLE_ARG_TYPE_ERROR("unpad",1,"string");
966
-#line 772 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
967
+#line 801 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
968
 debug_malloc_pass(str=Pike_sp[0-1].u.string);
969
-#line 772 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
970
+#line 801 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
971
 {
972
     ptrdiff_t len;
973
 
974
@@ -1327,7 +1363,7 @@
975
 /*! @endclass
976
  */
977
 
978
-#line 806 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
979
+#line 835 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
980
 #if 0
981
 
982
 /* @class LFib
983
@@ -1359,7 +1395,7 @@
984
 struct LFib_struct {
985
 
986
 #ifdef var_ctx_LFib_defined
987
-#line 815 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
988
+#line 844 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
989
 struct knuth_lfib_ctx *ctx;
990
 #endif /* var_ctx_LFib_defined */
991
 };
992
@@ -1374,7 +1410,7 @@
993
 #undef LFib_event_handler_defined
994
 #define LFib_event_handler_defined
995
 static void init_LFib_struct(void)
996
-#line 817 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
997
+#line 846 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
998
 {
999
     THIS->ctx = xalloc(sizeof(struct knuth_lfib_ctx));
1000
   }
1001
@@ -1386,7 +1422,7 @@
1002
 #undef LFib_event_handler_defined
1003
 #define LFib_event_handler_defined
1004
 static void exit_LFib_struct(void)
1005
-#line 823 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1006
+#line 852 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1007
 {
1008
     free(THIS->ctx);
1009
   }
1010
@@ -1397,21 +1433,21 @@
1011
   #define f_LFib_create_defined
1012
 DEFAULT_CMOD_STORAGE ptrdiff_t f_LFib_create_fun_num = 0;
1013
 DEFAULT_CMOD_STORAGE void f_LFib_create(INT32 args) {
1014
-#line 830 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1015
+#line 859 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1016
 INT_TYPE seed;
1017
-#line 830 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1018
+#line 859 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1019
 if(args != 1) wrong_number_of_args_error("create",args,1);
1020
-#line 830 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1021
+#line 859 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1022
 if(Pike_sp[0-1].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("create",1,"int");
1023
-#line 830 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1024
+#line 859 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1025
 seed=Pike_sp[0-1].u.integer;
1026
-#line 832 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1027
+#line 861 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1028
 {
1029
     knuth_lfib_init(THIS->ctx, seed);
1030
   }
1031
 
1032
   }
1033
-#line 836 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1034
+#line 865 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1035
 /* @decl this_program reseed(int s)
1036
    * Reseed this object with seed @[s].
1037
    * @return
1038
@@ -1420,52 +1456,52 @@
1039
   #define f_LFib_reseed_defined
1040
 DEFAULT_CMOD_STORAGE ptrdiff_t f_LFib_reseed_fun_num = 0;
1041
 DEFAULT_CMOD_STORAGE void f_LFib_reseed(INT32 args) {
1042
-#line 841 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1043
+#line 870 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1044
 INT_TYPE s;
1045
-#line 841 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1046
+#line 870 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1047
 if(args != 1) wrong_number_of_args_error("reseed",args,1);
1048
-#line 841 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1049
+#line 870 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1050
 if(Pike_sp[0-1].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("reseed",1,"int");
1051
-#line 841 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1052
+#line 870 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1053
 s=Pike_sp[0-1].u.integer;
1054
-#line 841 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1055
+#line 870 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1056
 {
1057
     knuth_lfib_init(THIS->ctx, s);
1058
     do { struct object * ret_=(this_object()); pop_stack(); push_object(ret_); return; }while(0);
1059
-#line 844 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1060
+#line 873 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1061
 }
1062
 
1063
   }
1064
-#line 846 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1065
+#line 875 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1066
 /* Get one 32bit pseudorandom integer.
1067
    */
1068
   #define f_LFib_get_defined
1069
 DEFAULT_CMOD_STORAGE ptrdiff_t f_LFib_get_fun_num = 0;
1070
 DEFAULT_CMOD_STORAGE void f_LFib_get(INT32 args) {
1071
-#line 848 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1072
+#line 877 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1073
 if(args != 0) wrong_number_of_args_error("get",args,0);
1074
-#line 848 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1075
+#line 877 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1076
 {
1077
     do { INT_TYPE ret_=(knuth_lfib_get(THIS->ctx));  push_int(ret_); return; }while(0);
1078
-#line 850 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1079
+#line 879 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1080
 }
1081
 
1082
   }
1083
-#line 852 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1084
+#line 881 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1085
 /* Get a pseudorandom string of length @[len].
1086
    */
1087
   #define f_LFib_get_string_defined
1088
 DEFAULT_CMOD_STORAGE ptrdiff_t f_LFib_get_string_fun_num = 0;
1089
 DEFAULT_CMOD_STORAGE void f_LFib_get_string(INT32 args) {
1090
-#line 854 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1091
+#line 883 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1092
 INT_TYPE len;
1093
-#line 854 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1094
+#line 883 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1095
 if(args != 1) wrong_number_of_args_error("get_string",args,1);
1096
-#line 854 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1097
+#line 883 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1098
 if(Pike_sp[0-1].type != PIKE_T_INT) SIMPLE_ARG_TYPE_ERROR("get_string",1,"int");
1099
-#line 854 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1100
+#line 883 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1101
 len=Pike_sp[0-1].u.integer;
1102
-#line 854 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1103
+#line 883 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1104
 {
1105
     struct pike_string *s = begin_shared_string(len);
1106
     knuth_lfib_random(THIS->ctx, len, s->str);
1107
@@ -1491,7 +1527,7 @@
1108
 }
1109
 
1110
 #endif /* LFib_event_handler_defined */
1111
-#line 861 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1112
+#line 890 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1113
 /* @endclass
1114
  */
1115
 
1116
@@ -1514,10 +1550,10 @@
1117
 #ifdef class_Yarrow_defined
1118
 
1119
 #ifdef PROG_YARROW_ID
1120
-#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1121
+#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1122
   START_NEW_PROGRAM_ID(YARROW);
1123
 #else
1124
-#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1125
+#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1126
   start_new_program();
1127
 
1128
 #endif /* PROG_YARROW_ID */
1129
@@ -1533,6 +1569,11 @@
1130
   Yarrow_storage_offset = ADD_STORAGE(struct Yarrow_struct);
1131
 #endif /* THIS_YARROW */
1132
 
1133
+#ifdef var_seed_file_Yarrow_defined
1134
+  PIKE_MAP_VARIABLE("seed_file", Yarrow_storage_offset + OFFSETOF(Yarrow_struct, seed_file),
1135
+                    tString, PIKE_T_STRING, ID_PRIVATE|ID_STATIC);
1136
+#endif /* var_seed_file_Yarrow_defined */
1137
+
1138
 #ifdef Yarrow_event_handler_defined
1139
   pike_set_prog_event_callback(Yarrow_event_handler);
1140
 
1141
@@ -1545,69 +1586,69 @@
1142
 
1143
 #ifdef f_Yarrow_create_defined
1144
   f_Yarrow_create_fun_num =
1145
-#line 56 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1146
+#line 71 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1147
     ADD_FUNCTION2("create", f_Yarrow_create, tFunc(tOr(tVoid,"\10\200\0\0\0\177\377\377\377"),tVoid), ID_PROTECTED, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1148
 
1149
 #endif /* f_Yarrow_create_defined */
1150
 
1151
 #ifdef f_Yarrow_seed_defined
1152
   f_Yarrow_seed_fun_num =
1153
-#line 89 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1154
+#line 104 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1155
     ADD_FUNCTION2("seed", f_Yarrow_seed, tFunc(tString,tObj), 0, OPT_SIDE_EFFECT);
1156
 
1157
 #endif /* f_Yarrow_seed_defined */
1158
 
1159
 #ifdef f_Yarrow_min_seed_size_defined
1160
   f_Yarrow_min_seed_size_fun_num =
1161
-#line 106 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1162
+#line 123 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1163
     ADD_FUNCTION2("min_seed_size", f_Yarrow_min_seed_size, tFunc(tNone,"\10\0\0\0\0\177\377\377\377"), 0, OPT_TRY_OPTIMIZE);
1164
 
1165
 #endif /* f_Yarrow_min_seed_size_defined */
1166
 
1167
 #ifdef f_Yarrow_get_seed_defined
1168
   f_Yarrow_get_seed_fun_num =
1169
-#line 118 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1170
-    ADD_FUNCTION2("get_seed", f_Yarrow_get_seed, tFunc(tNone,tString), 0, OPT_EXTERNAL_DEPEND);
1171
+#line 136 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1172
+    ADD_FUNCTION2("get_seed", f_Yarrow_get_seed, tDeprecated(tFunc(tNone, tStr8)), 0, OPT_EXTERNAL_DEPEND);
1173
 
1174
 #endif /* f_Yarrow_get_seed_defined */
1175
 
1176
 #ifdef f_Yarrow_is_seeded_defined
1177
   f_Yarrow_is_seeded_fun_num =
1178
-#line 133 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1179
+#line 157 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1180
     ADD_FUNCTION2("is_seeded", f_Yarrow_is_seeded, tFunc(tNone,"\10\0\0\0\0\0\0\0\1"), 0, OPT_EXTERNAL_DEPEND);
1181
 
1182
 #endif /* f_Yarrow_is_seeded_defined */
1183
 
1184
 #ifdef f_Yarrow_force_reseed_defined
1185
   f_Yarrow_force_reseed_fun_num =
1186
-#line 144 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1187
+#line 168 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1188
     ADD_FUNCTION2("force_reseed", f_Yarrow_force_reseed, tFunc(tNone,tVoid), 0, OPT_SIDE_EFFECT);
1189
 
1190
 #endif /* f_Yarrow_force_reseed_defined */
1191
 
1192
 #ifdef f_Yarrow_update_defined
1193
   f_Yarrow_update_fun_num =
1194
-#line 156 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1195
+#line 181 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1196
     ADD_FUNCTION2("update", f_Yarrow_update, tFunc(tString "\10\200\0\0\0\177\377\377\377" "\10\200\0\0\0\177\377\377\377","\10\0\0\0\0\0\0\0\1"), 0, OPT_SIDE_EFFECT);
1197
 
1198
 #endif /* f_Yarrow_update_defined */
1199
 
1200
 #ifdef f_Yarrow_needed_sources_defined
1201
   f_Yarrow_needed_sources_fun_num =
1202
-#line 177 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1203
+#line 206 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1204
     ADD_FUNCTION2("needed_sources", f_Yarrow_needed_sources, tFunc(tNone,"\10\0\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND);
1205
 
1206
 #endif /* f_Yarrow_needed_sources_defined */
1207
 
1208
 #ifdef f_Yarrow_random_string_defined
1209
   f_Yarrow_random_string_fun_num =
1210
-#line 186 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1211
+#line 215 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1212
     ADD_FUNCTION2("random_string", f_Yarrow_random_string, tFunc("\10\200\0\0\0\177\377\377\377",tString), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1213
 
1214
 #endif /* f_Yarrow_random_string_defined */
1215
-#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1216
+#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1217
   Yarrow_program=end_program();
1218
-#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1219
+#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1220
   Yarrow_program_fun_num=add_program_constant("Yarrow",Yarrow_program,0);
1221
 
1222
 #endif /* class_Yarrow_defined */
1223
@@ -1615,10 +1656,10 @@
1224
 #ifdef class_CBC_defined
1225
 
1226
 #ifdef PROG_CBC_ID
1227
-#line 313 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1228
+#line 342 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1229
   START_NEW_PROGRAM_ID(CBC);
1230
 #else
1231
-#line 313 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1232
+#line 342 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1233
   start_new_program();
1234
 
1235
 #endif /* PROG_CBC_ID */
1236
@@ -1646,62 +1687,62 @@
1237
 
1238
 #ifdef f_CBC_create_defined
1239
   f_CBC_create_fun_num =
1240
-#line 395 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1241
+#line 424 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1242
     ADD_FUNCTION2("create", f_CBC_create, tFuncV(tOr3(tPrg(tObj),tObj,tFuncV(tNone,tMix,tAny)),tMix,tVoid), ID_PROTECTED, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1243
 
1244
 #endif /* f_CBC_create_defined */
1245
 
1246
 #ifdef f_CBC_name_defined
1247
   f_CBC_name_fun_num =
1248
-#line 426 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1249
+#line 455 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1250
     ADD_FUNCTION2("name", f_CBC_name, tFunc(tNone,tString), 0, OPT_TRY_OPTIMIZE);
1251
 
1252
 #endif /* f_CBC_name_defined */
1253
 
1254
 #ifdef f_CBC_block_size_defined
1255
   f_CBC_block_size_fun_num =
1256
-#line 438 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1257
+#line 467 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1258
     ADD_FUNCTION2("block_size", f_CBC_block_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_TRY_OPTIMIZE);
1259
 
1260
 #endif /* f_CBC_block_size_defined */
1261
 
1262
 #ifdef f_CBC_key_size_defined
1263
   f_CBC_key_size_fun_num =
1264
-#line 447 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1265
+#line 476 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1266
     ADD_FUNCTION2("key_size", f_CBC_key_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND);
1267
 
1268
 #endif /* f_CBC_key_size_defined */
1269
 
1270
 #ifdef f_CBC_set_encrypt_key_defined
1271
   f_CBC_set_encrypt_key_fun_num =
1272
-#line 457 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1273
+#line 486 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1274
     ADD_FUNCTION2("set_encrypt_key", f_CBC_set_encrypt_key, tFunc(tString,tObj), 0, OPT_SIDE_EFFECT);
1275
 
1276
 #endif /* f_CBC_set_encrypt_key_defined */
1277
 
1278
 #ifdef f_CBC_set_decrypt_key_defined
1279
   f_CBC_set_decrypt_key_fun_num =
1280
-#line 471 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1281
+#line 500 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1282
     ADD_FUNCTION2("set_decrypt_key", f_CBC_set_decrypt_key, tFunc(tString,tObj), 0, OPT_SIDE_EFFECT);
1283
 
1284
 #endif /* f_CBC_set_decrypt_key_defined */
1285
 
1286
 #ifdef f_CBC_set_iv_defined
1287
   f_CBC_set_iv_fun_num =
1288
-#line 484 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1289
+#line 513 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1290
     ADD_FUNCTION2("set_iv", f_CBC_set_iv, tFunc(tString,tObj), 0, OPT_SIDE_EFFECT);
1291
 
1292
 #endif /* f_CBC_set_iv_defined */
1293
 
1294
 #ifdef f_CBC_crypt_defined
1295
   f_CBC_crypt_fun_num =
1296
-#line 499 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1297
+#line 528 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1298
     ADD_FUNCTION2("crypt", f_CBC_crypt, tFunc(tString,tString), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1299
 
1300
 #endif /* f_CBC_crypt_defined */
1301
-#line 313 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1302
+#line 342 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1303
   CBC_program=end_program();
1304
-#line 313 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1305
+#line 342 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1306
   CBC_program_fun_num=add_program_constant("CBC",CBC_program,0);
1307
 
1308
 #endif /* class_CBC_defined */
1309
@@ -1709,10 +1750,10 @@
1310
 #ifdef class_Proxy_defined
1311
 
1312
 #ifdef PROG_PROXY_ID
1313
-#line 539 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1314
+#line 568 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1315
   START_NEW_PROGRAM_ID(PROXY);
1316
 #else
1317
-#line 539 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1318
+#line 568 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1319
   start_new_program();
1320
 
1321
 #endif /* PROG_PROXY_ID */
1322
@@ -1740,69 +1781,69 @@
1323
 
1324
 #ifdef f_Proxy_create_defined
1325
   f_Proxy_create_fun_num =
1326
-#line 571 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1327
+#line 600 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1328
     ADD_FUNCTION2("create", f_Proxy_create, tFuncV(tOr3(tPrg(tObj),tObj,tFuncV(tNone,tMix,tAny)),tMix,tVoid), ID_PROTECTED, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1329
 
1330
 #endif /* f_Proxy_create_defined */
1331
 
1332
 #ifdef f_Proxy_name_defined
1333
   f_Proxy_name_fun_num =
1334
-#line 596 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1335
+#line 625 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1336
     ADD_FUNCTION2("name", f_Proxy_name, tFunc(tNone,tString), 0, OPT_TRY_OPTIMIZE);
1337
 
1338
 #endif /* f_Proxy_name_defined */
1339
 
1340
 #ifdef f_Proxy_block_size_defined
1341
   f_Proxy_block_size_fun_num =
1342
-#line 609 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1343
+#line 638 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1344
     ADD_FUNCTION2("block_size", f_Proxy_block_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_TRY_OPTIMIZE);
1345
 
1346
 #endif /* f_Proxy_block_size_defined */
1347
 
1348
 #ifdef f_Proxy_key_size_defined
1349
   f_Proxy_key_size_fun_num =
1350
-#line 619 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1351
+#line 648 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1352
     ADD_FUNCTION2("key_size", f_Proxy_key_size, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND);
1353
 
1354
 #endif /* f_Proxy_key_size_defined */
1355
 
1356
 #ifdef f_Proxy_set_encrypt_key_defined
1357
   f_Proxy_set_encrypt_key_fun_num =
1358
-#line 632 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1359
+#line 661 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1360
     ADD_FUNCTION2("set_encrypt_key", f_Proxy_set_encrypt_key, tFunc(tString,tObj), 0, OPT_SIDE_EFFECT);
1361
 
1362
 #endif /* f_Proxy_set_encrypt_key_defined */
1363
 
1364
 #ifdef f_Proxy_set_decrypt_key_defined
1365
   f_Proxy_set_decrypt_key_fun_num =
1366
-#line 649 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1367
+#line 678 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1368
     ADD_FUNCTION2("set_decrypt_key", f_Proxy_set_decrypt_key, tFunc(tString,tObj), 0, OPT_SIDE_EFFECT);
1369
 
1370
 #endif /* f_Proxy_set_decrypt_key_defined */
1371
 
1372
 #ifdef f_Proxy_crypt_defined
1373
   f_Proxy_crypt_fun_num =
1374
-#line 667 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1375
+#line 696 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1376
     ADD_FUNCTION2("crypt", f_Proxy_crypt, tFunc(tString,tString), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1377
 
1378
 #endif /* f_Proxy_crypt_defined */
1379
 
1380
 #ifdef f_Proxy_pad_defined
1381
   f_Proxy_pad_fun_num =
1382
-#line 745 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1383
+#line 774 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1384
     ADD_FUNCTION2("pad", f_Proxy_pad, tFunc(tNone,tString), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1385
 
1386
 #endif /* f_Proxy_pad_defined */
1387
 
1388
 #ifdef f_Proxy_unpad_defined
1389
   f_Proxy_unpad_fun_num =
1390
-#line 772 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1391
+#line 801 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1392
     ADD_FUNCTION2("unpad", f_Proxy_unpad, tFunc(tString,tString), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1393
 
1394
 #endif /* f_Proxy_unpad_defined */
1395
-#line 539 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1396
+#line 568 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1397
   Proxy_program=end_program();
1398
-#line 539 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1399
+#line 568 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1400
   Proxy_program_fun_num=add_program_constant("Proxy",Proxy_program,0);
1401
 
1402
 #endif /* class_Proxy_defined */
1403
@@ -1810,10 +1851,10 @@
1404
 #ifdef class_LFib_defined
1405
 
1406
 #ifdef PROG_LFIB_ID
1407
-#line 813 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1408
+#line 842 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1409
   START_NEW_PROGRAM_ID(LFIB);
1410
 #else
1411
-#line 813 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1412
+#line 842 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1413
   start_new_program();
1414
 
1415
 #endif /* PROG_LFIB_ID */
1416
@@ -1841,21 +1882,21 @@
1417
 
1418
 #ifdef f_LFib_create_defined
1419
   f_LFib_create_fun_num =
1420
-#line 830 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1421
+#line 859 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1422
     ADD_FUNCTION2("create", f_LFib_create, tFunc("\10\200\0\0\0\177\377\377\377",tVoid), ID_PROTECTED, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1423
 
1424
 #endif /* f_LFib_create_defined */
1425
 
1426
 #ifdef f_LFib_reseed_defined
1427
   f_LFib_reseed_fun_num =
1428
-#line 841 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1429
+#line 870 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1430
     ADD_FUNCTION2("reseed", f_LFib_reseed, tFunc("\10\200\0\0\0\177\377\377\377",tObj), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1431
 
1432
 #endif /* f_LFib_reseed_defined */
1433
 
1434
 #ifdef f_LFib_get_defined
1435
   f_LFib_get_fun_num =
1436
-#line 848 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1437
+#line 877 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1438
     ADD_FUNCTION2("get", f_LFib_get, tFunc(tNone,"\10\200\0\0\0\177\377\377\377"), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1439
 
1440
 #endif /* f_LFib_get_defined */
1441
@@ -1865,20 +1906,20 @@
1442
     ADD_FUNCTION2("get_string", f_LFib_get_string, tFunc("\10\200\0\0\0\177\377\377\377",tString), 0, OPT_EXTERNAL_DEPEND|OPT_SIDE_EFFECT);
1443
 
1444
 #endif /* f_LFib_get_string_defined */
1445
-#line 813 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1446
+#line 842 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1447
   LFib_program=end_program();
1448
-#line 813 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1449
+#line 842 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1450
   LFib_program_fun_num=add_program_constant("LFib",LFib_program,0);
1451
 
1452
 #endif /* class_LFib_defined */
1453
 
1454
 #ifdef f_crypt_md5_defined
1455
   f_crypt_md5_fun_num =
1456
-#line 222 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1457
+#line 251 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1458
     ADD_FUNCTION2("crypt_md5", f_crypt_md5, tFunc(tString tString,tString), 0, OPT_TRY_OPTIMIZE);
1459
 
1460
 #endif /* f_crypt_md5_defined */
1461
-#line 879 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1462
+#line 908 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1463
 ;
1464
 #ifdef HAVE_LIBNETTLE
1465
   hash_init();
1466
@@ -1906,7 +1947,7 @@
1467
 
1468
 #ifdef class_Yarrow_defined
1469
   if(Yarrow_program) {
1470
-#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1471
+#line 44 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1472
     free_program(Yarrow_program);
1473
     Yarrow_program=0;
1474
   }
1475
@@ -1915,7 +1956,7 @@
1476
 
1477
 #ifdef class_CBC_defined
1478
   if(CBC_program) {
1479
-#line 313 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1480
+#line 342 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1481
     free_program(CBC_program);
1482
     CBC_program=0;
1483
   }
1484
@@ -1924,7 +1965,7 @@
1485
 
1486
 #ifdef class_Proxy_defined
1487
   if(Proxy_program) {
1488
-#line 539 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1489
+#line 568 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1490
     free_program(Proxy_program);
1491
     Proxy_program=0;
1492
   }
1493
@@ -1933,13 +1974,13 @@
1494
 
1495
 #ifdef class_LFib_defined
1496
   if(LFib_program) {
1497
-#line 813 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1498
+#line 842 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1499
     free_program(LFib_program);
1500
     LFib_program=0;
1501
   }
1502
 
1503
 #endif /* class_LFib_defined */
1504
-#line 903 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1505
+#line 932 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/nettle.cmod"
1506
 ;
1507
 }
1508
 
1509
--- Pike-v7.8.316/src/post_modules/Nettle/cipher.c	2009-05-17 00:54:16.000000000 +0200
1510
+++ pike7.8-7.8.316/src/post_modules/Nettle/cipher.c	2009-08-22 23:51:41.000000000 +0200
1511
@@ -91,8 +91,8 @@
1512
   pike_nettle_set_key_func set_encrypt_key;
1513
   pike_nettle_set_key_func set_decrypt_key;
1514
 
1515
-  nettle_crypt_func encrypt;
1516
-  nettle_crypt_func decrypt;
1517
+  nettle_crypt_func *encrypt;
1518
+  nettle_crypt_func *decrypt;
1519
 };
1520
 
1521
 #define _PIKE_CIPHER(name, NAME) {		\
1522
@@ -102,8 +102,8 @@
1523
   NAME##_KEY_SIZE,				\
1524
   pike_##name##_set_encrypt_key,		\
1525
   pike_##name##_set_decrypt_key,		\
1526
-  (nettle_crypt_func) name##_encrypt,		\
1527
-  (nettle_crypt_func) name##_decrypt,		\
1528
+  (nettle_crypt_func*) name##_encrypt,			\
1529
+  (nettle_crypt_func*) name##_decrypt,			\
1530
 }
1531
 
1532
 /*! @class CipherInfo
1533
@@ -281,7 +281,7 @@
1534
 
1535
 #ifdef var_crypt_CipherState_defined
1536
 #line 178 "/home/peter/hack/Pike/7.8-distmaker/7.8/src/post_modules/Nettle/cipher.cmod"
1537
-nettle_crypt_func crypt;
1538
+nettle_crypt_func *crypt;
1539
 #endif /* var_crypt_CipherState_defined */
1540
 
1541
 #ifdef var_ctx_CipherState_defined