dst_test.c revision a9bc95f22ef2dd4a12e79be99412c9f18b814a5d
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson/*
431a83fb29482c5170b3e4026e59bb14849a6707Tinderbox User * Copyright (C) 1999, 2000 Internet Software Consortium.
a7038d1a0513c8e804937ebc95fc9cb3a46c04f5Mark Andrews *
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence * Permission to use, copy, modify, and distribute this software for any
ec5347e2c775f027573ce5648b910361aa926c01Automatic Updater * purpose with or without fee is hereby granted, provided that the above
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson * copyright notice and this permission notice appear in all copies.
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson *
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews * SOFTWARE.
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson */
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson
28a8f5b0de57d269cf2845c69cb6abe18cbd3b3aMark Andrews#include <config.h>
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein#include <stdlib.h>
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson#include <unistd.h> /* XXX */
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson#include <isc/buffer.h>
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson#include <isc/mem.h>
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson#include <isc/region.h>
9cd6d409b78a6f833b681c13a68fbdc7c024fe66David Lawrence#include <isc/string.h> /* Required for HP/UX (and others?) */
22fa4e3206c2048cabaf75a3ae21132fd5542848Mark Andrews
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson#include <dns/fixedname.h>
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson#include <dns/name.h>
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson#include <dns/result.h>
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence
364a82f7c25b62967678027043425201a5e5171aBob Halley#include <dst/dst.h>
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson#include <dst/result.h>
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafssonchar *current, *tmp = "/tmp";
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafssonstatic void
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafssonuse(dst_key_t *key) {
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson isc_result_t ret;
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson char *data = "This is some data";
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews unsigned char sig[512];
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews isc_buffer_t databuf, sigbuf;
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews isc_region_t datareg, sigreg;
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson isc_buffer_init(&sigbuf, sig, sizeof(sig));
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson /* Advance 1 byte for fun */
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson isc_buffer_add(&sigbuf, 1);
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson isc_buffer_init(&databuf, data, strlen(data));
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews isc_buffer_add(&databuf, strlen(data));
ec3f1d35170225c74d11c27bb184e250d150b209Tatuya JINMEI 神明達哉 isc_buffer_usedregion(&databuf, &datareg);
ec3f1d35170225c74d11c27bb184e250d150b209Tatuya JINMEI 神明達哉
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson ret = dst_key_sign(DST_SIGMODE_ALL, key, NULL, &datareg, &sigbuf);
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson printf("sign(%d) returned: %s\n", dst_key_alg(key),
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews isc_result_totext(ret));
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews isc_buffer_forward(&sigbuf, 1);
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews isc_buffer_remainingregion(&sigbuf, &sigreg);
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews ret = dst_key_verify(DST_SIGMODE_ALL, key, NULL, &datareg, &sigreg);
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews printf("verify(%d) returned: %s\n", dst_key_alg(key),
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson isc_result_totext(ret));
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson}
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafssonstatic void
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafssondns(dst_key_t *key, isc_mem_t *mctx) {
b356893425f18a2399771faa875e91318f204fb5Andreas Gustafsson unsigned char buffer1[2048];
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson unsigned char buffer2[2048];
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_buffer_t buf1, buf2;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_region_t r1, r2;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson dst_key_t *newkey = NULL;
0874abad14e3e9ecfc3dc1a1a2b9969f2f027724Mark Andrews isc_result_t ret;
0874abad14e3e9ecfc3dc1a1a2b9969f2f027724Mark Andrews isc_boolean_t match;
0874abad14e3e9ecfc3dc1a1a2b9969f2f027724Mark Andrews
0874abad14e3e9ecfc3dc1a1a2b9969f2f027724Mark Andrews isc_buffer_init(&buf1, buffer1, sizeof(buffer1));
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence ret = dst_key_todns(key, &buf1);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson printf("todns(%d) returned: %s\n", dst_key_alg(key),
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_result_totext(ret));
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson if (ret != ISC_R_SUCCESS)
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson return;
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence ret = dst_key_fromdns(dst_key_name(key), &buf1, mctx, &newkey);
c53a5699c8242636fd913a4d07b4447efebe3bbfMark Andrews printf("fromdns(%d) returned: %s\n", dst_key_alg(key),
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews isc_result_totext(ret));
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews if (ret != ISC_R_SUCCESS)
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson return;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_buffer_init(&buf2, buffer2, sizeof(buffer2));
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence ret = dst_key_todns(newkey, &buf2);
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence printf("todns2(%d) returned: %s\n", dst_key_alg(key),
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_result_totext(ret));
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson if (ret != ISC_R_SUCCESS)
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson return;
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence isc_buffer_usedregion(&buf1, &r1);
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence isc_buffer_usedregion(&buf2, &r2);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson match = ISC_TF(r1.length == r2.length &&
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson memcmp(r1.base, r2.base, r1.length) == 0);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson printf("compare(%d): %s\n", dst_key_alg(key),
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson match ? "true" : "false");
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson dst_key_free(&newkey);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson}
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrencestatic void
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrenceio(dns_name_t *name, int id, int alg, int type, isc_mem_t *mctx) {
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson dst_key_t *key = NULL;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_result_t ret;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson chdir(current);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson ret = dst_key_fromfile(name, id, alg, type, mctx, &key);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson printf("read(%d) returned: %s\n", alg, isc_result_totext(ret));
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson if (ret != 0)
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson return;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson chdir(tmp);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson ret = dst_key_tofile(key, type);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson printf("write(%d) returned: %s\n", alg, isc_result_totext(ret));
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson if (ret != 0)
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson return;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson use(key);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson dns(key, mctx);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson dst_key_free(&key);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson}
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafssonstatic void
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafssondh(dns_name_t *name1, int id1, dns_name_t *name2, int id2, isc_mem_t *mctx) {
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson dst_key_t *key1 = NULL, *key2 = NULL;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_result_t ret;
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_buffer_t b1, b2;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson isc_region_t r1, r2;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson unsigned char array1[1024], array2[1024];
91cd0f93ad34d23e8b09dca337120f64fbe8f0a1Andreas Gustafsson int alg = DST_ALG_DH;
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews int type = DST_TYPE_PUBLIC|DST_TYPE_PRIVATE;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews chdir(current);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson ret = dst_key_fromfile(name1, id1, alg, type, mctx, &key1);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("read(%d) returned: %s\n", alg, isc_result_totext(ret));
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson if (ret != 0)
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson return;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson ret = dst_key_fromfile(name2, id2, alg, type, mctx, &key2);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("read(%d) returned: %s\n", alg, isc_result_totext(ret));
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews if (ret != 0)
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews return;
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews chdir(tmp);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews ret = dst_key_tofile(key1, type);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("write(%d) returned: %s\n", alg, isc_result_totext(ret));
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews if (ret != 0)
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews return;
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews ret = dst_key_tofile(key2, type);
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews printf("write(%d) returned: %s\n", alg, isc_result_totext(ret));
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews if (ret != 0)
66a12302e12be6813c3e16e6c05e4a7871e78e6eMark Andrews return;
66a12302e12be6813c3e16e6c05e4a7871e78e6eMark Andrews
66a12302e12be6813c3e16e6c05e4a7871e78e6eMark Andrews isc_buffer_init(&b1, array1, sizeof(array1));
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews ret = dst_key_computesecret(key1, key2, &b1);
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews printf("computesecret() returned: %s\n", isc_result_totext(ret));
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews if (ret != 0)
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews return;
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews isc_buffer_init(&b2, array2, sizeof(array2));
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson ret = dst_key_computesecret(key2, key1, &b2);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson printf("computesecret() returned: %s\n", isc_result_totext(ret));
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson if (ret != 0)
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson return;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson isc_buffer_usedregion(&b1, &r1);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews isc_buffer_usedregion(&b2, &r2);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews if (r1.length != r2.length || memcmp(r1.base, r2.base, r1.length) != 0)
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews {
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews int i;
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("secrets don't match\n");
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("secret 1: %d bytes\n", r1.length);
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews for (i = 0; i < (int) r1.length; i++)
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("%02x ", r1.base[i]);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson printf("\n");
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence printf("secret 2: %d bytes\n", r2.length);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson for (i = 0; i < (int) r2.length; i++)
6526fd032fc418411da3af4201214e95c113d3e2Mark Andrews printf("%02x ", r2.base[i]);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson printf("\n");
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson }
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson dst_key_free(&key1);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson dst_key_free(&key2);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson}
28e509b145c3d241d1d2d9102fea38afad95bbd4Andreas Gustafsson
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafssonstatic void
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafssongenerate(int alg, isc_mem_t *mctx) {
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson isc_result_t ret;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson dst_key_t *key = NULL;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson ret = dst_key_generate(dns_rootname, alg, 512, 0, 0, 0, mctx, &key);
4c577cbd1efc14156751e5b2ced7a866871a2f1aMark Andrews printf("generate(%d) returned: %s\n", alg, isc_result_totext(ret));
4c577cbd1efc14156751e5b2ced7a866871a2f1aMark Andrews
4c577cbd1efc14156751e5b2ced7a866871a2f1aMark Andrews if (alg != DST_ALG_DH)
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson use(key);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson dst_key_free(&key);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson}
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafssonstatic void
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafssonget_random(void) {
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson unsigned char data[25];
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson isc_buffer_t databuf;
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence isc_result_t ret;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson unsigned int i;
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
9cd6d409b78a6f833b681c13a68fbdc7c024fe66David Lawrence isc_buffer_init(&databuf, data, sizeof(data));
9cd6d409b78a6f833b681c13a68fbdc7c024fe66David Lawrence ret = dst_random_get(sizeof(data), &databuf);
9cd6d409b78a6f833b681c13a68fbdc7c024fe66David Lawrence printf("random() returned: %s\n", isc_result_totext(ret));
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson for (i = 0; i < sizeof data; i++)
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson printf("%02x ", data[i]);
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson printf("\n");
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson}
8eaa51a6991ea6bc6c9db0b907beacde8dd1fed2Andreas Gustafsson
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrewsint
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrewsmain(void) {
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews isc_mem_t *mctx = NULL;
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews isc_buffer_t b;
0874abad14e3e9ecfc3dc1a1a2b9969f2f027724Mark Andrews dns_fixedname_t fname;
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews dns_name_t *name;
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews isc_mem_create(0, 0, &mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews current = isc_mem_get(mctx, 256);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews getcwd(current, 256);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews dns_result_register();
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews dst_result_register();
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews dns_fixedname_init(&fname);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews name = dns_fixedname_name(&fname);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews isc_buffer_init(&b, "test.", 5);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews io(name, 6204, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews io(name, 54622, DST_ALG_RSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews io(name, 0, DST_ALG_DSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews io(name, 0, DST_ALG_RSA, DST_TYPE_PRIVATE|DST_TYPE_PUBLIC, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews isc_buffer_init(&b, "dh.", 3);
bfbd478cdbd57c1e03c49932cad15b7d6344d709Mark Andrews dns_name_fromtext(name, &b, NULL, ISC_FALSE, NULL);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews dh(name, 18088, name, 48443, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews generate(DST_ALG_RSA, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews generate(DST_ALG_DH, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews generate(DST_ALG_DSA, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews generate(DST_ALG_HMACMD5, mctx);
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews get_random();
4844ed026a9b5a91044e76399cee80a6514cbf0dMark Andrews
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson isc_mem_put(mctx, current, 256);
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence/* isc_mem_stats(mctx, stdout);*/
0874abad14e3e9ecfc3dc1a1a2b9969f2f027724Mark Andrews isc_mem_destroy(&mctx);
87cafc5e70f79f2586d067fbdd64f61bbab069d2David Lawrence
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence return (0);
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson}
5d82424f5d3c77c092c111b935041fd3dc4b3e98Andreas Gustafsson