~zulcss/samba/server-dailies-3.4

« back to all changes in this revision

Viewing changes to source4/heimdal/lib/hcrypto/rnd_keys.c

  • Committer: Chuck Short
  • Date: 2010-09-28 20:38:39 UTC
  • Revision ID: zulcss@ubuntu.com-20100928203839-pgjulytsi9ue63x1
Initial version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 1995, 1996, 1997, 1999 Kungliga Tekniska Högskolan
 
3
 * (Royal Institute of Technology, Stockholm, Sweden).
 
4
 * All rights reserved.
 
5
 *
 
6
 * Redistribution and use in source and binary forms, with or without
 
7
 * modification, are permitted provided that the following conditions
 
8
 * are met:
 
9
 *
 
10
 * 1. Redistributions of source code must retain the above copyright
 
11
 *    notice, this list of conditions and the following disclaimer.
 
12
 *
 
13
 * 2. Redistributions in binary form must reproduce the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer in the
 
15
 *    documentation and/or other materials provided with the distribution.
 
16
 *
 
17
 * 3. Neither the name of the Institute nor the names of its contributors
 
18
 *    may be used to endorse or promote products derived from this software
 
19
 *    without specific prior written permission.
 
20
 *
 
21
 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
 
22
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
23
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
24
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
 
25
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
26
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
27
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
28
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
29
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
30
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
31
 * SUCH DAMAGE.
 
32
 */
 
33
 
 
34
#ifdef HAVE_CONFIG_H
 
35
#include "config.h"
 
36
 
 
37
RCSID("$Id$");
 
38
#endif
 
39
 
 
40
#define HC_DEPRECATED
 
41
 
 
42
#ifdef KRB5
 
43
#include <krb5-types.h>
 
44
#endif
 
45
#include <des.h>
 
46
#include <rand.h>
 
47
 
 
48
#include <stdlib.h>
 
49
 
 
50
#undef __attribute__
 
51
#define __attribute__(X)
 
52
 
 
53
void HC_DEPRECATED
 
54
DES_rand_data(void *outdata, int size)
 
55
{
 
56
    RAND_bytes(outdata, size);
 
57
}
 
58
 
 
59
void HC_DEPRECATED
 
60
DES_generate_random_block(DES_cblock *block)
 
61
{
 
62
    RAND_bytes(block, sizeof(*block));
 
63
}
 
64
 
 
65
#define DES_rand_data_key hc_DES_rand_data_key
 
66
 
 
67
void HC_DEPRECATED
 
68
DES_rand_data_key(DES_cblock *key);
 
69
 
 
70
/*
 
71
 * Generate a random DES key.
 
72
 */
 
73
 
 
74
void HC_DEPRECATED
 
75
DES_rand_data_key(DES_cblock *key)
 
76
{
 
77
    DES_new_random_key(key);
 
78
}
 
79
 
 
80
void HC_DEPRECATED
 
81
DES_set_sequence_number(void *ll)
 
82
{
 
83
}
 
84
 
 
85
void HC_DEPRECATED
 
86
DES_set_random_generator_seed(DES_cblock *seed)
 
87
{
 
88
    RAND_seed(seed, sizeof(*seed));
 
89
}
 
90
 
 
91
/**
 
92
 * Generate a random des key using a random block, fixup parity and
 
93
 * skip weak keys.
 
94
 *
 
95
 * @param key is set to a random key.
 
96
 *
 
97
 * @return 0 on success, non zero on random number generator failure.
 
98
 *
 
99
 * @ingroup hcrypto_des
 
100
 */
 
101
 
 
102
int HC_DEPRECATED
 
103
DES_new_random_key(DES_cblock *key)
 
104
{
 
105
    do {
 
106
        if (RAND_bytes(key, sizeof(*key)) != 1)
 
107
            return 1;
 
108
        DES_set_odd_parity(key);
 
109
    } while(DES_is_weak_key(key));
 
110
 
 
111
    return(0);
 
112
}
 
113
 
 
114
/**
 
115
 * Seed the random number generator. Deprecated, use @ref page_rand
 
116
 *
 
117
 * @param seed a seed to seed that random number generate with.
 
118
 *
 
119
 * @ingroup hcrypto_des
 
120
 */
 
121
 
 
122
void HC_DEPRECATED
 
123
DES_init_random_number_generator(DES_cblock *seed)
 
124
{
 
125
    RAND_seed(seed, sizeof(*seed));
 
126
}
 
127
 
 
128
/**
 
129
 * Generate a random key, deprecated since it doesn't return an error
 
130
 * code, use DES_new_random_key().
 
131
 *
 
132
 * @param key is set to a random key.
 
133
 *
 
134
 * @ingroup hcrypto_des
 
135
 */
 
136
 
 
137
void HC_DEPRECATED
 
138
DES_random_key(DES_cblock *key)
 
139
{
 
140
    if (DES_new_random_key(key))
 
141
        abort();
 
142
}